lib/spotify/follow.ex

defmodule Spotify.Follow do
  @moduledoc """
  Follow users or artists
  """

  use Spotify.Responder
  import Spotify.Helpers
  alias Spotify.Client

  @doc """
  Add the current user as a follower of one or more artists or other Spotify users.
  [Spotify Documentation](https://developer.spotify.com/web-api/follow-artists-users/)

  **Required Params**: `type`, `ids`

  **Method**: `PUT`

      Spotify.Follow.follow(conn, type: "artist", ids: "1,4")
      # => :ok

  """
  def follow(conn, params) do
    url = follow_url(params)
    conn |> Client.put(url) |> handle_response
  end

  @doc """
  Add the current user as a follower of one or more artists or other Spotify users.

      iex> Spotify.Follow.follow_url(ids: "1,4", type: "artist")
      "https://api.spotify.com/v1/me/following?ids=1%2C4&type=artist"
  """
  def follow_url(params) do
    "https://api.spotify.com/v1/me/following" <> query_string(params)
  end

  # The only endpoint has an empty response
  def build_response(body), do: body
end