-module(oadr3@runner).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oadr3/runner.gleam").
-export([handle_errors/1, run/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(" Utility functions for running midas tasks\n").
-file("src/oadr3/runner.gleam", 9).
-spec handle_errors({ok, KOG} | {error, any()}) -> {ok, KOG} |
{error, snag:snag()}.
handle_errors(Response) ->
case Response of
{ok, Response1} ->
{ok, Response1};
{error, Reason} ->
_pipe = snag:new(gleam@string:inspect(Reason)),
_pipe@1 = snag:layer(_pipe, <<"failed to decode"/utf8>>),
{error, _pipe@1}
end.
-file("src/oadr3/runner.gleam", 29).
-spec map_http_response(
{ok, gleam@http@response:response(bitstring())} |
{error, gleam@httpc:http_error()}
) -> {ok, gleam@http@response:response(bitstring())} |
{error, midas@effect:fetch_error()}.
map_http_response(Response) ->
case Response of
{ok, Response@1} ->
{ok, Response@1};
{error, invalid_utf8_response} ->
{error, unable_to_read_body};
{error, {failed_to_connect, _, _}} ->
{error, {network_error, <<"Failed to connect"/utf8>>}};
{error, response_timeout} ->
{error, {network_error, <<"Connect timed out"/utf8>>}}
end.
-file("src/oadr3/runner.gleam", 20).
?DOC(" Will return e.Done upon success\n").
-spec run(midas@effect:effect(KNL, KNM)) -> midas@effect:effect(KNL, KNM).
run(Effect) ->
case Effect of
{fetch, Request, Resume} ->
run(Resume(map_http_response(gleam@httpc:send_bits(Request))));
Any ->
Any
end.