40 lines
1001 B
Ruby
40 lines
1001 B
Ruby
class NicoSeigaApiClient
|
|
BASE_URL = "http://seiga.nicovideo.jp/api"
|
|
attr_reader :user_id, :moniker, :image_id, :title, :desc
|
|
|
|
def initialize(illust_id)
|
|
get_illust(illust_id)
|
|
get_artist(user_id)
|
|
end
|
|
|
|
def get_illust(id)
|
|
uri = "#{BASE_URL}/illust/info?id=#{id}"
|
|
resp = HTTParty.get(uri, Danbooru.config.httparty_options)
|
|
if resp.success?
|
|
parse_illust_xml_response(resp.body)
|
|
end
|
|
end
|
|
|
|
def get_artist(id)
|
|
uri = "#{BASE_URL}/user/info?id=#{id}"
|
|
resp = HTTParty.get(uri, Danbooru.config.httparty_options)
|
|
if resp.success?
|
|
parse_artist_xml_response(resp.body)
|
|
end
|
|
end
|
|
|
|
def parse_artist_xml_response(text)
|
|
doc = Hash.from_xml(text)
|
|
@moniker = doc["response"]["user"]["nickname"]
|
|
end
|
|
|
|
def parse_illust_xml_response(text)
|
|
doc = Hash.from_xml(text)
|
|
image = doc["response"]["image"]
|
|
@image_id = image["id"].to_i
|
|
@user_id = image["user_id"].to_i
|
|
@title = image["title"]
|
|
@desc = image["description"]
|
|
end
|
|
end
|