Skip to main content

src/rocksky@dropbox.erl

-module(rocksky@dropbox).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/dropbox.gleam").
-export([get_files/0, with_at/2, get_metadata/1, get_temporary_link/1, download_file/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.dropbox.*` — read files from the user's connected Dropbox.\n").

-file("src/rocksky/dropbox.gleam", 8).
?DOC(" `app.rocksky.dropbox.getFiles` — list files. Use `with_at` for a path.\n").
-spec get_files() -> rocksky:request(gleam@dynamic:dynamic_()).
get_files() ->
    rocksky:'query'(
        <<"app.rocksky.dropbox.getFiles"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/dropbox.gleam", 12).
-spec with_at(rocksky:request(HSG), binary()) -> rocksky:request(HSG).
with_at(Req, At) ->
    rocksky:param(Req, <<"at"/utf8>>, At).

-file("src/rocksky/dropbox.gleam", 17).
?DOC(" `app.rocksky.dropbox.getMetadata` — get metadata for a single file.\n").
-spec get_metadata(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_metadata(Path) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.dropbox.getMetadata"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"path"/utf8>>, Path).

-file("src/rocksky/dropbox.gleam", 23).
?DOC(" `app.rocksky.dropbox.getTemporaryLink` — short-lived download link.\n").
-spec get_temporary_link(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_temporary_link(Path) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.dropbox.getTemporaryLink"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"path"/utf8>>, Path).

-file("src/rocksky/dropbox.gleam", 30).
?DOC(
    " `app.rocksky.dropbox.downloadFile` — proxy a file download by id.\n"
    " Returns raw bytes; the SDK still types it as `Dynamic`.\n"
).
-spec download_file(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
download_file(File_id) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.dropbox.downloadFile"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"fileId"/utf8>>, File_id).