Skip to main content

lib/rocksky/shout.ex

defmodule Rocksky.Shout do
  @moduledoc "`app.rocksky.shout.*` endpoints."

  alias Rocksky.HTTP

  @doc "Create a shout. Body: `:message`."
  def create_shout(client, body),
    do: HTTP.procedure(client, "app.rocksky.shout.createShout", [], Map.new(body))

  @doc "Reply to a shout. Body: `:shoutId`, `:message`."
  def reply_shout(client, body),
    do: HTTP.procedure(client, "app.rocksky.shout.replyShout", [], Map.new(body))

  @doc "Remove a shout. Params: `:id`."
  def remove_shout(client, params),
    do: HTTP.procedure(client, "app.rocksky.shout.removeShout", params)

  @doc "Report a shout. Body: `:shoutId`, `:reason`."
  def report_shout(client, body),
    do: HTTP.procedure(client, "app.rocksky.shout.reportShout", [], Map.new(body))

  @doc "Shouts on a profile. Params: `:did`, `:limit`, `:offset`."
  def get_profile_shouts(client, params \\ []),
    do: HTTP.query(client, "app.rocksky.shout.getProfileShouts", params)

  @doc "Shouts on an album. Params: `:uri`, `:limit`, `:offset`."
  def get_album_shouts(client, params \\ []),
    do: HTTP.query(client, "app.rocksky.shout.getAlbumShouts", params)

  @doc "Shouts on an artist. Params: `:uri`, `:limit`, `:offset`."
  def get_artist_shouts(client, params \\ []),
    do: HTTP.query(client, "app.rocksky.shout.getArtistShouts", params)

  @doc "Shouts on a track. Params: `:uri`."
  def get_track_shouts(client, params \\ []),
    do: HTTP.query(client, "app.rocksky.shout.getTrackShouts", params)

  @doc "Replies to a shout. Params: `:uri`, `:limit`, `:offset`."
  def get_shout_replies(client, params \\ []),
    do: HTTP.query(client, "app.rocksky.shout.getShoutReplies", params)
end