Sha256: c299a3096b4cde4e1f704a0e2d5071b1a86b64067b6654c7ebf81e6ecc5fed11
Contents?: true
Size: 1.75 KB
Versions: 2
Compression:
Stored size: 1.75 KB
Contents
################################################## # ANN_Wrapper ################################################## require "net/http" require "nokogiri" require 'ann_wrapper/ann_objects' require 'singleton' # wrapper class for ANN API class ANN_Wrapper include Singleton # ANN API anime url ANN_URL = "http://cdn.animenewsnetwork.com/encyclopedia" ANN_API_URL = "#{ANN_URL}/api.xml" ANN_REPORTS_URL = "#{ANN_URL}/reports.xml" # fetch data from ANN API via http GET request # returns Nokogiri or ANN_Error def fetch(url) begin # send http GET request with uri parsed from url resp = Net::HTTP.get_response(URI.parse(url)) # get the response body and try converting to Nokogiri object Nokogiri.XML(resp.body) rescue ANN_Error.new("xml format error, API likely unavailable") end end # attempt to grab error message from XMLObject def get_xml_error(xobj) begin xobj.at_xpath('//ann/warning').content rescue NameError "bad response" end end # fetch anime and convert to ANN_Anime def fetch_ann_anime(id) # append id to API url and send request url = "#{ANN_API_URL}?anime=#{id.to_s}" ann = fetch(url) return ann if ann.is_a?(ANN_Error) anime = ann.at_xpath('//ann/anime') # initialize new ann_anime or error with ann object anime.nil? ? ANN_Error.new(get_xml_error(ann)) : ANN_Anime.new(anime) end # fetch list of titles via reports def fetch_titles(type="anime", nskip=0, nlist=50, name="") url = "#{ANN_REPORTS_URL}?id=155&type=#{type}&nskip=#{nskip}&nlist=#{nlist}" report = fetch(url) return report if report.is_a?(ANN_Error) reports = report.xpath('//report/item') return ANN_Error.new(get_xml_error(report)) if reports.nil? reports.map do |item| ANN_Report.new(item) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ann_wrapper-1.1.2 | lib/ann_wrapper.rb |
ann_wrapper-1.1.1 | lib/ann_wrapper.rb |