From cf2d61a07849b73566fba0ef95dbd3023d173133 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Wed, 1 Mar 2023 20:05:36 +0200 Subject: [PATCH] Update for Gleam 0.27 --- .tool-versions | 2 +- CHANGELOG.txt | 9 +++++++++ gleam.toml | 8 ++++---- manifest.toml | 16 ++++++++-------- src/finch.gleam | 4 +++- test/finch_gleam_test.gleam | 26 +++++++++++++------------- 6 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 CHANGELOG.txt diff --git a/.tool-versions b/.tool-versions index c5b25e1..6868ad7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,3 @@ -gleam 0.26.2 +gleam 0.27.0 erlang 25.2.2 elixir 1.14.3-otp-25 diff --git a/CHANGELOG.txt b/CHANGELOG.txt new file mode 100644 index 0000000..cc0c04b --- /dev/null +++ b/CHANGELOG.txt @@ -0,0 +1,9 @@ +2.0.0 +----- + +* Updated for Gleam 0.27. + +1.0.0 +----- + +Initial version. diff --git a/gleam.toml b/gleam.toml index 0744553..322c476 100644 --- a/gleam.toml +++ b/gleam.toml @@ -1,5 +1,5 @@ name = "finch_gleam" -version = "1.0.0" +version = "2.0.0" target = "erlang" # Fill out these fields if you intend to generate HTML documentation or publish @@ -11,11 +11,11 @@ repository = { type = "gitlab", user = "Nicd", repo = "finch_gleam" } links = [] [dependencies] -gleam_stdlib = "~> 0.26" -gleam_erlang = "~> 0.17" +gleam_stdlib = "~> 0.27.0" +gleam_erlang = "~> 0.18" gleam_http = "~> 3.1" finch = "~> 0.14" [dev-dependencies] -gleeunit = "~> 0.7" +gleeunit = "~> 0.10" mist = "~> 0.9" diff --git a/manifest.toml b/manifest.toml index e48fdf8..25ae84e 100644 --- a/manifest.toml +++ b/manifest.toml @@ -3,17 +3,17 @@ packages = [ { name = "castore", version = "0.1.22", build_tools = ["mix"], requirements = [], otp_app = "castore", source = "hex", outer_checksum = "C17576DF47EB5AA1EE40CC4134316A99F5CAD3E215D5C77B8DD3CFEF12A22CAC" }, - { name = "finch", version = "0.14.0", build_tools = ["mix"], requirements = ["mime", "mint", "castore", "nimble_options", "nimble_pool", "telemetry"], otp_app = "finch", source = "hex", outer_checksum = "5459ACAF18C4FDB47A8C22FB3BAFF5D8173106217C8E56C5BA0B93E66501A8DD" }, + { name = "finch", version = "0.14.0", build_tools = ["mix"], requirements = ["nimble_options", "nimble_pool", "mime", "telemetry", "castore", "mint"], otp_app = "finch", source = "hex", outer_checksum = "5459ACAF18C4FDB47A8C22FB3BAFF5D8173106217C8E56C5BA0B93E66501A8DD" }, { name = "gleam_erlang", version = "0.18.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "14ABC93A7975369CCDDC0C4D9A34C0E0FE99CA3AD336BE6A17299EC0285B7107" }, { name = "gleam_http", version = "3.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "B66B7A1539CCB577119E4DC80DD3484C1A652CB032967954498EEDBAE3355763" }, - { name = "gleam_otp", version = "0.5.2", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_erlang"], otp_app = "gleam_otp", source = "hex", outer_checksum = "24B88BF1D5B8DEC2525C00ECB65B96D2FD4DC66D8B2BB4D7AD4D12B2CE2A9988" }, - { name = "gleam_stdlib", version = "0.26.1", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "B17BBE8A78F3909D93BCC6C24F531673A7E328A61F24222EB1E58D0A7552B1FE" }, + { name = "gleam_otp", version = "0.5.2", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "24B88BF1D5B8DEC2525C00ECB65B96D2FD4DC66D8B2BB4D7AD4D12B2CE2A9988" }, + { name = "gleam_stdlib", version = "0.27.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "9DBDD21B48C654182CDD8AA15ACF85E8E74A0438583C68BD7EF08BE89F999C6F" }, { name = "gleeunit", version = "0.10.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "ECEA2DE4BE6528D36AFE74F42A21CDF99966EC36D7F25DEB34D47DD0F7977BAF" }, { name = "glisten", version = "0.6.9", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_erlang", "gleam_otp"], otp_app = "glisten", source = "hex", outer_checksum = "83CDA9C9FCD316ECF65DBEFAF5690999DDC0FE8CB31696711E7D60FD995E03B7" }, { name = "hpax", version = "0.1.2", build_tools = ["mix"], requirements = [], otp_app = "hpax", source = "hex", outer_checksum = "2C87843D5A23F5F16748EBE77969880E29809580EFDACCD615CD3BED628A8C13" }, { name = "mime", version = "2.0.3", build_tools = ["mix"], requirements = [], otp_app = "mime", source = "hex", outer_checksum = "27A30BF0DB44D25EECBA73755ACF4068CBFE26A4372F9EB3E4EA3A45956BFF6B" }, - { name = "mint", version = "1.4.2", build_tools = ["mix"], requirements = ["hpax", "castore"], otp_app = "mint", source = "hex", outer_checksum = "CE75A5BBCC59B4D7D8D70F8B2FC284B1751FFB35C7B6A6302B5192F8AB4DDD80" }, - { name = "mist", version = "0.9.4", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_otp", "gleam_http", "glisten", "gleam_erlang"], otp_app = "mist", source = "hex", outer_checksum = "D327F690A717F588281E636D99E014A90D8EBC2F2B479AA799A1D6AA3899A1B2" }, + { name = "mint", version = "1.5.0", build_tools = ["mix"], requirements = ["hpax", "castore"], otp_app = "mint", source = "hex", outer_checksum = "8A61C2D469C657F6CB76EA547D523C3A593D24901B1D97BF92BF4A83EAA2517B" }, + { name = "mist", version = "0.9.4", build_tools = ["gleam"], requirements = ["gleam_stdlib", "glisten", "gleam_erlang", "gleam_http", "gleam_otp"], otp_app = "mist", source = "hex", outer_checksum = "D327F690A717F588281E636D99E014A90D8EBC2F2B479AA799A1D6AA3899A1B2" }, { name = "nimble_options", version = "0.5.2", build_tools = ["mix"], requirements = [], otp_app = "nimble_options", source = "hex", outer_checksum = "4DA7F904B915FD71DB549BCDC25F8D56F378EF7AE07DC1D372CBE72BA950DCE0" }, { name = "nimble_pool", version = "0.2.6", build_tools = ["mix"], requirements = [], otp_app = "nimble_pool", source = "hex", outer_checksum = "1C715055095D3F2705C4E236C18B618420A35490DA94149FF8B580A2144F653F" }, { name = "telemetry", version = "1.2.1", build_tools = ["rebar3"], requirements = [], otp_app = "telemetry", source = "hex", outer_checksum = "DAD9CE9D8EFFC621708F99EAC538EF1CBE05D6A874DD741DE2E689C47FEAFED5" }, @@ -21,8 +21,8 @@ packages = [ [requirements] finch = "~> 0.14" -gleam_erlang = "~> 0.17" +gleam_erlang = "~> 0.18" gleam_http = "~> 3.1" -gleam_stdlib = "~> 0.26" -gleeunit = "~> 0.7" +gleam_stdlib = "~> 0.27.0" +gleeunit = "~> 0.10" mist = "~> 0.9" diff --git a/src/finch.gleam b/src/finch.gleam index 43646fa..c833686 100644 --- a/src/finch.gleam +++ b/src/finch.gleam @@ -3,6 +3,8 @@ //// See the [Finch documentation](https://hexdocs.pm/finch) for additional //// information about the functions. +import gleam/result + import gleam import gleam/uri import gleam/erlang/atom.{Atom} @@ -76,7 +78,7 @@ pub fn request( req: Request, name: Atom, ) -> Result(gleam_response.Response(String), Exception) { - try resp = do_request(req, name) + use resp <- result.then(do_request(req, name)) gleam.Ok(gleam_response.Response( body: response_body(resp), diff --git a/test/finch_gleam_test.gleam b/test/finch_gleam_test.gleam index 1e38c7c..f11d2cf 100644 --- a/test/finch_gleam_test.gleam +++ b/test/finch_gleam_test.gleam @@ -16,7 +16,7 @@ import finch/otp const base_url = "http://localhost:33100" pub fn main() { - assert Ok(_) = + let assert Ok(_) = mist.run_service( 33_100, fn(req) { @@ -48,10 +48,10 @@ pub fn main() { pub fn ok_req_test() { use <- with_finch() - assert Ok(url) = uri.parse(ok_url()) - assert Ok(req) = request.from_uri(url) + let assert Ok(url) = uri.parse(ok_url()) + let assert Ok(req) = request.from_uri(url) let finch_req = finch.build(req, []) - assert Ok(resp) = finch.request(finch_req, server_name()) + let assert Ok(resp) = finch.request(finch_req, server_name()) should.equal(resp.status, 200) should.equal(resp.body, "OK") @@ -62,11 +62,11 @@ pub fn post_data_test() { use <- with_finch() - assert Ok(url) = uri.parse(post_url()) - assert Ok(req) = request.from_uri(url) + let assert Ok(url) = uri.parse(post_url()) + let assert Ok(req) = request.from_uri(url) let req = request.Request(..req, method: http.Post, body: body) let finch_req = finch.build(req, []) - assert Ok(resp) = finch.request(finch_req, server_name()) + let assert Ok(resp) = finch.request(finch_req, server_name()) should.equal(resp.status, 500) should.equal(resp.body, body) @@ -75,8 +75,8 @@ pub fn post_data_test() { pub fn headers_test() { use <- with_finch() - assert Ok(url) = uri.parse(headers_url()) - assert Ok(req) = request.from_uri(url) + let assert Ok(url) = uri.parse(headers_url()) + let assert Ok(req) = request.from_uri(url) let req = request.Request( ..req, @@ -87,7 +87,7 @@ pub fn headers_test() { ], ) let finch_req = finch.build(req, []) - assert Ok(resp) = finch.request(finch_req, server_name()) + let assert Ok(resp) = finch.request(finch_req, server_name()) should.equal(resp.status, 200) should.be_true(string.contains( @@ -118,14 +118,14 @@ fn with_finch(test: fn() -> a) { process.start( fn() { - assert otp.Ok(child) = start_finch() + let assert otp.Ok(child) = start_finch() process.send(subject, child) process.sleep_forever() }, False, ) - assert Ok(finch_pid) = process.receive(subject, 1000) + let assert Ok(finch_pid) = process.receive(subject, 1000) let monitor = process.monitor_process(finch_pid) let selector = @@ -135,7 +135,7 @@ fn with_finch(test: fn() -> a) { test() process.kill(finch_pid) - assert Ok(_) = process.select(selector, 1000) + let assert Ok(_) = process.select(selector, 1000) // We need to wait for all the Finch processes to close, sadly didn't find a // better way to do this :/