Module: RapGenius

Extended by:
Client
Defined in:
lib/rapgenius.rb,
lib/rapgenius/line.rb,
lib/rapgenius/song.rb,
lib/rapgenius/media.rb,
lib/rapgenius/artist.rb,
lib/rapgenius/client.rb,
lib/rapgenius/version.rb,
lib/rapgenius/exceptions.rb

Defined Under Namespace

Modules: Client Classes: Artist, Error, Line, Media, Song

Constant Summary collapse

VERSION =
"1.0.1"

Constants included from Client

Client::BASE_URL

Class Method Summary collapse

Methods included from Client

document, fetch, parse_description, url=

Class Method Details

.search(query, options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rapgenius.rb', line 12

def self.search(query, options={})
  response = Client::HTTPClient.get("/search", query: {q: query}.merge(options))

  response["response"]["hits"].map do |song|
    result = song["result"]

    Song.new(
      id: result["id"],
      name: result["name"],
      artist: Artist.new(
        id: result["primary_artist"]["id"],
        name: result["primary_artist"]["name"],
        type: :primary
      ),
      title: result["title"]
    )
  end
end

.search_by_artist(query) ⇒ Object



31
32
33
# File 'lib/rapgenius.rb', line 31

def self.search_by_artist(query)
  self.search(query, field: "primary_artist_name")
end

.search_by_lyrics(query) ⇒ Object



39
40
41
# File 'lib/rapgenius.rb', line 39

def self.search_by_lyrics(query)
  self.search(query, field: "lyrics")
end

.search_by_title(query) ⇒ Object



35
36
37
# File 'lib/rapgenius.rb', line 35

def self.search_by_title(query)
  self.search(query, field: "title")
end