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
-
#initialize(adapter: :net_http, response_parser: :json) ⇒ Client
constructor
A new instance of Client.
- #normalize_isbns(isbns) ⇒ Object
- #post_request(method:, params:, response_class:) ⇒ Object
- #schema ⇒ Object
Constructor Details
#initialize(adapter: :net_http, response_parser: :json) ⇒ Client
Returns a new instance of Client.
8 9 10 11 |
# File 'lib/openbd/client.rb', line 8 def initialize(adapter: :net_http, response_parser: :json) @adapter = adapter @response_parser = response_parser end |
Instance Method Details
#bulk_get(isbns) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/openbd/client.rb', line 21 def bulk_get(isbns) post_request( method: PATH_TO_GET, params: { isbn: normalize_isbns(isbns) }, response_class: ::OpenBD::Responses::Get ) end |
#connection ⇒ Object
45 46 47 48 49 50 |
# File 'lib/openbd/client.rb', line 45 def connection @connection ||= ::Faraday::Connection.new(url: API_BASE_URL) do |connection| connection.adapter @adapter connection.response @response_parser end end |
#coverage ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/openbd/client.rb', line 29 def coverage get_request( method: PATH_TO_COVERAGE, params: nil, response_class: ::OpenBD::Responses::Coverage ) end |
#get(isbns) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/openbd/client.rb', line 13 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
52 53 54 55 |
# File 'lib/openbd/client.rb', line 52 def get_request(method:, params:, response_class:) faraday_response = connection.get(method, params) response_class.new(faraday_response) end |
#normalize_isbns(isbns) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/openbd/client.rb', line 65 def normalize_isbns(isbns) case isbns when String isbns when Numeric isbns.to_s when Array isbns.join(",") end end |
#post_request(method:, params:, response_class:) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/openbd/client.rb', line 57 def post_request(method:, params:, response_class:) faraday_response = connection.post do |req| req.url method req.body = "isbn=#{params[:isbn]}" end response_class.new(faraday_response) end |
#schema ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/openbd/client.rb', line 37 def schema get_request( method: PATH_TO_SCHEMA, params: nil, response_class: ::OpenBD::Responses::Schema ) end |