module RapGenius::Client

Constants

BASE_URL
DOM_TEXT_FORMAT
PLAIN_TEXT_FORMAT

Attributes

access_token[RW]
text_format[R]

Public Instance Methods

document() click to toggle source
# File lib/rapgenius/client.rb, line 30
def document
  @document ||= fetch(@url)
end
fetch(url, params = {}) click to toggle source
# File lib/rapgenius/client.rb, line 34
def fetch(url, params = {})
  warn "[rapgenius] The RapGenius gem is now deprecated in favour of the more " \
       "powerful and more robust Genius gem. See https://github.com/timrogers/" \
       "genius for more details."

  unless RapGenius::Client.access_token
    raise MissingAccessTokenError, "You must specify an access token by setting " \
                                   "RapGenius::Client.access_token"
  end

  response = HTTPClient.get(url, query: {
    text_format: "#{DOM_TEXT_FORMAT},#{PLAIN_TEXT_FORMAT}"
  }.merge(params), headers: {
    'Authorization' => "Bearer #{RapGenius::Client.access_token}",
    'User-Agent' => "rapgenius.rb v#{RapGenius::VERSION}"
  })

  case response.code
  when 404
    raise RapGenius::NotFoundError
  when 401
    raise RapGenius::AuthenticationError
  when 200
    return response.parsed_response
  else
    raise RapGenius::Error, "Received a #{response.code} HTTP response"
  end
end
url=(url) click to toggle source
# File lib/rapgenius/client.rb, line 22
def url=(url)
  unless url =~ /^https?:\/\//
    @url = build_api_url(url)
  else
    @url = url
  end
end

Private Instance Methods

build_api_url(path) click to toggle source
# File lib/rapgenius/client.rb, line 65
def build_api_url(path)
  BASE_URL + path.gsub(/^\//, '')
end