-module(glitch@api@api_response). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([from_json/2, get_data/1, get_data_from_response/1]). -export_type([twitch_api_response/1]). -type twitch_api_response(OVH) :: {twitch_api_response, list(OVH)}. -spec decoder( fun((gleam@dynamic:dynamic_()) -> {ok, OVI} | {error, list(gleam@dynamic:decode_error())}) ) -> fun((gleam@dynamic:dynamic_()) -> {ok, twitch_api_response(OVI)} | {error, list(gleam@dynamic:decode_error())}). decoder(Data_decoder) -> gleam@dynamic:decode1( fun(Field@0) -> {twitch_api_response, Field@0} end, gleam@dynamic:field(<<"data"/utf8>>, gleam@dynamic:list(Data_decoder)) ). -spec from_json( binary(), fun((gleam@dynamic:dynamic_()) -> {ok, OVM} | {error, list(gleam@dynamic:decode_error())}) ) -> {ok, twitch_api_response(OVM)} | {error, gleam@json:decode_error()}. from_json(Json_string, Data_decoder) -> gleam@io:println(Json_string), gleam@json:decode(Json_string, decoder(Data_decoder)). -spec get_data(twitch_api_response(OVP)) -> list(OVP). get_data(Api_response) -> erlang:element(2, Api_response). -spec get_data_from_response( gleam@http@response:response(twitch_api_response(OVS)) ) -> {ok, gleam@http@response:response(list(OVS))} | {error, any()}. get_data_from_response(Response) -> _pipe = Response, gleam@http@response:try_map( _pipe, glitch@extended@function_ext:compose( fun get_data/1, fun(Field@0) -> {ok, Field@0} end ) ).