-module(example@handlers). -compile(no_auto_import). -export([public_home/2, public_version/2, public_status/2, country_list/2, country_show/1, country_city_list/1, city_list/2, city_show/1, city_create/2, city_delete/1, language_list/2, language_show/1, country_delete/1, language_countries/1]). -spec public_home( gleam@http@request:request(bitstring()), example@context:initial_context() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. public_home(_, _) -> Body = gleam@bit_builder:from_string(<<"Home"/utf8>>), Resp = begin _pipe = gleam@http@response:new(200), gleam@http@response:set_body(_pipe, Body) end, {ok, Resp}. -spec public_version( gleam@http@request:request(bitstring()), example@context:initial_context() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. public_version(_, _) -> Body = gleam@bit_builder:from_string(<<"1.0.0"/utf8>>), Resp = begin _pipe = gleam@http@response:new(200), gleam@http@response:set_body(_pipe, Body) end, {ok, Resp}. -spec public_status( gleam@http@request:request(bitstring()), example@context:initial_context() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. public_status(_, _) -> Data = gleam@json:object( [{<<"message"/utf8>>, gleam@json:string(<<"Operational"/utf8>>)}, {<<"incidents"/utf8>>, gleam@json:array([], fun gleam@json:string/1)}] ), {ok, bliss:json_response(Data)}. -spec country_list( gleam@http@request:request(bitstring()), example@context:context_authenticated() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. country_list(_, _) -> Data = begin _pipe = example@store:countries(), gleam@json:array(_pipe, fun example@codecs:json_of_country/1) end, {ok, bliss:json_response(Data)}. -spec country_show(binary()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}). country_show(Code) -> fun(Req, _) -> case begin _pipe = example@store:countries(), _pipe@1 = gleam@list:find( _pipe, fun(Country) -> erlang:element(2, Country) =:= Code end ), gleam@result:replace_error(_pipe@1, not_found) end of {error, _try} -> {error, _try}; {ok, Country@1} -> Data = example@codecs:json_of_country(Country@1), {ok, bliss:json_response(Data)} end end. -spec country_city_list(binary()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}). country_city_list(Code) -> fun(Req, _) -> case begin _pipe = example@store:countries(), _pipe@1 = gleam@list:find( _pipe, fun(Country) -> erlang:element(2, Country) =:= Code end ), gleam@result:replace_error(_pipe@1, not_found) end of {error, _try} -> {error, _try}; {ok, Country@1} -> Data = gleam@json:array( erlang:element(4, Country@1), fun example@codecs:json_of_city/1 ), {ok, bliss:json_response(Data)} end end. -spec city_list( gleam@http@request:request(bitstring()), example@context:context_authenticated() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. city_list(_, _) -> Cities = example@store:cities(), Data = gleam@json:array(Cities, fun example@codecs:json_of_city/1), {ok, bliss:json_response(Data)}. -spec city_show(binary()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}). city_show(Id) -> fun(_, _) -> Cities = example@store:cities(), case begin _pipe = gleam@list:find( Cities, fun(C) -> erlang:element(2, C) =:= Id end ), gleam@result:replace_error(_pipe, not_found) end of {error, _try} -> {error, _try}; {ok, City} -> Data = example@codecs:json_of_city(City), {ok, bliss:json_response(Data)} end end. -spec city_create( gleam@http@request:request(bitstring()), example@context:context_authenticated() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, any()}. city_create(_, _) -> Body = gleam@bit_builder:from_string(<<"Created"/utf8>>), Resp = begin _pipe = gleam@http@response:new(201), gleam@http@response:set_body(_pipe, Body) end, {ok, Resp}. -spec city_delete(binary()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, any()}). city_delete(_) -> fun(_, _) -> Body = gleam@bit_builder:from_string(<<"Deleted"/utf8>>), Resp = begin _pipe = gleam@http@response:new(200), gleam@http@response:set_body(_pipe, Body) end, {ok, Resp} end. -spec language_list( gleam@http@request:request(bitstring()), example@context:context_authenticated() ) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}. language_list(_, _) -> Data = begin _pipe = example@store:languages(), gleam@json:array(_pipe, fun example@codecs:json_of_language/1) end, {ok, bliss:json_response(Data)}. -spec language_show(binary()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}). language_show(Code) -> fun(_, _) -> case begin _pipe = example@store:languages(), _pipe@1 = gleam@list:find( _pipe, fun(Lang) -> erlang:element(2, Lang) =:= Code end ), gleam@result:replace_error(_pipe@1, not_found) end of {error, _try} -> {error, _try}; {ok, Language} -> Data = example@codecs:json_of_language(Language), {ok, bliss:json_response(Data)} end end. -spec country_delete(any()) -> fun((gleam@http@request:request(bitstring()), example@context:context_authenticated()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, bliss:response_error()}). country_delete(_) -> fun(_, _) -> Body = gleam@bit_builder:from_string(<<"Deleted"/utf8>>), Resp = begin _pipe = gleam@http@response:new(200), gleam@http@response:set_body(_pipe, Body) end, {ok, Resp} end. -spec language_countries(binary()) -> fun((any(), any()) -> {ok, gleam@http@response:response(gleam@bit_builder:bit_builder())} | {error, any()}). language_countries(Language_code) -> fun(_, _) -> Data = begin _pipe = example@store:countries(), _pipe@1 = gleam@list:filter( _pipe, fun(Country) -> gleam@list:contains( erlang:element(5, Country), Language_code ) end ), _pipe@2 = gleam@list:map( _pipe@1, fun(Country@1) -> erlang:element(2, Country@1) end ), gleam@json:array(_pipe@2, fun gleam@json:string/1) end, {ok, bliss:json_response(Data)} end.