-module(gleeth@rpc@response_utils). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gleeth/rpc/response_utils.gleam"). -export([decode_rpc_response/2, make_string_request/3, make_decoded_request/4]). -file("src/gleeth/rpc/response_utils.gleam", 9). -spec decode_rpc_error(binary()) -> gleam@option:option(binary()). decode_rpc_error(Body) -> Error_decoder = gleam@dynamic@decode:at( [<<"error"/utf8>>, <<"message"/utf8>>], gleam@dynamic@decode:optional( {decoder, fun gleam@dynamic@decode:decode_string/1} ) ), case gleam@json:parse(Body, Error_decoder) of {ok, {some, Msg}} -> {some, Msg}; _ -> none end. -file("src/gleeth/rpc/response_utils.gleam", 21). -spec decode_rpc_response(binary(), gleam@dynamic@decode:decoder(OMG)) -> {ok, OMG} | {error, gleeth@rpc@types:gleeth_error()}. decode_rpc_response(Body, Result_decoder) -> case decode_rpc_error(Body) of {some, Msg} -> {error, {rpc_error, <<"RPC Error: "/utf8, Msg/binary>>}}; none -> Envelope_decoder = gleam@dynamic@decode:at( [<<"result"/utf8>>], Result_decoder ), case gleam@json:parse(Body, Envelope_decoder) of {ok, Value} -> {ok, Value}; {error, {unable_to_decode, _}} -> {error, {parse_error, <<"Failed to decode RPC result"/utf8>>}}; {error, unexpected_end_of_input} -> {error, {parse_error, <<"Unexpected end of JSON input"/utf8>>}}; {error, {unexpected_byte, B}} -> {error, {parse_error, <<"Unexpected byte in JSON: "/utf8, B/binary>>}}; {error, {unexpected_sequence, S}} -> {error, {parse_error, <<"Unexpected sequence in JSON: "/utf8, S/binary>>}} end end. -file("src/gleeth/rpc/response_utils.gleam", 46). -spec make_string_request( binary(), gleeth@rpc@types:eth_method(), list(gleam@json:json()) ) -> {ok, binary()} | {error, gleeth@rpc@types:gleeth_error()}. make_string_request(Rpc_url, Method, Params) -> gleam@result:'try'( gleeth@rpc@client:make_request( Rpc_url, gleeth@rpc@types:method_to_string(Method), Params ), fun(Body) -> decode_rpc_response( Body, {decoder, fun gleam@dynamic@decode:decode_string/1} ) end ). -file("src/gleeth/rpc/response_utils.gleam", 61). -spec make_decoded_request( binary(), gleeth@rpc@types:eth_method(), list(gleam@json:json()), gleam@dynamic@decode:decoder(OMO) ) -> {ok, OMO} | {error, gleeth@rpc@types:gleeth_error()}. make_decoded_request(Rpc_url, Method, Params, Decoder) -> gleam@result:'try'( gleeth@rpc@client:make_request( Rpc_url, gleeth@rpc@types:method_to_string(Method), Params ), fun(Body) -> decode_rpc_response(Body, Decoder) end ).