diff --git a/src/possum.gleam b/src/possum.gleam --- a/src/possum.gleam +++ b/src/possum.gleam @@ -97,11 +97,16 @@ /// /// Documentation: [DID PLC Directory](https://web.plc.directory/) pub fn get_plc_data(did: did.Did) -> request.Request(String) { - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host("plc.directory") - |> request.set_method(http.Get) - |> request.set_path(did.to_string(did) <> "/data") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host: "plc.directory", + port: option.None, + path: did.to_string(did) <> "/data", + query: option.None, + ) } /// Resolves a handle to a DID using a HTTPS `/.well-known/` URL path, @@ -123,10 +128,16 @@ /// /// Documentation: [HTTPS well-known Method](https://atproto.com/specs/handle#https-well-known-method) pub fn resolve_well_known_did(host host: String) -> request.Request(String) { - request.new() - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(".well-known/atproto-did") + request.Request( + method: http.Get, + headers: [], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: ".well-known/atproto-did", + query: option.None, + ) } /// Resolves an atproto handle (hostname) to a DID. @@ -159,11 +170,16 @@ handle: handle.Handle, pds host: String, ) -> request.Request(String) { - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_identity <> ".resolveHandle") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_identity <> ".resolveHandle", + query: option.None, + ) |> request.set_query([#("handle", handle.to_string(handle))]) } @@ -237,13 +253,19 @@ option.None -> values } - request.new() - |> request.prepend_header("accept", "application/json") - |> request.prepend_header("content-type", "application/json") - |> request.set_body(json.to_string(json.object(values))) - |> request.set_host(host) - |> request.set_method(http.Post) - |> request.set_path(com_atproto_server <> ".createSession") + request.Request( + method: http.Post, + headers: [ + #("accept", "application/json"), + #("content-type", "application/json"), + ], + body: json.to_string(json.object(values)), + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_server <> ".createSession", + query: option.None, + ) } /// Refresh an authentication session. @@ -277,15 +299,20 @@ /// /// Endpoint Docs: [/xrpc/com.atproto.server.refreshSession](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver/POST/xrpc/com.atproto.server.refreshSession) pub fn refresh_session( - refresh_token token: String, + token: String, pds host: String, ) -> request.Request(String) { - request.new() + request.Request( + method: http.Post, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_server <> ".refreshSession", + query: option.None, + ) |> authorized(token) - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Post) - |> request.set_path(com_atproto_server <> ".refreshSession") } /// Get information about the current auth session. @@ -319,11 +346,16 @@ /// /// Endpoint Docs: [/xrpc/com.atproto.server.getSession](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver/POST/xrpc/com.atproto.server.getSession) pub fn get_session_info(pds host: String) -> request.Request(String) { - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_server <> ".getSession") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_server <> ".getSession", + query: option.None, + ) } /// Include a access token in the request's headers. @@ -337,7 +369,9 @@ /// /// let request = /// request.new() -/// |> possum.authorized(access_token:"access-token") +/// |> possum.authorized(access_token: "access-token") +/// +/// assert request.headers != [] /// ``` /// pub fn authorized( @@ -380,11 +414,16 @@ did: did.Did, pds host: String, ) -> request.Request(String) { - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_repo <> ".describeRepo") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".describeRepo", + query: option.None, + ) |> request.set_query([#("repo", did.to_string(did))]) } @@ -470,13 +509,19 @@ option.None -> body } - request.new() - |> request.prepend_header("accept", "application/json") - |> request.prepend_header("content-type", "application/json") - |> request.set_body(json.to_string(json.object(body))) - |> request.set_host(host) - |> request.set_method(http.Post) - |> request.set_path(com_atproto_repo <> ".createRecord") + request.Request( + method: http.Post, + headers: [ + #("accept", "application/json"), + #("content-type", "application/json"), + ], + body: json.to_string(json.object(body)), + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".createRecord", + query: option.None, + ) } /// Get a single record from a repository. Does not require auth. @@ -534,11 +579,16 @@ option.None -> query } - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_repo <> ".getRecord") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".getRecord", + query: option.None, + ) |> request.set_query(query) } @@ -610,11 +660,16 @@ option.None -> query } - request.new() - |> request.prepend_header("accept", "application/json") - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_repo <> ".listRecords") + request.Request( + method: http.Get, + headers: [#("accept", "application/json")], + body: "", + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".listRecords", + query: option.None, + ) |> request.set_query(query) } @@ -686,13 +741,19 @@ option.None -> body } - request.new() - |> request.prepend_header("accept", "application/json") - |> request.prepend_header("content-type", "application/json") - |> request.set_body(json.to_string(json.object(body))) - |> request.set_host(host) - |> request.set_method(http.Post) - |> request.set_path(com_atproto_repo <> ".deleteRecord") + request.Request( + method: http.Post, + headers: [ + #("accept", "application/json"), + #("content-type", "application/json"), + ], + body: json.to_string(json.object(body)), + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".deleteRecord", + query: option.None, + ) } /// Write a repository record, creating or updating it as needed. @@ -750,7 +811,6 @@ /// /// Endpoint Docs: [/xrpc/com.atproto.repo.putRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/POST/xrpc/com.atproto.repo.putRecord) pub fn put_record( - request: request.Request(String), did: did.Did, pds host: String, collection nsid: nsid.Nsid, @@ -782,13 +842,19 @@ option.None -> body } - request - |> request.prepend_header("accept", "application/json") - |> request.prepend_header("content-type", "application/json") - |> request.set_body(json.to_string(json.object(body))) - |> request.set_host(host) - |> request.set_method(http.Post) - |> request.set_path(com_atproto_repo <> ".putRecord") + request.Request( + method: http.Post, + headers: [ + #("accept", "application/json"), + #("content-type", "application/json"), + ], + body: json.to_string(json.object(body)), + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_repo <> ".putRecord", + query: option.None, + ) } /// Get a blob associated with a given account. @@ -803,11 +869,15 @@ ) -> request.Request(BitArray) { let query = [#("did", did.to_string(did)), #("cid", cid)] - request.new() - |> request.prepend_header("accept", "*/*") - |> request.set_body(<<>>) - |> request.set_host(host) - |> request.set_method(http.Get) - |> request.set_path(com_atproto_sync <> ".getBlob") + request.Request( + method: http.Get, + headers: [#("accept", "*/*")], + body: <<>>, + scheme: http.Https, + host:, + port: option.None, + path: com_atproto_sync <> ".getBlob", + query: option.None, + ) |> request.set_query(query) }