-module(touch_grass@http). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/touch_grass/http.gleam"). -export([method/0, method_to_gleam/1, method_to_eyg/1, scheme/0, scheme_to_gleam/1, scheme_to_eyg/1, headers/0, headers_to_gleam/1, headers_to_eyg/1, request/0, request_to_gleam/1, request_to_eyg/1, response/0, response_to_gleam/1, response_to_eyg/1, operation/0, operation_to_gleam/1]). -file("src/touch_grass/http.gleam", 14). -spec method() -> eyg@analysis@type_@isomorphic:type(integer()). method() -> eyg@analysis@type_@isomorphic:union( [{<<"CONNECT"/utf8>>, {record, empty}}, {<<"DELETE"/utf8>>, {record, empty}}, {<<"GET"/utf8>>, {record, empty}}, {<<"HEAD"/utf8>>, {record, empty}}, {<<"OPTIONS"/utf8>>, {record, empty}}, {<<"PATCH"/utf8>>, {record, empty}}, {<<"POST"/utf8>>, {record, empty}}, {<<"PUT"/utf8>>, {record, empty}}, {<<"TRACE"/utf8>>, {record, empty}}] ). -file("src/touch_grass/http.gleam", 28). -spec method_to_gleam(eyg@interpreter@value:value(OKT, OKU)) -> {ok, gleam@http:method()} | {error, eyg@interpreter@break:reason(OKT, OKU)}. method_to_gleam(Value) -> eyg@interpreter@cast:as_varient( Value, [{<<"CONNECT"/utf8>>, fun(_capture) -> eyg@interpreter@cast:as_unit(_capture, connect) end}, {<<"DELETE"/utf8>>, fun(_capture@1) -> eyg@interpreter@cast:as_unit(_capture@1, delete) end}, {<<"GET"/utf8>>, fun(_capture@2) -> eyg@interpreter@cast:as_unit(_capture@2, get) end}, {<<"HEAD"/utf8>>, fun(_capture@3) -> eyg@interpreter@cast:as_unit(_capture@3, head) end}, {<<"OPTIONS"/utf8>>, fun(_capture@4) -> eyg@interpreter@cast:as_unit(_capture@4, options) end}, {<<"PATCH"/utf8>>, fun(_capture@5) -> eyg@interpreter@cast:as_unit(_capture@5, patch) end}, {<<"POST"/utf8>>, fun(_capture@6) -> eyg@interpreter@cast:as_unit(_capture@6, post) end}, {<<"PUT"/utf8>>, fun(_capture@7) -> eyg@interpreter@cast:as_unit(_capture@7, put) end}, {<<"TRACE"/utf8>>, fun(_capture@8) -> eyg@interpreter@cast:as_unit(_capture@8, trace) end}, {<<"OTHER"/utf8>>, begin _pipe = fun eyg@interpreter@cast:as_string/1, eyg@interpreter@cast:map( _pipe, fun(Field@0) -> {other, Field@0} end ) end}] ). -file("src/touch_grass/http.gleam", 45). -spec method_to_eyg(gleam@http:method()) -> eyg@interpreter@value:value(any(), any()). method_to_eyg(Method) -> case Method of get -> {tagged, <<"GET"/utf8>>, eyg@interpreter@value:unit()}; post -> {tagged, <<"POST"/utf8>>, eyg@interpreter@value:unit()}; head -> {tagged, <<"HEAD"/utf8>>, eyg@interpreter@value:unit()}; put -> {tagged, <<"PUT"/utf8>>, eyg@interpreter@value:unit()}; delete -> {tagged, <<"DELETE"/utf8>>, eyg@interpreter@value:unit()}; trace -> {tagged, <<"TRACE"/utf8>>, eyg@interpreter@value:unit()}; connect -> {tagged, <<"CONNECT"/utf8>>, eyg@interpreter@value:unit()}; options -> {tagged, <<"OPTIONS"/utf8>>, eyg@interpreter@value:unit()}; patch -> {tagged, <<"PATCH"/utf8>>, eyg@interpreter@value:unit()}; {other, Other} -> {tagged, <<"OTHER"/utf8>>, {string, Other}} end. -file("src/touch_grass/http.gleam", 60). -spec scheme() -> eyg@analysis@type_@isomorphic:type(integer()). scheme() -> eyg@analysis@type_@isomorphic:union( [{<<"HTTP"/utf8>>, {record, empty}}, {<<"HTTPS"/utf8>>, {record, empty}}] ). -file("src/touch_grass/http.gleam", 64). -spec scheme_to_gleam(eyg@interpreter@value:value(OLF, OLG)) -> {ok, gleam@http:scheme()} | {error, eyg@interpreter@break:reason(OLF, OLG)}. scheme_to_gleam(Value) -> eyg@interpreter@cast:as_varient( Value, [{<<"HTTP"/utf8>>, fun(_capture) -> eyg@interpreter@cast:as_unit(_capture, http) end}, {<<"HTTPS"/utf8>>, fun(_capture@1) -> eyg@interpreter@cast:as_unit(_capture@1, https) end}] ). -file("src/touch_grass/http.gleam", 73). -spec scheme_to_eyg(gleam@http:scheme()) -> eyg@interpreter@value:value(any(), any()). scheme_to_eyg(Scheme) -> case Scheme of http -> {tagged, <<"HTTP"/utf8>>, eyg@interpreter@value:unit()}; https -> {tagged, <<"HTTPS"/utf8>>, eyg@interpreter@value:unit()} end. -file("src/touch_grass/http.gleam", 80). -spec headers() -> eyg@analysis@type_@isomorphic:type(integer()). headers() -> {list, eyg@analysis@type_@isomorphic:record( [{<<"key"/utf8>>, string}, {<<"value"/utf8>>, string}] )}. -file("src/touch_grass/http.gleam", 84). -spec headers_to_gleam(eyg@interpreter@value:value(OLR, OLS)) -> {ok, list({binary(), binary()})} | {error, eyg@interpreter@break:reason(OLR, OLS)}. headers_to_gleam(Value) -> eyg@interpreter@cast:as_list_of( Value, fun(H) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"key"/utf8>>, fun eyg@interpreter@cast:as_string/1, H ), fun(K) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"value"/utf8>>, fun eyg@interpreter@cast:as_string/1, H ), fun(Value@1) -> {ok, {K, Value@1}} end ) end ) end ). -file("src/touch_grass/http.gleam", 94). -spec headers_to_eyg(list({binary(), binary()})) -> eyg@interpreter@value:value(any(), any()). headers_to_eyg(Headers) -> {linked_list, gleam@list:map( Headers, fun(H) -> {K, V} = H, {record, maps:from_list( [{<<"key"/utf8>>, {string, K}}, {<<"value"/utf8>>, {string, V}}] )} end )}. -file("src/touch_grass/http.gleam", 103). -spec request() -> eyg@analysis@type_@isomorphic:type(integer()). request() -> eyg@analysis@type_@isomorphic:record( [{<<"method"/utf8>>, method()}, {<<"scheme"/utf8>>, scheme()}, {<<"host"/utf8>>, string}, {<<"port"/utf8>>, eyg@analysis@type_@isomorphic:option(integer)}, {<<"path"/utf8>>, string}, {<<"query"/utf8>>, eyg@analysis@type_@isomorphic:option(string)}, {<<"headers"/utf8>>, headers()}, {<<"body"/utf8>>, binary}] ). -file("src/touch_grass/http.gleam", 116). -spec request_to_gleam(eyg@interpreter@value:value(OMF, OMG)) -> {ok, gleam@http@request:request(bitstring())} | {error, eyg@interpreter@break:reason(OMF, OMG)}. request_to_gleam(Request) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"method"/utf8>>, fun method_to_gleam/1, Request ), fun(Method) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"scheme"/utf8>>, fun scheme_to_gleam/1, Request ), fun(Scheme) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"host"/utf8>>, fun eyg@interpreter@cast:as_string/1, Request ), fun(Host) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"port"/utf8>>, fun(_capture) -> eyg@interpreter@cast:as_option( _capture, fun eyg@interpreter@cast:as_integer/1 ) end, Request ), fun(Port) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"path"/utf8>>, fun eyg@interpreter@cast:as_string/1, Request ), fun(Path) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"query"/utf8>>, fun(_capture@1) -> eyg@interpreter@cast:as_option( _capture@1, fun eyg@interpreter@cast:as_string/1 ) end, Request ), fun(Query) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"headers"/utf8>>, fun headers_to_gleam/1, Request ), fun(Headers) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"body"/utf8>>, fun eyg@interpreter@cast:as_binary/1, Request ), fun(Body) -> {ok, {request, Method, Headers, Body, Scheme, Host, Port, Path, Query}} end ) end ) end ) end ) end ) end ) end ) end ). -file("src/touch_grass/http.gleam", 149). -spec request_to_eyg(gleam@http@request:request(bitstring())) -> eyg@interpreter@value:value(any(), any()). request_to_eyg(Request) -> {request, Method, Headers, Body, Scheme, Host, Port, Path, Query} = Request, {record, maps:from_list( [{<<"method"/utf8>>, method_to_eyg(Method)}, {<<"scheme"/utf8>>, scheme_to_eyg(Scheme)}, {<<"host"/utf8>>, {string, Host}}, {<<"port"/utf8>>, eyg@interpreter@value:option( Port, fun(Field@0) -> {integer, Field@0} end )}, {<<"path"/utf8>>, {string, Path}}, {<<"query"/utf8>>, eyg@interpreter@value:option( Query, fun(Field@0) -> {string, Field@0} end )}, {<<"headers"/utf8>>, headers_to_eyg(Headers)}, {<<"body"/utf8>>, {binary, Body}}] )}. -file("src/touch_grass/http.gleam", 174). -spec response() -> eyg@analysis@type_@isomorphic:type(integer()). response() -> eyg@analysis@type_@isomorphic:record( [{<<"status"/utf8>>, integer}, {<<"headers"/utf8>>, headers()}, {<<"body"/utf8>>, binary}] ). -file("src/touch_grass/http.gleam", 182). -spec response_to_gleam(eyg@interpreter@value:value(OMT, OMU)) -> {ok, gleam@http@response:response(bitstring())} | {error, eyg@interpreter@break:reason(OMT, OMU)}. response_to_gleam(Response) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"status"/utf8>>, fun eyg@interpreter@cast:as_integer/1, Response ), fun(Status) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"headers"/utf8>>, fun headers_to_gleam/1, Response ), fun(Headers) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"body"/utf8>>, fun eyg@interpreter@cast:as_binary/1, Response ), fun(Body) -> {ok, {response, Status, Headers, Body}} end ) end ) end ). -file("src/touch_grass/http.gleam", 191). -spec response_to_eyg(gleam@http@response:response(bitstring())) -> eyg@interpreter@value:value(any(), any()). response_to_eyg(Response) -> {response, Status, Headers, Body} = Response, {record, maps:from_list( [{<<"status"/utf8>>, {integer, Status}}, {<<"headers"/utf8>>, headers_to_eyg(Headers)}, {<<"body"/utf8>>, {binary, Body}}] )}. -file("src/touch_grass/http.gleam", 202). -spec operation() -> eyg@analysis@type_@isomorphic:type(integer()). operation() -> eyg@analysis@type_@isomorphic:record( [{<<"method"/utf8>>, method()}, {<<"path"/utf8>>, string}, {<<"query"/utf8>>, eyg@analysis@type_@isomorphic:option(string)}, {<<"headers"/utf8>>, headers()}, {<<"body"/utf8>>, binary}] ). -file("src/touch_grass/http.gleam", 212). -spec operation_to_gleam(eyg@interpreter@value:value(ONH, ONI)) -> {ok, ogre@operation:operation(bitstring())} | {error, eyg@interpreter@break:reason(ONH, ONI)}. operation_to_gleam(Request) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"method"/utf8>>, fun method_to_gleam/1, Request ), fun(Method) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"path"/utf8>>, fun eyg@interpreter@cast:as_string/1, Request ), fun(Path) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"query"/utf8>>, fun(_capture) -> eyg@interpreter@cast:as_option( _capture, fun eyg@interpreter@cast:as_string/1 ) end, Request ), fun(Query) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"headers"/utf8>>, fun headers_to_gleam/1, Request ), fun(Headers) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"body"/utf8>>, fun eyg@interpreter@cast:as_binary/1, Request ), fun(Body) -> {ok, {operation, Method, Path, Query, Headers, Body}} end ) end ) end ) end ) end ).