-module(dream_http_client@internal). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/dream_http_client/internal.gleam"). -export([atomize_method/1, start_httpc_stream/1, extract_owner_pid/1, receive_next/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -file("src/dream_http_client/internal.gleam", 45). ?DOC(false). -spec atomize_method(gleam@http:method()) -> gleam@erlang@atom:atom_(). atomize_method(Method) -> case Method of get -> erlang:binary_to_atom(<<"get"/utf8>>); post -> erlang:binary_to_atom(<<"post"/utf8>>); put -> erlang:binary_to_atom(<<"put"/utf8>>); delete -> erlang:binary_to_atom(<<"delete"/utf8>>); patch -> erlang:binary_to_atom(<<"patch"/utf8>>); head -> erlang:binary_to_atom(<<"head"/utf8>>); options -> erlang:binary_to_atom(<<"options"/utf8>>); trace -> erlang:binary_to_atom(<<"trace"/utf8>>); connect -> erlang:binary_to_atom(<<"connect"/utf8>>); {other, Method_string} -> erlang:binary_to_atom(string:lowercase(Method_string)) end. -file("src/dream_http_client/internal.gleam", 75). ?DOC(false). -spec start_httpc_stream(gleam@http@request:request(binary())) -> gleam@dynamic:dynamic_(). start_httpc_stream(Req) -> Url = <<<<<<(gleam@http:scheme_to_string(erlang:element(5, Req)))/binary, "://"/utf8>>/binary, (erlang:element(6, Req))/binary>>/binary, (erlang:element(8, Req))/binary>>, Method_atom = atomize_method(erlang:element(2, Req)), Body = <<(erlang:element(4, Req))/binary>>, Me = erlang:self(), dream_httpc_shim:request_stream( Method_atom, Url, erlang:element(3, Req), Body, Me ). -file("src/dream_http_client/internal.gleam", 95). ?DOC(false). -spec extract_owner_pid(gleam@dynamic:dynamic_()) -> gleam@dynamic:dynamic_(). extract_owner_pid(Request_result) -> Decoded = gleam@dynamic@decode:run( Request_result, gleam@dynamic@decode:at( [1], {decoder, fun gleam@dynamic@decode:decode_dynamic/1} ) ), case Decoded of {ok, Id} -> Id; {error, _} -> Request_result end. -file("src/dream_http_client/internal.gleam", 118). ?DOC(false). -spec receive_next(gleam@dynamic:dynamic_()) -> {ok, bitstring()} | {error, nil}. receive_next(Owner) -> Resp = dream_httpc_shim:fetch_next(Owner), Tag = begin _pipe = gleam@dynamic@decode:run( Resp, gleam@dynamic@decode:at( [0], {decoder, fun gleam@dynamic@decode:decode_dynamic/1} ) ), _pipe@1 = gleam@result:'try'( _pipe, fun(Dyn) -> {ok, gleam_erlang_ffi:identity(Dyn)} end ), _pipe@2 = gleam@result:unwrap( _pipe@1, erlang:binary_to_atom(<<""/utf8>>) ), erlang:atom_to_binary(_pipe@2) end, case Tag of <<"chunk"/utf8>> -> Bin = begin _pipe@3 = gleam@dynamic@decode:run( Resp, gleam@dynamic@decode:at( [1], {decoder, fun gleam@dynamic@decode:decode_bit_array/1} ) ), gleam@result:unwrap(_pipe@3, <<>>) end, {ok, Bin}; <<"finished"/utf8>> -> {error, nil}; _ -> {error, nil} end.