1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
-module(gleam@http@service).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
-export([map_response_body/2, prepend_response_header/3, method_override/1]).
-spec map_response_body(
fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJM)),
fun((GJM) -> GJP)
) -> fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJP)).
map_response_body(Service, Mapper) ->
fun(Req) -> _pipe = Req,
_pipe@1 = Service(_pipe),
gleam@http@response:map(_pipe@1, Mapper) end.
-spec prepend_response_header(
fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)),
binary(),
binary()
) -> fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)).
prepend_response_header(Service, Key, Value) ->
fun(Req) -> _pipe = Req,
_pipe@1 = Service(_pipe),
gleam@http@response:prepend_header(_pipe@1, Key, Value) end.
-spec ensure_post(gleam@http@request:request(GJY)) -> {ok,
gleam@http@request:request(GJY)} |
{error, nil}.
ensure_post(Req) ->
case erlang:element(2, Req) of
post ->
{ok, Req};
_ ->
{error, nil}
end.
-spec get_override_method(gleam@http@request:request(any())) -> {ok,
gleam@http:method()} |
{error, nil}.
get_override_method(Request) ->
gleam@result:then(
gleam@http@request:get_query(Request),
fun(Query_params) ->
gleam@result:then(
gleam@list:key_find(Query_params, <<"_method"/utf8>>),
fun(Method) ->
gleam@result:then(
gleam@http:parse_method(Method),
fun(Method@1) -> case Method@1 of
put ->
{ok, Method@1};
patch ->
{ok, Method@1};
delete ->
{ok, Method@1};
_ ->
{error, nil}
end end
)
end
)
end
).
-spec method_override(
fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG))
) -> fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG)).
method_override(Service) ->
fun(Request) -> _pipe = Request,
_pipe@1 = ensure_post(_pipe),
_pipe@2 = gleam@result:then(_pipe@1, fun get_override_method/1),
_pipe@3 = gleam@result:map(
_pipe@2,
fun(_capture) ->
gleam@http@request:set_method(Request, _capture)
end
),
_pipe@4 = gleam@result:unwrap(_pipe@3, Request),
Service(_pipe@4) end.
|