Class: OpenBD

Inherits:
Object
  • Object
show all
Defined in:
lib/openbd/client.rb

Constant Summary collapse

API_BASE_URL =
'http://api.openbd.jp/v1/'.freeze

Class Method Summary collapse

Class Method Details

.bulk_get(isbns) ⇒ Object



14
15
16
17
18
# File 'lib/openbd/client.rb', line 14

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

.coverageObject



20
21
22
23
24
# File 'lib/openbd/client.rb', line 20

def coverage
  request_url = prepare_url('coverage')
  response = Net::HTTP.get_response(URI::parse(request_url))
  create_body(response)
end

.create_body(response) ⇒ Object



32
33
34
# File 'lib/openbd/client.rb', line 32

def create_body(response)
  JSON.parse response.body
end

.get(isbns) ⇒ Object



8
9
10
11
12
# File 'lib/openbd/client.rb', line 8

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

.normalize_isbns(isbns) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/openbd/client.rb', line 52

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

.prepare_url(method, isbns = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/openbd/client.rb', line 36

def prepare_url(method, isbns = nil)
  case isbns
  when String
    params = normalize_isbns(isbns)
    "#{API_BASE_URL}#{method}?isbn=#{params}"
  when Numeric
    params = normalize_isbns(isbns)
    "#{API_BASE_URL}#{method}?isbn=#{params}"
  when Array
    params = normalize_isbns(isbns)
    "#{API_BASE_URL}#{method}?isbn=#{params}"
  else
    "#{API_BASE_URL}#{method}"
  end
end

.schemaObject



26
27
28
29
30
# File 'lib/openbd/client.rb', line 26

def schema
  request_url = prepare_url('schema')
  response = Net::HTTP.get_response(URI::parse(request_url))
  create_body(response)
end