Current section
Files
Jump to
Current section
Files
src/glitch@types@condition.erl
-module(glitch@types@condition).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decoder/0, from_json/1, to_json/1]).
-export_type([condition/0]).
-type condition() :: {condition,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary())}.
-spec decoder() -> fun((gleam@dynamic:dynamic_()) -> {ok, condition()} |
{error, list(gleam@dynamic:decode_error())}).
decoder() ->
gleam@dynamic:decode8(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7) -> {condition, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7} end,
gleam@dynamic:optional_field(
<<"broadcaster_user_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"from_broadcaster_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"moderator_user_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"to_broadcaster_id_user_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"reward_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"client_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"extension_client_id"/utf8>>,
fun gleam@dynamic:string/1
),
gleam@dynamic:optional_field(
<<"user_id"/utf8>>,
fun gleam@dynamic:string/1
)
).
-spec from_json(binary()) -> {ok, condition()} |
{error, gleam@json:decode_error()}.
from_json(Json_string) ->
gleam@json:decode(Json_string, decoder()).
-spec to_json(condition()) -> gleam@json:json().
to_json(Transport) ->
gleam@json:object(
[{<<"broadcaster_user_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(2, Transport),
fun gleam@json:string/1
)},
{<<"from_broadcaster_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(3, Transport),
fun gleam@json:string/1
)},
{<<"moderator_user_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(4, Transport),
fun gleam@json:string/1
)},
{<<"to_broadcaster_id_user_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(5, Transport),
fun gleam@json:string/1
)},
{<<"reward_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(6, Transport),
fun gleam@json:string/1
)},
{<<"client_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(7, Transport),
fun gleam@json:string/1
)},
{<<"extension_client_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(8, Transport),
fun gleam@json:string/1
)},
{<<"user_id"/utf8>>,
glitch@extended@json_ext:option(
erlang:element(9, Transport),
fun gleam@json:string/1
)}]
).