Current section
Files
Jump to
Current section
Files
src/touch_grass@http.erl
-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(NDO, NDP)) -> {ok,
gleam@http:method()} |
{error, eyg@interpreter@break:reason(NDO, NDP)}.
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(NEA, NEB)) -> {ok,
gleam@http:scheme()} |
{error, eyg@interpreter@break:reason(NEA, NEB)}.
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(NEM, NEN)) -> {ok,
list({binary(), binary()})} |
{error, eyg@interpreter@break:reason(NEM, NEN)}.
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(NFA, NFB)) -> {ok,
gleam@http@request:request(bitstring())} |
{error, eyg@interpreter@break:reason(NFA, NFB)}.
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(NFO, NFP)) -> {ok,
gleam@http@response:response(bitstring())} |
{error, eyg@interpreter@break:reason(NFO, NFP)}.
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(NGC, NGD)) -> {ok,
ogre@operation:operation(bitstring())} |
{error, eyg@interpreter@break:reason(NGC, NGD)}.
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
).