Sha256: 6e656e072194efa97b3dcf048108f98b113778a9e4cb2ef5ea5d590bf024d782
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
module MyAnimeList class ApiException < Exception; end class Api BASE_URL = 'https://myanimelist.net/api' def search(type, name) body = request("#{BASE_URL}/#{type}/search.xml?q=#{CGI::escape name}") Serializer.new(body).entry end def add(type, id, params = {}) request("#{BASE_URL}/#{type}list/add/#{id}.xml", params) == 'Created' end def update(type, id, params = {}) request("#{BASE_URL}/#{type}list/update/#{id}.xml", params) == 'Updated' end def remove(type, id) request("#{BASE_URL}/#{type}list/delete/#{id}.xml") == 'Deleted' end def verify_credentials! body = request("#{BASE_URL}/account/verify_credentials.xml") Serializer.new(body).call end private def request(url, params = {}) RestClient::Request.new( build_params(url, params) ).execute do |resp| if resp.code == 200 || resp.code == 201 resp.body else raise ApiException.new(resp.body) end end end def build_params(url, params) { method: :get, url: url, user: Credentials.username, password: Credentials.password, content_type: :xml }.merge( headers(params) ) end def headers(params) return {} if params.empty? { headers: { params: { data: XmlSimple.xml_out(params, rootname: 'entry', noattr: true, noindent: true, keeproot: false) } } } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
myanimelist-1.0.0 | lib/myanimelist/api.rb |