Sha256: 0acb02429a77e18fb89764c99c27c1598c5d6dd003b3caf5a007c20ad5e2499c
Contents?: true
Size: 1.53 KB
Versions: 4
Compression:
Stored size: 1.53 KB
Contents
require 'net/http' require 'json' class OpenBD API_BASE_URL = 'http://api.openbd.jp/v1/'.freeze class << self def get(isbns) request_url = prepare_url('get', isbns) response = Net::HTTP.get_response(URI::parse(request_url)) create_body(response).select { |item| item != nil } end def bulk_get(isbns) request_url = prepare_url('get') response = Net::HTTP.post_form(URI::parse(request_url), isbn: normalize_isbns(isbns)) create_body(response).select { |item| item != nil } end def coverage request_url = prepare_url('coverage') response = Net::HTTP.get_response(URI::parse(request_url)) create_body(response) end def schema request_url = prepare_url('schema') response = Net::HTTP.get_response(URI::parse(request_url)) create_body(response) end def create_body(response) JSON.parse response.body end def prepare_url(method, isbns = nil) if isbns.kind_of? String params = normalize_isbns(isbns) "#{API_BASE_URL}#{method}?isbn=#{params}" elsif isbns.kind_of? Array params = normalize_isbns(isbns) "#{API_BASE_URL}#{method}?isbn=#{params}" else "#{API_BASE_URL}#{method}" end end def normalize_isbns(isbns) params = "" if isbns.kind_of? String params << isbns elsif isbns.kind_of? Array isbns.each do |isbn| params << "#{isbn}, " end params.strip!.gsub!(/,$/,'') end params end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
openbd_api-0.3.1 | lib/openbd/client.rb |
openbd_api-0.3.0 | lib/openbd/client.rb |
openbd_api-0.2.1 | lib/openbd/client.rb |
openbd_api-0.2.0 | lib/openbd/client.rb |