Module: Luchadeer::API

Included in:
Client
Defined in:
lib/luchadeer/api.rb

Constant Summary collapse

RESOURCES =
[
  Luchadeer::Accessory,
  Luchadeer::Character,
  Luchadeer::Chat,
  Luchadeer::Company,
  Luchadeer::Concept,
  Luchadeer::Franchise,
  Luchadeer::Game,
  Luchadeer::GameRating,
  Luchadeer::Genre,
  Luchadeer::Location,
  Luchadeer::Object,
  Luchadeer::Person,
  Luchadeer::Platform,
  Luchadeer::Promo,
  Luchadeer::RatingBoard,
  Luchadeer::Region,
  Luchadeer::Release,
  Luchadeer::Review,
  Luchadeer::Theme,
  Luchadeer::UserReview,
  Luchadeer::Video,
  Luchadeer::VideoType
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cache(key, refresh = false) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/luchadeer/api.rb', line 43

def cache(key, refresh = false)
  @cache ||= {}
  @cache.delete(key) if refresh

  if block_given?
    @cache[key] || (@cache[key] = yield)
  else
    @cache.fetch(key)
  end
end

Instance Method Details

#fetch(path, refresh = false, klass = Luchadeer::Resource) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/luchadeer/api.rb', line 54

def fetch(path, refresh = false, klass = Luchadeer::Resource)
  return unless results = cache(path, refresh) do
    get(path).body[:results]
  end

  results.is_a?(Array) ? results.map { |r| klass.new(r) } : klass.new(results)
end