Current section
Files
Jump to
Current section
Files
src/example@handlers.erl
-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.