-module(touch_grass@uri). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/touch_grass/uri.gleam"). -export([uri/0, uri_to_gleam/1]). -file("src/touch_grass/uri.gleam", 12). -spec uri() -> eyg@analysis@type_@isomorphic:type(integer()). uri() -> eyg@analysis@type_@isomorphic:record( [{<<"scheme"/utf8>>, touch_grass@http:scheme()}, {<<"host"/utf8>>, string}, {<<"port"/utf8>>, eyg@analysis@type_@isomorphic:option(string)}, {<<"path"/utf8>>, string}, {<<"query"/utf8>>, eyg@analysis@type_@isomorphic:key_value_list(string)}] ). -file("src/touch_grass/uri.gleam", 24). -spec uri_to_gleam(eyg@interpreter@value:value(NZG, NZH)) -> {ok, gleam@uri:uri()} | {error, eyg@interpreter@break:reason(NZG, NZH)}. uri_to_gleam(Url) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"scheme"/utf8>>, fun touch_grass@http:scheme_to_gleam/1, Url ), fun(Scheme) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"host"/utf8>>, fun eyg@interpreter@cast:as_string/1, Url ), 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, Url ), fun(Port) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"path"/utf8>>, fun eyg@interpreter@cast:as_string/1, Url ), fun(Path) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"query"/utf8>>, fun(_capture@1) -> eyg@interpreter@cast:as_list_of( _capture@1, fun(Item) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"key"/utf8>>, fun eyg@interpreter@cast:as_string/1, Item ), fun(Key) -> gleam@result:'try'( eyg@interpreter@cast:field( <<"value"/utf8>>, fun eyg@interpreter@cast:as_string/1, Item ), fun(Value) -> {ok, {Key, Value}} end ) end ) end ) end, Url ), fun(Query) -> Query@1 = gleam@uri:query_to_string( Query ), {ok, {uri, {some, gleam@http:scheme_to_string( Scheme )}, none, {some, Host}, Port, Path, {some, Query@1}, none}} end ) end ) end ) end ) end ).