Class: OpenBD::Client

Inherits:
Object
  • Object
show all
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

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

#connectionObject



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

#coverageObject



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

#schemaObject



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