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
search(res, query, opts={})
click to toggle source
# File lib/comic_vine.rb, line 20 def search res, query, opts={} opts[:resources] = res.gsub " ", "" opts[:query] = CGI::escape query resp = hit_api(build_base_url("search"), build_query(opts)) ComicVine::CVSearchList.new(resp, res, query) 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