///|
fn main {
  let secret = "demo-secret"
  let body = "{\"ref\":\"refs/heads/main\",\"repository\":{\"full_name\":\"zzy12346/12312\"}}"
  let signature = @moonhook.sign_github_body(secret, body)
  let raw_request = "POST /hooks/github HTTP/1.1\r\n" +
    "Host: localhost\r\n" +
    "Content-Type: application/json\r\n" +
    "X-GitHub-Event: push\r\n" +
    "X-GitHub-Delivery: demo-delivery\r\n" +
    "X-Hub-Signature-256: " +
    signature +
    "\r\n\r\n" +
    body
  let router = @moonhook.new_hook_router().on(
    @moonhook.GitHub,
    "push",
    name="github-push",
  )
  let endpoint = @moonhook.new_github_endpoint("/hooks/github", secret, router).use_middleware(
    "require-repository",
    @moonhook.require_attribute_middleware("repository"),
  )
  let (_, response) = endpoint.handle_raw(raw_request)
  println(response.render())
}