aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2024-07-30 23:24:58 +0800
committerkaiwu <kaiwu2004@gmail.com>2024-07-30 23:24:58 +0800
commitfd534b83e47bae26ccda44406f4116355b17bee7 (patch)
tree4e7a654f64195f7bdb22a899493c36547070b31d /src
parentaf55ed6982dda6fd0ad5217af6e6edaa7a3ca590 (diff)
downloadngs-fd534b83e47bae26ccda44406f4116355b17bee7.tar.gz
ngs-fd534b83e47bae26ccda44406f4116355b17bee7.zip
http bindings
Diffstat (limited to 'src')
-rw-r--r--src/njs/buffer.gleam1
-rw-r--r--src/njs/http.gleam128
2 files changed, 129 insertions, 0 deletions
diff --git a/src/njs/buffer.gleam b/src/njs/buffer.gleam
index e69de29..f0e7801 100644
--- a/src/njs/buffer.gleam
+++ b/src/njs/buffer.gleam
@@ -0,0 +1 @@
+pub type Buffer
diff --git a/src/njs/http.gleam b/src/njs/http.gleam
index e69de29..32cd37a 100644
--- a/src/njs/http.gleam
+++ b/src/njs/http.gleam
@@ -0,0 +1,128 @@
+import gleam/javascript/array.{type Array}
+import gleam/javascript/promise.{type Promise}
+import gleam/json.{type Json}
+import njs/buffer.{type Buffer}
+
+pub type HTTPRequest
+
+pub type HTTPResponse =
+ HTTPRequest
+
+@external(javascript, "./njs_ffi.mjs", "http_args")
+pub fn args(request r: HTTPRequest) -> Json
+
+@external(javascript, "./njs_ffi.mjs", "http_get_variables")
+pub fn get_variables(request r: HTTPRequest) -> Json
+
+@external(javascript, "./njs_ffi.mjs", "http_get_raw_variables")
+pub fn get_raw_variables(request r: HTTPRequest) -> Buffer
+
+@external(javascript, "./njs_ffi.mjs", "http_set_variables")
+pub fn set_variables(
+ request r: HTTPRequest,
+ key k: k,
+ value v: v,
+) -> HTTPRequest
+
+@external(javascript, "./njs_ffi.mjs", "http_done")
+pub fn done(request r: HTTPRequest) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_error")
+pub fn error(request r: HTTPRequest, message m: String) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_finish")
+pub fn finish(request r: HTTPRequest) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_headers_in")
+pub fn headers_in(request r: HTTPRequest) -> Json
+
+@external(javascript, "./njs_ffi.mjs", "http_raw_headers_in")
+pub fn raw_headers_in(request r: HTTPRequest) -> Array(#(String, String))
+
+@external(javascript, "./njs_ffi.mjs", "http_get_headers_out")
+pub fn get_headers_out(request r: HTTPRequest) -> Json
+
+@external(javascript, "./njs_ffi.mjs", "http_get_raw_headers_out")
+pub fn get_raw_headers_out(request r: HTTPRequest) -> Array(#(String, String))
+
+@external(javascript, "./njs_ffi.mjs", "http_set_headers_out")
+pub fn set_headers_out(
+ request r: HTTPRequest,
+ key k: k,
+ value v: v,
+) -> HTTPRequest
+
+@external(javascript, "./njs_ffi.mjs", "http_version")
+pub fn version(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_internal")
+pub fn is_internal(request r: HTTPRequest) -> Bool
+
+@external(javascript, "./njs_ffi.mjs", "http_internal_redirect")
+pub fn internal_redirect(request r: HTTPRequest, uri u: String) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_log")
+pub fn log(request r: HTTPRequest, message m: String) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_method")
+pub fn method(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_parent")
+pub fn parent(request r: HTTPRequest) -> HTTPRequest
+
+@external(javascript, "./njs_ffi.mjs", "http_remote_address")
+pub fn remote_address(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_request_buffer")
+pub fn request_buffer(request r: HTTPRequest) -> Buffer
+
+@external(javascript, "./njs_ffi.mjs", "http_request_text")
+pub fn request_text(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_response_buffer")
+pub fn response_buffer(request r: HTTPRequest) -> Buffer
+
+@external(javascript, "./njs_ffi.mjs", "http_response_text")
+pub fn response_text(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_return")
+pub fn return_text(request r: HTTPRequest, code c: Int, return t: String) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_return")
+pub fn return_buffer(
+ request r: HTTPRequest,
+ code c: Int,
+ return b: Buffer,
+) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_send_text")
+pub fn send_text(request r: HTTPRequest, data d: String) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_send_buffer")
+pub fn send_buffer(
+ request r: HTTPRequest,
+ buffer d: Buffer,
+ options o: o,
+) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_send_header")
+pub fn send_header(request r: HTTPRequest) -> Nil
+
+@external(javascript, "./njs_ffi.mjs", "http_status")
+pub fn status(request r: HTTPRequest) -> Int
+
+@external(javascript, "./njs_ffi.mjs", "http_set_status")
+pub fn set_status(request r: HTTPRequest, status s: Int) -> HTTPRequest
+
+@external(javascript, "./njs_ffi.mjs", "http_subrequest")
+pub fn subrequest(
+ request r: HTTPRequest,
+ uri u: String,
+ options o: o,
+) -> Promise(HTTPResponse)
+
+@external(javascript, "./njs_ffi.mjs", "http_uri")
+pub fn uri(request r: HTTPRequest) -> String
+
+@external(javascript, "./njs_ffi.mjs", "http_warn")
+pub fn warn(request r: HTTPRequest, message m: String) -> Nil