Safe attributes, api limits support
This commit is contained in:
@@ -36,5 +36,9 @@ module Robbie
|
||||
def cache_enabled?
|
||||
@@cache_enabled
|
||||
end
|
||||
|
||||
def free_limits?
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,7 +13,7 @@ module Robbie
|
||||
end
|
||||
|
||||
def tracks
|
||||
@tracks ||= Parsers::Album.find(id).tracks
|
||||
@tracks ||= Parsers::Album.find(id).tracks || []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ module Robbie
|
||||
end
|
||||
|
||||
def albums
|
||||
@albums ||= Parsers::Artist.find(id).albums
|
||||
@albums ||= Parsers::Artist.find(id).albums || []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,5 +7,9 @@ module Robbie
|
||||
Parsers::Track.find(id)
|
||||
end
|
||||
end
|
||||
|
||||
def artists
|
||||
@artists || []
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -36,8 +36,10 @@ module Robbie
|
||||
params = {}
|
||||
params[:id] = data["ids"]["albumId"] if data["ids"]
|
||||
params[:title] = data["title"]
|
||||
if data["album"] && data["originalReleaseDate"].is_a?(String)
|
||||
if data["originalReleaseDate"].is_a?(String)
|
||||
params[:year] = data["originalReleaseDate"].split("-").first
|
||||
elsif data["year"].is_a?(String)
|
||||
params[:year] = data["year"].split("-").first
|
||||
end
|
||||
|
||||
Robbie::Album.new(params)
|
||||
|
||||
@@ -4,6 +4,7 @@ module Robbie
|
||||
include HTTParty
|
||||
base_uri "api.rovicorp.com"
|
||||
format :json
|
||||
@@calls = []
|
||||
|
||||
class << self
|
||||
def sig
|
||||
@@ -25,16 +26,28 @@ module Robbie
|
||||
if File.exist?(cache_file)
|
||||
MultiJson.load(File.open(cache_file).read)
|
||||
else
|
||||
data = get("#{path}?#{params_str}")
|
||||
data = load("#{path}?#{params_str}")
|
||||
File.open(cache_file, "w") do |file|
|
||||
file.write(MultiJson.dump(data)) unless data.nil? or data.empty?
|
||||
end
|
||||
data
|
||||
end
|
||||
else
|
||||
get("#{path}?#{params_str}")
|
||||
load("#{path}?#{params_str}")
|
||||
end
|
||||
end
|
||||
|
||||
def load(uri)
|
||||
if Robbie.free_limits?
|
||||
@@calls = @@calls.length > 5 ? @@calls.slice(-5, 5) : @@calls
|
||||
if @@calls.length > 5 && Time.now.to_f - @@calls.first <= 1.0
|
||||
sleep(1.05 - (Time.now.to_f - @@calls.first))
|
||||
end
|
||||
@@calls << Time.now.to_f
|
||||
end
|
||||
|
||||
get(uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user