diff options
author | Kai WU <kaiwu2004@gmail.com> | 2025-05-16 20:50:25 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2025-05-16 23:33:16 +0800 |
commit | 0a9ffacdd82d49ea541346130e1fe28ee7194bea (patch) | |
tree | 75326d3776752b9d3f06089e4977b9002a2f5ffd | |
parent | 876b3f41ffc0c11ba4af5a670b132de8034ecd11 (diff) | |
download | ngs-main.tar.gz ngs-main.zip |
-rw-r--r-- | gleam.toml | 6 | ||||
-rw-r--r-- | manifest.toml | 6 | ||||
-rw-r--r-- | src/app/misc.gleam | 4 | ||||
-rw-r--r-- | src/njs/http.gleam | 10 |
4 files changed, 12 insertions, 14 deletions
@@ -1,5 +1,5 @@ name = "ngs" -version = "1.0.1" +version = "1.0.2" target = "javascript" description = "Offload weight to nginx, implement HTTP server with gleam bindings to njs" @@ -9,7 +9,7 @@ description = "Offload weight to nginx, implement HTTP server with gleam binding licences = ["Apache-2.0"] repository = { type = "github", user = "kaiwu", repo = "ngs" } links = [{ title = "njs", href = "http://nginx.org/en/docs/njs/index.html" }] -gleam = ">= 0.32.0" +gleam = ">= 1.9.0" # # For a full reference of all the available options, you can have a look at # https://gleam.run/writing-gleam/gleam-toml/. @@ -17,7 +17,7 @@ gleam = ">= 0.32.0" [dependencies] gleam_stdlib = ">= 0.39.0 and < 1.0.0" gleam_javascript = ">= 0.11.0 and < 2.0.0" -gleam_json = ">= 2.0.0 and < 3.0.0" +gleam_json = ">= 3.0.0 and < 4.0.0" envoy = ">= 1.0.1 and < 2.0.0" [dev-dependencies] diff --git a/manifest.toml b/manifest.toml index 2060cb7..31f40cf 100644 --- a/manifest.toml +++ b/manifest.toml @@ -4,14 +4,14 @@ packages = [ { name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" }, { name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, - { name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" }, - { name = "gleam_stdlib", version = "0.59.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F8FEE9B35797301994B81AF75508CF87C328FE1585558B0FFD188DC2B32EAA95" }, + { name = "gleam_json", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "5BA154440B22D9800955B1AB854282FA37B97F30F409D76B0824D0A60C934188" }, + { name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" }, { name = "gleeunit", version = "1.3.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" }, ] [requirements] envoy = { version = ">= 1.0.1 and < 2.0.0" } gleam_javascript = { version = ">= 0.11.0 and < 2.0.0" } -gleam_json = { version = ">= 2.0.0 and < 3.0.0" } +gleam_json = { version = ">= 3.0.0 and < 4.0.0" } gleam_stdlib = { version = ">= 0.39.0 and < 1.0.0" } gleeunit = { version = ">= 1.0.0 and < 2.0.0" } diff --git a/src/app/misc.gleam b/src/app/misc.gleam index 57f3e9d..75353ac 100644 --- a/src/app/misc.gleam +++ b/src/app/misc.gleam @@ -2,7 +2,6 @@ //// https://github.com/nginx/njs-examples //// -import gleam/dynamic import gleam/dynamic/decode import gleam/javascript/array import gleam/javascript/promise.{type Promise} @@ -40,8 +39,7 @@ pub fn decode_uri(r: HTTPRequest) -> String { } r |> http.args - |> dynamic.from - |> decode.run(decoder) + |> json.parse(decoder) |> result.unwrap("") } diff --git a/src/njs/http.gleam b/src/njs/http.gleam index 6c7a3a1..1175f58 100644 --- a/src/njs/http.gleam +++ b/src/njs/http.gleam @@ -1,6 +1,6 @@ +import gleam/dict.{type Dict} 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 @@ -12,10 +12,10 @@ pub type HTTPResponse = HTTPRequest @external(javascript, "../http_ffi.mjs", "http_args") -pub fn args(request r: HTTPRequest) -> Json +pub fn args(request r: HTTPRequest) -> String @external(javascript, "../http_ffi.mjs", "http_get_variables") -pub fn get_variables(request r: HTTPRequest) -> Json +pub fn get_variables(request r: HTTPRequest) -> Dict(String, String) @external(javascript, "../http_ffi.mjs", "http_get_raw_variables") pub fn get_raw_variables(request r: HTTPRequest) -> Buffer @@ -37,13 +37,13 @@ pub fn error(request r: HTTPRequest, message m: String) -> HTTPRequest pub fn finish(request r: HTTPRequest) -> Nil @external(javascript, "../http_ffi.mjs", "http_headers_in") -pub fn headers_in(request r: HTTPRequest) -> Json +pub fn headers_in(request r: HTTPRequest) -> Dict(String, String) @external(javascript, "../http_ffi.mjs", "http_raw_headers_in") pub fn raw_headers_in(request r: HTTPRequest) -> Array(#(String, String)) @external(javascript, "../http_ffi.mjs", "http_get_headers_out") -pub fn get_headers_out(request r: HTTPRequest) -> Json +pub fn get_headers_out(request r: HTTPRequest) -> Dict(String, String) @external(javascript, "../http_ffi.mjs", "http_get_raw_headers_out") pub fn get_raw_headers_out(request r: HTTPRequest) -> Array(#(String, String)) |