class ComicVine::API

Public Class Methods

find_detail(type) click to toggle source
# File lib/comic_vine.rb, line 31
def find_detail type
  types.find { |t| t['detail_resource_name'] == type }
end
find_list(type) click to toggle source
# File lib/comic_vine.rb, line 27
def find_list type
  types.find { |t| t['list_resource_name'] == type }
end
get_details(item_type, id, opts=nil) click to toggle source
# File lib/comic_vine.rb, line 66
def get_details item_type, id, opts=nil
  resp = hit_api(build_base_url("#{item_type}/#{find_detail(item_type)['id']}-#{id}"), build_query(opts))
  ComicVine::CVObject.new(resp['results'])
end
get_details_by_url(url) click to toggle source
# File lib/comic_vine.rb, line 71
def get_details_by_url url
  resp = hit_api(url)
  ComicVine::CVObject.new(resp['results'])
end
get_list(list_type, opts=nil) click to toggle source
# File lib/comic_vine.rb, line 61
def get_list list_type, opts=nil
  resp = hit_api(build_base_url(list_type), build_query(opts))
  ComicVine::CVObjectList.new(resp, list_type)
end
key() click to toggle source
# File lib/comic_vine.rb, line 45
def key
  @@key
end
key=(key) click to toggle source
# File lib/comic_vine.rb, line 49
def key= key
  @@key = key
end
method_missing(method_sym, *arguments, &block) click to toggle source
Calls superclass method
# File lib/comic_vine.rb, line 35
def method_missing(method_sym, *arguments, &block)
  if find_list(method_sym.to_s)
    get_list method_sym.to_s, arguments.first
  elsif find_detail(method_sym.to_s)
    get_details method_sym.to_s, *arguments
  elsif
    super
  end
end
types() click to toggle source
# File lib/comic_vine.rb, line 53
def types
  if @@types.nil? || (@@last_type_check + (4 *60 *60)) < Time.now
    @@last_type_check = Time.now
    @@types = hit_api(build_base_url('types'))['results']
  end
  @@types
end

Private Class Methods

build_base_url(action) click to toggle source
# File lib/comic_vine.rb, line 86
def build_base_url action
  @@API_BASE_URL+action+"/"
end
build_query(opts=nil) click to toggle source
# File lib/comic_vine.rb, line 90
def build_query opts=nil
  query = ''
  if !opts.nil? && !opts.empty?
    opts.each do |k,v|
      query << "&#{k.to_s}=#{v}"
    end
  end
  query
end
hit_api(base_url, query="") click to toggle source
# File lib/comic_vine.rb, line 77
def hit_api base_url, query=""
  url = base_url+"?format=json&api_key=#{@@key}"+query
  uri = URI.parse(url)
  resp = Net::HTTP.get(uri)
  presp = MultiJson.load(resp)
  raise CVError, presp['error'] unless presp['status_code'] == 1
  presp
end