Packages

Minimal Gleam client for posting data to a Slack incoming Webhook

Current section

Files

Jump to
slack_webhook_client src slack_webhook_client@schema.erl
Raw

src/slack_webhook_client@schema.erl

-module(slack_webhook_client@schema).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/slack_webhook_client/schema.gleam").
-export([text_object_decoder/0, text_object_encode/1, accessory_decoder/0, block_decoder/0, slack_message_decoder/0, accessory_encode/1, block_encode/1, slack_message_encode/1]).
-export_type([accessory/0, block/0, slack_message/0, text_object/0]).
-type accessory() :: {accessory,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary())}.
-type block() :: {block,
gleam@option:option(accessory()),
gleam@option:option(binary()),
gleam@option:option(list(text_object())),
gleam@option:option(text_object()),
binary()}.
-type slack_message() :: {slack_message,
gleam@option:option(list(block())),
gleam@option:option(binary())}.
-type text_object() :: {text_object,
gleam@option:option(binary()),
gleam@option:option(binary())}.
-file("src/slack_webhook_client/schema.gleam", 32).
-spec text_object_decoder() -> gleam@dynamic@decode:decoder(text_object()).
text_object_decoder() ->
gleam@dynamic@decode:optional_field(
<<"text"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Text) ->
gleam@dynamic@decode:optional_field(
<<"type"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Type_) ->
gleam@dynamic@decode:success({text_object, Text, Type_})
end
)
end
).
-file("src/slack_webhook_client/schema.gleam", 46).
-spec text_object_encode(text_object()) -> gleam@json:json().
text_object_encode(Data) ->
oas@generator@utils:object(
[{<<"text"/utf8>>,
gleam@json:nullable(
erlang:element(2, Data),
fun gleam@json:string/1
)},
{<<"type"/utf8>>,
gleam@json:nullable(
erlang:element(3, Data),
fun gleam@json:string/1
)}]
).
-file("src/slack_webhook_client/schema.gleam", 115).
-spec accessory_decoder() -> gleam@dynamic@decode:decoder(accessory()).
accessory_decoder() ->
gleam@dynamic@decode:optional_field(
<<"alt_text"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Alt_text) ->
gleam@dynamic@decode:optional_field(
<<"image_url"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Image_url) ->
gleam@dynamic@decode:optional_field(
<<"type"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Type_) ->
gleam@dynamic@decode:success(
{accessory, Alt_text, Image_url, Type_}
)
end
)
end
)
end
).
-file("src/slack_webhook_client/schema.gleam", 74).
-spec block_decoder() -> gleam@dynamic@decode:decoder(block()).
block_decoder() ->
gleam@dynamic@decode:optional_field(
<<"accessory"/utf8>>,
none,
gleam@dynamic@decode:optional(accessory_decoder()),
fun(Accessory) ->
gleam@dynamic@decode:optional_field(
<<"block_id"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Block_id) ->
gleam@dynamic@decode:optional_field(
<<"fields"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(text_object_decoder())
),
fun(Fields) ->
gleam@dynamic@decode:optional_field(
<<"text"/utf8>>,
none,
gleam@dynamic@decode:optional(
text_object_decoder()
),
fun(Text) ->
gleam@dynamic@decode:field(
<<"type"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Type_) ->
gleam@dynamic@decode:success(
{block,
Accessory,
Block_id,
Fields,
Text,
Type_}
)
end
)
end
)
end
)
end
)
end
).
-file("src/slack_webhook_client/schema.gleam", 53).
-spec slack_message_decoder() -> gleam@dynamic@decode:decoder(slack_message()).
slack_message_decoder() ->
gleam@dynamic@decode:optional_field(
<<"blocks"/utf8>>,
none,
gleam@dynamic@decode:optional(
gleam@dynamic@decode:list(block_decoder())
),
fun(Blocks) ->
gleam@dynamic@decode:optional_field(
<<"text"/utf8>>,
none,
gleam@dynamic@decode:optional(
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Text) ->
gleam@dynamic@decode:success({slack_message, Blocks, Text})
end
)
end
).
-file("src/slack_webhook_client/schema.gleam", 138).
-spec accessory_encode(accessory()) -> gleam@json:json().
accessory_encode(Data) ->
oas@generator@utils:object(
[{<<"alt_text"/utf8>>,
gleam@json:nullable(
erlang:element(2, Data),
fun gleam@json:string/1
)},
{<<"image_url"/utf8>>,
gleam@json:nullable(
erlang:element(3, Data),
fun gleam@json:string/1
)},
{<<"type"/utf8>>,
gleam@json:nullable(
erlang:element(4, Data),
fun gleam@json:string/1
)}]
).
-file("src/slack_webhook_client/schema.gleam", 105).
-spec block_encode(block()) -> gleam@json:json().
block_encode(Data) ->
oas@generator@utils:object(
[{<<"accessory"/utf8>>,
gleam@json:nullable(
erlang:element(2, Data),
fun accessory_encode/1
)},
{<<"block_id"/utf8>>,
gleam@json:nullable(
erlang:element(3, Data),
fun gleam@json:string/1
)},
{<<"fields"/utf8>>,
gleam@json:nullable(
erlang:element(4, Data),
fun(_capture) ->
gleam@json:array(_capture, fun text_object_encode/1)
end
)},
{<<"text"/utf8>>,
gleam@json:nullable(
erlang:element(5, Data),
fun text_object_encode/1
)},
{<<"type"/utf8>>, gleam@json:string(erlang:element(6, Data))}]
).
-file("src/slack_webhook_client/schema.gleam", 67).
-spec slack_message_encode(slack_message()) -> gleam@json:json().
slack_message_encode(Data) ->
oas@generator@utils:object(
[{<<"blocks"/utf8>>,
gleam@json:nullable(
erlang:element(2, Data),
fun(_capture) ->
gleam@json:array(_capture, fun block_encode/1)
end
)},
{<<"text"/utf8>>,
gleam@json:nullable(
erlang:element(3, Data),
fun gleam@json:string/1
)}]
).