Skip to main content

src/rocksky@actor.erl

-module(rocksky@actor).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/actor.gleam").
-export([get_profile/1, get_actor_scrobbles/1, get_actor_songs/1, get_actor_artists/1, get_actor_albums/1, get_actor_loved_songs/1, get_actor_playlists/1, get_actor_neighbours/1, get_actor_compatibility/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.actor.*` — profiles and per-actor catalogues.\n"
    "\n"
    " All functions here return a `rocksky.Request(a)`. Pipe it through any\n"
    " `rocksky.*` param helpers you need and finish with `rocksky.send(client)`.\n"
).

-file("src/rocksky/actor.gleam", 13).
?DOC(" `app.rocksky.actor.getProfile` — fetch a profile by DID or handle.\n").
-spec get_profile(binary()) -> rocksky:request(rocksky@generated@types:actor_profile_view_basic()).
get_profile(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getProfile"/utf8>>,
        rocksky@decoders:profile()
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 20).
?DOC(
    " `app.rocksky.actor.getActorScrobbles` — paginated scrobbles for an actor.\n"
    " Returns the `scrobbles` array unwrapped.\n"
).
-spec get_actor_scrobbles(binary()) -> rocksky:request(list(rocksky@generated@types:scrobble_view_basic())).
get_actor_scrobbles(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorScrobbles"/utf8>>,
        rocksky@decoders:unwrap(
            <<"scrobbles"/utf8>>,
            rocksky@decoders:scrobble()
        )
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 29).
?DOC(" `app.rocksky.actor.getActorSongs` — paginated song catalogue for an actor.\n").
-spec get_actor_songs(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_songs(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorSongs"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 35).
?DOC(" `app.rocksky.actor.getActorArtists` — paginated artists for an actor.\n").
-spec get_actor_artists(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_artists(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorArtists"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 41).
?DOC(" `app.rocksky.actor.getActorAlbums` — paginated albums for an actor.\n").
-spec get_actor_albums(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_albums(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorAlbums"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 47).
?DOC(" `app.rocksky.actor.getActorLovedSongs` — paginated loved songs.\n").
-spec get_actor_loved_songs(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_loved_songs(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorLovedSongs"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 53).
?DOC(" `app.rocksky.actor.getActorPlaylists` — paginated playlists for an actor.\n").
-spec get_actor_playlists(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_playlists(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorPlaylists"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 59).
?DOC(" `app.rocksky.actor.getActorNeighbours` — listening-graph neighbours.\n").
-spec get_actor_neighbours(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_neighbours(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorNeighbours"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).

-file("src/rocksky/actor.gleam", 66).
?DOC(
    " `app.rocksky.actor.getActorCompatibility` — compatibility with another actor.\n"
    " Compares the **authenticated** user to `did`.\n"
).
-spec get_actor_compatibility(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_actor_compatibility(Did) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.actor.getActorCompatibility"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"did"/utf8>>, Did).