Current section
Files
Jump to
Current section
Files
src/glace@internal@glace_middleware.erl
-module(glace@internal@glace_middleware).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([middleware/3, execute_middleware/2, execute_middlewares/2]).
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_middleware.gleam", 22).
-spec middleware(
glace@internal@glace_types:glace_builder(QMT),
fun((glace@internal@glace_types:request(QMT)) -> {ok,
glace@internal@glace_types:request(QMT)} |
{error, gleam@http@response:response(mist:response_data())}),
glace@internal@glace_types:execute_middleware()
) -> glace@internal@glace_types:glace_builder(QMT).
middleware(Builder, Handler, When) ->
Middleware = {middleware, <<"/"/utf8>>, Handler},
case When of
before ->
_record = Builder,
{glace_builder,
erlang:element(2, _record),
erlang:element(3, _record),
lists:append(erlang:element(4, Builder), [Middleware]),
erlang:element(5, _record),
erlang:element(6, _record)};
'after' ->
_record@1 = Builder,
{glace_builder,
erlang:element(2, _record@1),
erlang:element(3, _record@1),
erlang:element(4, _record@1),
lists:append(erlang:element(5, Builder), [Middleware]),
erlang:element(6, _record@1)}
end.
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_middleware.gleam", 45).
-spec execute_middleware(
glace@internal@glace_types:request(QNB),
glace@internal@glace_types:middleware(QNB)
) -> {ok, glace@internal@glace_types:request(QNB)} |
{error, gleam@http@response:response(mist:response_data())}.
execute_middleware(Request, Middleware) ->
(erlang:element(3, Middleware))(Request).
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_middleware.gleam", 8).
-spec execute_middlewares(
glace@internal@glace_types:request(QML),
list(glace@internal@glace_types:middleware(QML))
) -> {ok, glace@internal@glace_types:request(QML)} |
{error, gleam@http@response:response(mist:response_data())}.
execute_middlewares(Request, Middlewares) ->
case Middlewares of
[First | Rest] ->
case execute_middleware(Request, First) of
{ok, Req} ->
execute_middlewares(Req, Rest);
{error, Error} ->
{error, Error}
end;
[] ->
{ok, Request}
end.