Class: OpenBD::Client
- Inherits:
-
Object
- Object
- OpenBD::Client
- Defined in:
- lib/openbd/client.rb
Constant Summary collapse
- API_BASE_URL =
'http://api.openbd.jp/'.freeze
- PATH_TO_GET =
'v1/get'- PATH_TO_COVERAGE =
'v1/coverage'- PATH_TO_SCHEMA =
'v1/schema'
Instance Method Summary collapse
- #bulk_get(isbns) ⇒ Object
- #connection ⇒ Object
- #coverage ⇒ Object
- #get(isbns) ⇒ Object
- #get_request(method:, params:, response_class:) ⇒ Object
- #normalize_isbns(isbns) ⇒ Object
- #post_request(method, params) ⇒ Object
- #schema ⇒ Object
Instance Method Details
#bulk_get(isbns) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/openbd/client.rb', line 16 def bulk_get(isbns) get_request( method: PATH_TO_GET, params: { isbn: normalize_isbns(isbns) }, response_class: ::OpenBD::Responses::Get ) end |
#connection ⇒ Object
40 41 42 43 44 45 |
# File 'lib/openbd/client.rb', line 40 def connection @connection ||= ::Faraday::Connection.new(url: API_BASE_URL) do |connection| connection.adapter :net_http connection.response :json end end |
#coverage ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/openbd/client.rb', line 24 def coverage get_request( method: PATH_TO_COVERAGE, params: nil, response_class: ::OpenBD::Responses::Coverage ) end |
#get(isbns) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/openbd/client.rb', line 8 def get(isbns) get_request( method: PATH_TO_GET, params: { isbn: normalize_isbns(isbns) }, response_class: ::OpenBD::Responses::Get ) end |
#get_request(method:, params:, response_class:) ⇒ Object
47 48 49 50 |
# File 'lib/openbd/client.rb', line 47 def get_request(method:, params:, response_class:) faraday_response = connection.get(method, params) response_class.new(faraday_response) end |
#normalize_isbns(isbns) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/openbd/client.rb', line 59 def normalize_isbns(isbns) case isbns when String isbns when Numeric isbns when Array params = "" isbns.each do |isbn| params << "#{isbn}, " end params.strip!.gsub(/,$/,'') end end |
#post_request(method, params) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/openbd/client.rb', line 52 def post_request(method, params) faraday_response = connection.post do |req| req.url method req.body = "isbn=#{normalize_isbns(params[:isbn])}" end end |
#schema ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/openbd/client.rb', line 32 def schema get_request( method: PATH_TO_SCHEMA, params: nil, response_class: ::OpenBD::Responses::Schema ) end |