tesco_rb 0.1.0 → 0.2.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 +4 -4
- data/README.org +12 -3
- data/Rakefile +5 -5
- data/lib/tesco_rb/client.rb +4 -3
- data/lib/tesco_rb/item_requester.rb +0 -11
- data/lib/tesco_rb/store.rb +0 -3
- data/lib/tesco_rb/store_requester.rb +3 -13
- data/lib/tesco_rb/version.rb +1 -1
- data/lib/tesco_rb.rb +11 -11
- data/tesco_rb.gemspec +8 -7
- metadata +27 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fcff709eff851b88df22d6cc9624d5eae18a604e
|
|
4
|
+
data.tar.gz: 4e04e3a4673b7a745e349d12a346e8e6f5225a92
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 43fd8bd7d29e112fcb4b86db4e1617ce60faa35c24c9f824a6bcd240c3713d312b55eb8cdcad08b90f0c1087a9e765ee14ed0585581f2414edf2f0336ce08c45
|
|
7
|
+
data.tar.gz: 52d4822369f269367f5cc0461c5f15a6b16de1f59602fb79296be4b669299b52267e1e95db29ef2c816fc7eac6613865c09fe2cfa5db67abd36048380f2aa589
|
data/README.org
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
* TescoRb
|
|
2
|
+
A ruby gem for interacting with the [[https://devportal.tescolabs.com/docs/services/][Tesco Api]].
|
|
3
|
+
Currently it supports [[https://devportal.tescolabs.com/docs/services/56c73b1bf205fd0ed81dbe7a][Grocery]] & [[https://devportal.tescolabs.com/docs/services/5731ed21611a4b2968547c5f][Store Location]] end points.
|
|
4
|
+
|
|
5
|
+
|
|
2
6
|
** Usage Examples:
|
|
3
7
|
|
|
4
8
|
#+BEGIN_SRC ruby
|
|
@@ -35,8 +39,13 @@ $ bundle
|
|
|
35
39
|
$ gem install tesco_rb
|
|
36
40
|
#+END_SRC
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- `client.item.search('bananas')` syntax; add `.search` method
|
|
42
|
+
*** Todo
|
|
43
|
+
- ~client.item.search('bananas')~ syntax; add ~.search~ method
|
|
41
44
|
- This would involve creating new 'items' holding class (currently just an Array)
|
|
42
45
|
- DRY / subclass requesters
|
|
46
|
+
- Sort out travis CI
|
|
47
|
+
- More examples about returned objects??
|
|
48
|
+
- OpeningHours Object
|
|
49
|
+
- GeoLocation Object
|
|
50
|
+
- Get rid of linting errors
|
|
51
|
+
- Think about exceptions / error handling
|
data/Rakefile
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
2
|
+
require 'rake/testtask'
|
|
3
3
|
|
|
4
4
|
Rake::TestTask.new(:test) do |t|
|
|
5
|
-
t.libs <<
|
|
6
|
-
t.libs <<
|
|
5
|
+
t.libs << 'test'
|
|
6
|
+
t.libs << 'lib'
|
|
7
7
|
t.test_files = FileList['test/**/*_test.rb']
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
task :
|
|
10
|
+
task default: :test
|
data/lib/tesco_rb/client.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
require_relative 'store_requester'
|
|
2
|
+
require_relative 'item_requester'
|
|
3
3
|
require 'httparty'
|
|
4
4
|
|
|
5
5
|
module TescoRb
|
|
@@ -11,6 +11,7 @@ module TescoRb
|
|
|
11
11
|
base_uri 'https://dev.tescolabs.com/'
|
|
12
12
|
|
|
13
13
|
def initialize(api_key)
|
|
14
|
+
fail 'invalid API Key' unless api_key.is_a?(String) && api_key.length > 10
|
|
14
15
|
@api_key = api_key
|
|
15
16
|
end
|
|
16
17
|
|
|
@@ -28,7 +29,7 @@ module TescoRb
|
|
|
28
29
|
|
|
29
30
|
def default_options
|
|
30
31
|
{ headers:
|
|
31
|
-
{ 'Ocp-Apim-Subscription-Key' =>
|
|
32
|
+
{ 'Ocp-Apim-Subscription-Key' => api_key } }
|
|
32
33
|
end
|
|
33
34
|
end
|
|
34
35
|
end
|
|
@@ -9,8 +9,6 @@ module TescoRb
|
|
|
9
9
|
products.map do |json|
|
|
10
10
|
Item.new(json)
|
|
11
11
|
end
|
|
12
|
-
rescue => e
|
|
13
|
-
p e
|
|
14
12
|
end
|
|
15
13
|
|
|
16
14
|
private
|
|
@@ -23,15 +21,6 @@ module TescoRb
|
|
|
23
21
|
|
|
24
22
|
def request(client, hash_args)
|
|
25
23
|
client.get '/grocery/products', query: hash_args
|
|
26
|
-
rescue => e
|
|
27
|
-
p e
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def parse_json(request)
|
|
31
|
-
JSON.parse(request.body)
|
|
32
|
-
rescue JSON::ParserError => e
|
|
33
|
-
p e
|
|
34
|
-
{ 'results' => [] }
|
|
35
24
|
end
|
|
36
25
|
|
|
37
26
|
end
|
data/lib/tesco_rb/store.rb
CHANGED
|
@@ -4,10 +4,9 @@ module TescoRb
|
|
|
4
4
|
class StoreRequester
|
|
5
5
|
def create_representations(client, hash_args)
|
|
6
6
|
response = request(client, update_args(hash_args))
|
|
7
|
-
|
|
8
|
-
return [] unless
|
|
9
|
-
|
|
10
|
-
json_response['results'].map do |json|
|
|
7
|
+
# Raise Errors here?
|
|
8
|
+
return [] unless response['results']
|
|
9
|
+
response['results'].map do |json|
|
|
11
10
|
Store.new(json.fetch('location'))
|
|
12
11
|
end
|
|
13
12
|
end
|
|
@@ -24,15 +23,6 @@ module TescoRb
|
|
|
24
23
|
|
|
25
24
|
def request(client, hash_args)
|
|
26
25
|
client.get '/locations/search', query: hash_args
|
|
27
|
-
rescue => e
|
|
28
|
-
p e
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def parse_json(request)
|
|
32
|
-
JSON.parse(request.body)
|
|
33
|
-
rescue JSON::ParserError => e
|
|
34
|
-
p e
|
|
35
|
-
{ 'results' => [] }
|
|
36
26
|
end
|
|
37
27
|
|
|
38
28
|
end
|
data/lib/tesco_rb/version.rb
CHANGED
data/lib/tesco_rb.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
require_relative 'tesco_rb/version'
|
|
2
|
+
require_relative 'tesco_rb/client'
|
|
3
|
+
# require_relative 'tesco_rb/store'
|
|
4
|
+
# require_relative 'tesco_rb/store_requester'
|
|
5
|
+
# require_relative 'tesco_rb/representation_helper'
|
|
6
6
|
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
# The entry point to this gem: TescoRb.new(API_KEY)
|
|
8
|
+
module TescoRb
|
|
9
|
+
def self.new(api_key)
|
|
10
|
+
Client.new(api_key)
|
|
11
|
+
end
|
|
12
|
+
end
|
data/tesco_rb.gemspec
CHANGED
|
@@ -10,13 +10,15 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.email = ['wmmclarke@gmail.com']
|
|
11
11
|
|
|
12
12
|
spec.summary = 'A wrapper to the Tesco API'
|
|
13
|
+
spec.description = 'Navigate the Tesco API: https://devportal.tescolabs.com/docs/services/'
|
|
14
|
+
|
|
13
15
|
spec.homepage = 'https://github.com/wmmc/tesco_rb'
|
|
14
16
|
spec.license = 'MIT'
|
|
15
17
|
|
|
16
18
|
if spec.respond_to?(:metadata)
|
|
17
|
-
spec.metadata[
|
|
19
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
18
20
|
else
|
|
19
|
-
raise
|
|
21
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
|
20
22
|
end
|
|
21
23
|
|
|
22
24
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
@@ -29,11 +31,10 @@ Gem::Specification.new do |spec|
|
|
|
29
31
|
spec.add_runtime_dependency 'httparty', '~> 0.14.0'
|
|
30
32
|
|
|
31
33
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
|
32
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.4.0'
|
|
34
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.4', '>= 3.4.0'
|
|
33
35
|
spec.add_development_dependency 'rake', '~> 10.0'
|
|
34
36
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
35
|
-
|
|
36
|
-
spec.add_development_dependency '
|
|
37
|
-
spec.add_development_dependency '
|
|
38
|
-
spec.add_development_dependency 'dotenv', '~> 2.1.1'
|
|
37
|
+
spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.3'
|
|
38
|
+
spec.add_development_dependency 'webmock', '~> 2.1', '>= 2.1.0'
|
|
39
|
+
spec.add_development_dependency 'dotenv', '~> 2.1', '>= 2.1.1'
|
|
39
40
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tesco_rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- William Clarke
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-08-
|
|
11
|
+
date: 2016-08-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httparty
|
|
@@ -43,6 +43,9 @@ dependencies:
|
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.4'
|
|
48
|
+
- - ">="
|
|
46
49
|
- !ruby/object:Gem::Version
|
|
47
50
|
version: 3.4.0
|
|
48
51
|
type: :development
|
|
@@ -50,6 +53,9 @@ dependencies:
|
|
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
54
|
requirements:
|
|
52
55
|
- - "~>"
|
|
56
|
+
- !ruby/object:Gem::Version
|
|
57
|
+
version: '3.4'
|
|
58
|
+
- - ">="
|
|
53
59
|
- !ruby/object:Gem::Version
|
|
54
60
|
version: 3.4.0
|
|
55
61
|
- !ruby/object:Gem::Dependency
|
|
@@ -85,6 +91,9 @@ dependencies:
|
|
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
|
86
92
|
requirements:
|
|
87
93
|
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '3.0'
|
|
96
|
+
- - ">="
|
|
88
97
|
- !ruby/object:Gem::Version
|
|
89
98
|
version: 3.0.3
|
|
90
99
|
type: :development
|
|
@@ -92,6 +101,9 @@ dependencies:
|
|
|
92
101
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
102
|
requirements:
|
|
94
103
|
- - "~>"
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: '3.0'
|
|
106
|
+
- - ">="
|
|
95
107
|
- !ruby/object:Gem::Version
|
|
96
108
|
version: 3.0.3
|
|
97
109
|
- !ruby/object:Gem::Dependency
|
|
@@ -99,6 +111,9 @@ dependencies:
|
|
|
99
111
|
requirement: !ruby/object:Gem::Requirement
|
|
100
112
|
requirements:
|
|
101
113
|
- - "~>"
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: '2.1'
|
|
116
|
+
- - ">="
|
|
102
117
|
- !ruby/object:Gem::Version
|
|
103
118
|
version: 2.1.0
|
|
104
119
|
type: :development
|
|
@@ -106,6 +121,9 @@ dependencies:
|
|
|
106
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
122
|
requirements:
|
|
108
123
|
- - "~>"
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '2.1'
|
|
126
|
+
- - ">="
|
|
109
127
|
- !ruby/object:Gem::Version
|
|
110
128
|
version: 2.1.0
|
|
111
129
|
- !ruby/object:Gem::Dependency
|
|
@@ -113,6 +131,9 @@ dependencies:
|
|
|
113
131
|
requirement: !ruby/object:Gem::Requirement
|
|
114
132
|
requirements:
|
|
115
133
|
- - "~>"
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '2.1'
|
|
136
|
+
- - ">="
|
|
116
137
|
- !ruby/object:Gem::Version
|
|
117
138
|
version: 2.1.1
|
|
118
139
|
type: :development
|
|
@@ -120,9 +141,12 @@ dependencies:
|
|
|
120
141
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
142
|
requirements:
|
|
122
143
|
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '2.1'
|
|
146
|
+
- - ">="
|
|
123
147
|
- !ruby/object:Gem::Version
|
|
124
148
|
version: 2.1.1
|
|
125
|
-
description:
|
|
149
|
+
description: 'Navigate the Tesco API: https://devportal.tescolabs.com/docs/services/'
|
|
126
150
|
email:
|
|
127
151
|
- wmmclarke@gmail.com
|
|
128
152
|
executables: []
|