Packages

Gleam SDK for Rockbox Zig — pipe-friendly client for the rockboxd GraphQL API

Current section

Files

Jump to
rockbox src rockbox@devices.erl
Raw

src/rockbox@devices.erl

-module(rockbox@devices).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rockbox/devices.gleam").
-export([list/1, get/2, connect/2, disconnect/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(" Discovery and routing for Chromecast / AirPlay / UPnP / Snapcast endpoints.\n").
-file("src/rockbox/devices.gleam", 15).
-spec list(rockbox:client()) -> {ok, list(rockbox@types:device())} |
{error, rockbox@error:error()}.
list(Client) ->
Decoder = begin
gleam@dynamic@decode:field(
<<"devices"/utf8>>,
gleam@dynamic@decode:list(rockbox@types:device_decoder()),
fun(Devices) -> gleam@dynamic@decode:success(Devices) end
)
end,
rockbox:'query'(
Client,
<<<<"query Devices { devices { "/utf8,
"
id name host ip port service app isConnected
baseUrl isCastDevice isSourceDevice isCurrentDevice
"/utf8>>/binary,
" } }"/utf8>>,
gleam@json:object([]),
Decoder
).
-file("src/rockbox/devices.gleam", 28).
-spec get(rockbox:client(), binary()) -> {ok,
gleam@option:option(rockbox@types:device())} |
{error, rockbox@error:error()}.
get(Client, Id) ->
Decoder = begin
gleam@dynamic@decode:field(
<<"device"/utf8>>,
gleam@dynamic@decode:optional(rockbox@types:device_decoder()),
fun(Device) -> gleam@dynamic@decode:success(Device) end
)
end,
rockbox:'query'(
Client,
<<<<"query Device($id: String!) { device(id: $id) { "/utf8,
"
id name host ip port service app isConnected
baseUrl isCastDevice isSourceDevice isCurrentDevice
"/utf8>>/binary,
" } }"/utf8>>,
gleam@json:object([{<<"id"/utf8>>, gleam@json:string(Id)}]),
Decoder
).
-file("src/rockbox/devices.gleam", 44).
-spec connect(rockbox:client(), binary()) -> {ok, nil} |
{error, rockbox@error:error()}.
connect(Client, Id) ->
rockbox:execute(
Client,
<<"mutation ConnectDevice($id: String!) { connect(id: $id) }"/utf8>>,
gleam@json:object([{<<"id"/utf8>>, gleam@json:string(Id)}])
).
-file("src/rockbox/devices.gleam", 52).
-spec disconnect(rockbox:client(), binary()) -> {ok, nil} |
{error, rockbox@error:error()}.
disconnect(Client, Id) ->
rockbox:execute(
Client,
<<"mutation DisconnectDevice($id: String!) { disconnect(id: $id) }"/utf8>>,
gleam@json:object([{<<"id"/utf8>>, gleam@json:string(Id)}])
).