abebooks 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 30aeccdbb59fe124f87ef8969414135955fdce82
4
- data.tar.gz: fc26c89f9261b0092ba6205efb0a81ee28bfb6d4
2
+ SHA256:
3
+ metadata.gz: 53f1fe49d38afaf16961210b19dfb7c0891fe97e890258d3c6a1259c786b400b
4
+ data.tar.gz: 36d28b71f9ab4d0ccb3f4a99e1567e572cf6e7424e90f12cdecc8153080d6135
5
5
  SHA512:
6
- metadata.gz: 90e69be60169918e73bfa4ad8f1eb7faf7a2b1e6a3f1bd32558d35cfc7f6547f30ef46e7ffde5e018008fc421fc6768a8ea3b24176ca6226b3297a084788310e
7
- data.tar.gz: fcfd560873815629d74d09ee71956f62bf326e64839898c1cc96eebc0e9007bcda029bf3ff8e4b4ab5ca07a545e10dec4037fc9b56e299f46631d0c989498ee4
6
+ metadata.gz: 7e3f6268509818e1ba69345e6f5547df713668de1526a5e4607438c0bac3172c88724b9529476a252fb9acdebb70704ae29afae4cf08736d772a17c9024d4310
7
+ data.tar.gz: 4bdfe16a76f56a710c14aab0d89a567b64a1df7c26ce2d91d4fadebecdd39f5987c26035c77acfc272893c3e3e061e7660422d14ec5b87f69fdda77a1e22d462
data/README.md CHANGED
@@ -10,23 +10,17 @@ Create a request:
10
10
  req = Abebooks.new(client_key)
11
11
  ```
12
12
 
13
- Run a query:
13
+ Run a query and parse response into a Ruby Hash:
14
14
 
15
15
  ```ruby
16
- params = { author: 'Foucault' }
17
- res = req.get(query: params)
16
+ response = request.get(author: 'Tolkien')
17
+ response.to_h
18
18
  ```
19
19
 
20
- Parse the response into a Ruby Hash:
20
+ Or pass the response into a custom parser:
21
21
 
22
22
  ```ruby
23
- res.to_h
23
+ MyParser.new(res.to_s)
24
24
  ```
25
25
 
26
- Or pass its body into a custom parser:
27
-
28
- ```ruby
29
- MyParser.new(res.body)
30
- ```
31
-
32
- [1]: http://www.abebooks.com/docs/AffiliateProgram/WebServices/end-user-guide.pdf
26
+ [1]: https://www.abebooks.com/docs/AffiliateProgram/WebServices/end-user-guide.pdf
data/lib/abebooks.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'forwardable'
2
- require 'abebooks/request'
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+ require "abebooks/request"
3
5
 
4
- # Wrapper to the Abebooks SWS API
5
6
  module Abebooks
6
7
  class << self
7
8
  extend Forwardable
@@ -1,22 +1,22 @@
1
- require 'excon'
2
- require 'abebooks/response'
1
+ # frozen_string_literal: true
2
+
3
+ require "http"
4
+ require "abebooks/response"
3
5
 
4
6
  module Abebooks
5
- # Runs a search query
6
7
  class Request
7
- def initialize(client_key = ENV['ABEBOOKS_CLIENT_KEY'])
8
- @client_key = client_key
9
- end
8
+ URL = "https://search2.abebooks.com/search"
10
9
 
11
- def get(opts)
12
- opts.fetch(:query).update('clientkey' => @client_key)
13
- Response.new(connection.get(opts))
10
+ def initialize(client_key = ENV["ABEBOOKS_CLIENT_KEY"])
11
+ @client_key = client_key
14
12
  end
15
13
 
16
- private
14
+ def get(parameters = {})
15
+ response = HTTP.use(:auto_inflate)
16
+ .headers("Accept-Encoding" => "gzip")
17
+ .get(URL, params: parameters.merge("clientkey" => @client_key))
17
18
 
18
- def connection
19
- Excon.new('http://search2.abebooks.com/search', expects: 200)
19
+ Response.new(response)
20
20
  end
21
21
  end
22
22
  end
@@ -1,11 +1,20 @@
1
- require 'delegate'
2
- require 'multi_xml'
1
+ # frozen_string_literal: true
2
+
3
+ require "delegate"
4
+ require "ox"
3
5
 
4
6
  module Abebooks
5
- # Parses the API response
6
7
  class Response < SimpleDelegator
8
+ class HTTPStatus < StandardError; end
9
+
7
10
  def to_h
8
- MultiXml.parse(body)
11
+ raise HTTPStatus unless ok?
12
+
13
+ Ox.load(to_s, mode: :hash)
14
+ end
15
+
16
+ def ok?
17
+ code == 200
9
18
  end
10
19
  end
11
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Abebooks
2
- VERSION = '1.0.0'.freeze
4
+ VERSION = "2.0.0"
3
5
  end
@@ -1,19 +1,24 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/abebooks'
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require_relative "../lib/abebooks"
3
5
 
4
6
  class TestAbebooks < Minitest::Test
5
- def setup
6
- Excon.defaults[:mock] = true
7
- Excon.stub({}, body: '<foo>bar</foo>')
8
- end
7
+ def test_ok
8
+ skip unless ENV.key?("ABEBOOKS_CLIENT_KEY")
9
9
 
10
- def teardown
11
- Excon.stubs.clear
10
+ request = Abebooks.new
11
+ response = request.get(author: "Tolkien")
12
+
13
+ assert response.ok?
14
+ refute_empty response.to_h
12
15
  end
13
16
 
14
- def test_fetches_parsable_response
15
- req = Abebooks::Request.new
16
- res = req.get(query: {})
17
- refute_empty res.to_h
17
+ def test_unauthorized
18
+ request = Abebooks.new("foo")
19
+ response = request.get
20
+
21
+ refute response.ok?
22
+ assert_raises { response.to_h }
18
23
  end
19
24
  end
metadata CHANGED
@@ -1,37 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abebooks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego Marquez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-23 00:00:00.000000000 Z
11
+ date: 2021-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: multi_xml
14
+ name: http
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.0
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ox
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.6.0
40
+ version: '2.0'
27
41
  - !ruby/object:Gem::Dependency
28
- name: excon
42
+ name: minitest
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
- type: :runtime
48
+ type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
@@ -39,21 +53,21 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: minitest
56
+ name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '5.0'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '5.0'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rake
70
+ name: standardrb
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
@@ -66,7 +80,7 @@ dependencies:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
- description:
83
+ description:
70
84
  email:
71
85
  - marquez.diego.e@gmail.com
72
86
  executables: []
@@ -84,7 +98,7 @@ homepage: https://github.com/diegomarquez/abebooks
84
98
  licenses:
85
99
  - MIT
86
100
  metadata: {}
87
- post_install_message:
101
+ post_install_message:
88
102
  rdoc_options: []
89
103
  require_paths:
90
104
  - lib
@@ -92,16 +106,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - ">="
94
108
  - !ruby/object:Gem::Version
95
- version: '1.9'
109
+ version: '2.6'
96
110
  required_rubygems_version: !ruby/object:Gem::Requirement
97
111
  requirements:
98
112
  - - ">="
99
113
  - !ruby/object:Gem::Version
100
114
  version: '0'
101
115
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.6.8
104
- signing_key:
116
+ rubygems_version: 3.2.15
117
+ signing_key:
105
118
  specification_version: 4
106
119
  summary: A Ruby wrapper to the Abebooks SWS API
107
120
  test_files: