Skip to main content

src/rocksky@mirror.erl

-module(rocksky@mirror).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/mirror.gleam").
-export([get_sources/0, put_source/1, with_enabled/2, with_external_username/2, with_api_key/2]).

-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.mirror.*` — configure external scrobble mirroring sources.\n").

-file("src/rocksky/mirror.gleam", 9).
?DOC(" `app.rocksky.mirror.getMirrorSources` — list the user's mirror sources.\n").
-spec get_sources() -> rocksky:request(gleam@dynamic:dynamic_()).
get_sources() ->
    rocksky:'query'(
        <<"app.rocksky.mirror.getMirrorSources"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/mirror.gleam", 15).
?DOC(
    " `app.rocksky.mirror.putMirrorSource` — upsert a mirror source. Refine\n"
    " with `with_enabled`, `with_external_username`, `with_api_key`.\n"
).
-spec put_source(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
put_source(Provider) ->
    Body = gleam@json:object(
        [{<<"provider"/utf8>>, gleam@json:string(Provider)}]
    ),
    _pipe = rocksky:procedure(
        <<"app.rocksky.mirror.putMirrorSource"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:body(_pipe, Body).

-file("src/rocksky/mirror.gleam", 21).
-spec with_enabled(rocksky:request(HUT), boolean()) -> rocksky:request(HUT).
with_enabled(Req, Enabled) ->
    rocksky:bool_param(Req, <<"enabled"/utf8>>, Enabled).

-file("src/rocksky/mirror.gleam", 25).
-spec with_external_username(rocksky:request(HUW), binary()) -> rocksky:request(HUW).
with_external_username(Req, Username) ->
    rocksky:param(Req, <<"externalUsername"/utf8>>, Username).

-file("src/rocksky/mirror.gleam", 29).
-spec with_api_key(rocksky:request(HUZ), binary()) -> rocksky:request(HUZ).
with_api_key(Req, Key) ->
    rocksky:param(Req, <<"apiKey"/utf8>>, Key).