Skip to main content

src/gaveta.erl

-module(gaveta).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gaveta.gleam").
-export([extract_page_from_link/2]).

-file("src/gaveta.gleam", 7).
-spec extract_page_from_link(list({binary(), binary()}), binary()) -> gleam@option:option(integer()).
extract_page_from_link(Headers, Rel) ->
    _pipe = Headers,
    _pipe@8 = gleam@list:find_map(
        _pipe,
        fun(H) ->
            {Name, Value} = H,
            case Name =:= <<"link"/utf8>> of
                false ->
                    {error, nil};

                true ->
                    _pipe@1 = Value,
                    _pipe@2 = gleam@string:split(_pipe@1, <<", "/utf8>>),
                    gleam@list:find_map(
                        _pipe@2,
                        fun(Part) ->
                            Rel_param = <<<<"rel=\""/utf8, Rel/binary>>/binary,
                                "\""/utf8>>,
                            case gleam@string:split_once(Part, <<"; "/utf8>>) of
                                {ok, {Url, R}} when R =:= Rel_param ->
                                    _pipe@3 = Url,
                                    _pipe@4 = gleam@string:drop_start(
                                        _pipe@3,
                                        1
                                    ),
                                    _pipe@5 = gleam@string:drop_end(_pipe@4, 1),
                                    _pipe@6 = gleam@string:split(
                                        _pipe@5,
                                        <<"page="/utf8>>
                                    ),
                                    _pipe@7 = gleam@list:last(_pipe@6),
                                    gleam@result:'try'(
                                        _pipe@7,
                                        fun gleam_stdlib:parse_int/1
                                    );

                                _ ->
                                    {error, nil}
                            end
                        end
                    )
            end
        end
    ),
    gleam@option:from_result(_pipe@8).