Skip to main content

src/rocksky@shout.erl

-module(rocksky@shout).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/shout.gleam").
-export([create/1, reply/2, remove/1, report/1, with_reason/2, get_replies/1, get_profile_shouts/1, get_artist_shouts/1, get_album_shouts/1, get_track_shouts/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(" `app.rocksky.shout.*` — public comments on profiles, tracks, albums, artists.\n").

-file("src/rocksky/shout.gleam", 11).
?DOC(" `app.rocksky.shout.createShout` — post a new shout.\n").
-spec create(binary()) -> rocksky:request(rocksky@types:shout()).
create(Message) ->
    Body = gleam@json:object([{<<"message"/utf8>>, gleam@json:string(Message)}]),
    _pipe = rocksky:procedure(
        <<"app.rocksky.shout.createShout"/utf8>>,
        rocksky@decoders:shout()
    ),
    rocksky:body(_pipe, Body).

-file("src/rocksky/shout.gleam", 18).
?DOC(" `app.rocksky.shout.replyShout` — reply to an existing shout.\n").
-spec reply(binary(), binary()) -> rocksky:request(rocksky@types:shout()).
reply(Shout_id, Message) ->
    Body = gleam@json:object(
        [{<<"shoutId"/utf8>>, gleam@json:string(Shout_id)},
            {<<"message"/utf8>>, gleam@json:string(Message)}]
    ),
    _pipe = rocksky:procedure(
        <<"app.rocksky.shout.replyShout"/utf8>>,
        rocksky@decoders:shout()
    ),
    rocksky:body(_pipe, Body).

-file("src/rocksky/shout.gleam", 32).
?DOC(" `app.rocksky.shout.removeShout` — delete a shout.\n").
-spec remove(binary()) -> rocksky:request(rocksky@types:shout()).
remove(Id) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.shout.removeShout"/utf8>>,
        rocksky@decoders:shout()
    ),
    rocksky:param(_pipe, <<"id"/utf8>>, Id).

-file("src/rocksky/shout.gleam", 39).
?DOC(
    " `app.rocksky.shout.reportShout` — file an abuse report on a shout. Add an\n"
    " optional `with_reason` for context.\n"
).
-spec report(binary()) -> rocksky:request(rocksky@types:shout()).
report(Shout_id) ->
    Body = gleam@json:object(
        [{<<"shoutId"/utf8>>, gleam@json:string(Shout_id)}]
    ),
    _pipe = rocksky:procedure(
        <<"app.rocksky.shout.reportShout"/utf8>>,
        rocksky@decoders:shout()
    ),
    rocksky:body(_pipe, Body).

-file("src/rocksky/shout.gleam", 46).
?DOC(" Append a reason to a `report` request before sending.\n").
-spec with_reason(rocksky:request(HYS), binary()) -> rocksky:request(HYS).
with_reason(Req, Reason) ->
    rocksky:param(Req, <<"reason"/utf8>>, Reason).

-file("src/rocksky/shout.gleam", 53).
?DOC(" `app.rocksky.shout.getShoutReplies` — paginated replies for a shout.\n").
-spec get_replies(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_replies(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.shout.getShoutReplies"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/shout.gleam", 59).
?DOC(" `app.rocksky.shout.getProfileShouts` — shouts on a profile.\n").
-spec get_profile_shouts(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_profile_shouts(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.shout.getProfileShouts"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/shout.gleam", 65).
?DOC(" `app.rocksky.shout.getArtistShouts` — shouts on an artist.\n").
-spec get_artist_shouts(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_artist_shouts(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.shout.getArtistShouts"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/shout.gleam", 71).
?DOC(" `app.rocksky.shout.getAlbumShouts` — shouts on an album.\n").
-spec get_album_shouts(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_album_shouts(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.shout.getAlbumShouts"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/shout.gleam", 77).
?DOC(" `app.rocksky.shout.getTrackShouts` — shouts on a track.\n").
-spec get_track_shouts(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_track_shouts(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.shout.getTrackShouts"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).