A DSL for writing healthchecks.
Read the blog post for uses cases and why this was created.
The best way to grok the language is to look at the examples below.
The general philosophy behind the language design are as follows:
- Tags before the uri are included as part of the request, and tags after the uri are expectations about the response
- "Meta" tags like HTTP verbs, HTTP headers, status codes, and timeouts are in square brackets
[]
- Body tags are in angle brackets
<>
- Urls with custom schemes should be used to denote the protocol in the url, similar to
postgres://
urls for example
-
Make an HTTP
GET
request tohttps://example.com
, and expect a200
status code -
Make an HTTP
POST
request tohttps://httpbin.org/post
with aUser-Agent: curl/7.72.0
header, and expect a200
status code and a response header ofserver: gunicorn/19.9.0
-
Make an HTTP
POST
request with some JSON, and expect a200
status code and the response body to be JSON matching the jq expression.json.a == 3
-
Make an HTTP
POST
request with body bytes encoded in base64 tohttps://httpbin.org/post
, and expect a200
status code
The parser will recover from errors as best as possible to help you write correct healthscript. Errors are available using the CLI.
Install the CLI with
cargo install healthscript-cli
Append healthscript at the end of https://healthscript.mbund.dev/
to have the hosted server run the healthcheck against your service and generate an svg badge. Then, you can use markdown syntax to include it in your own readmes.
![healthcheck for example.com](https://healthscript.mbund.dev/https://example.com)
You may need to url encode your spaces to %20
.
Integrate healthscript into your own rust project. To do so, add the following to your Cargo.toml
healthscript = "1.0"
Or use the cargo
CLI.
cargo add healthscript
-
Connect to
pwn.osucyber.club
on port13389
over TCP, and expect at least one byte to be returned -
Connect to
pwn.osucyber.club
on port13389
over TCP, and expect the response to contain the regex/e./
to be found anywhere within the response, timing out after 3 seconds -
Connect to
pwn.osucyber.club
on port13389
over TCP, and expect the response to start with the stringchee