shop_sensor 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fd631022c4d2d6147b42774d1e4bd74243f65861
4
+ data.tar.gz: 885942f735564bc0a7fc75040cd4ba8385f18993
5
+ SHA512:
6
+ metadata.gz: 48c85398ca9269f4247b4c7950d1a80152d9fa78468aca53a763672a89a7ba34a3af321c5c29627124246b9ed8852c2e109589bdda4fc0df2117b72c6371de30
7
+ data.tar.gz: 86fbac9c1d27b9a48f52d8262e658912ada1c9dff65307eb0e6ca219dd318813cfb346babbcebf88cccb6a55189728bd411b54292b17e8607cd114d913f62fe8
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ # Gemfile.lock
30
+ .ruby-version
31
+ .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in shop_sensor.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Arai Hiroki
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Arai Hiroki
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ shop_sensor
2
+ ===========
3
+
4
+ This is unofficial client library of [ShopSense API](http://shopsense.shopstyle.com/shopsense/7234015).
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'shop_sensor'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install shop_sensor
19
+
20
+ ## Usage
21
+
22
+ ### Basic Request
23
+
24
+ ```
25
+ client = ShopSensor::Client.new
26
+ brands_response = client.brands # request to `/brands' endpoint
27
+ products_response = client.products fts: "coat" # search on `/product' endpoint with keyword `coat'
28
+ ```
29
+
30
+ ### Configuration
31
+
32
+ ```
33
+ ShopSensor.configure do |config|
34
+ config.api_key = '<YOUR API KEY>'
35
+ config.locale = :ja_JP # switch `site` parameter, and API returns correspond products.
36
+ end
37
+ ```
38
+
39
+ ## Contributing
40
+
41
+ 1. Fork it ( http://github.com/hiroara/shop_sensor/fork )
42
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
43
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
44
+ 4. Push to the branch (`git push origin my-new-feature`)
45
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
@@ -0,0 +1,16 @@
1
+ require "shop_sensor/version"
2
+
3
+ module ShopSensor
4
+ require 'shop_sensor/client'
5
+ require 'shop_sensor/configuration'
6
+ require 'shop_sensor/missing_configuration'
7
+
8
+ module_function
9
+ def configuration
10
+ @@configuration ||= Configuration.new
11
+ end
12
+
13
+ def configure &block
14
+ configuration.configure &block
15
+ end
16
+ end
@@ -0,0 +1,64 @@
1
+ require 'faraday'
2
+
3
+ module ShopSensor
4
+ class Client
5
+ attr_accessor :configuration
6
+
7
+ API_VERSION = 'v2'
8
+ API_ROOT_PATH = '/api'
9
+ API_HOST = "http://api.shopstyle.com"
10
+
11
+ def initialize
12
+ @configuration = ShopSensor.configuration.clone
13
+ end
14
+
15
+ def get endpoint, options={}
16
+ response = self.request endpoint, options
17
+ JSON.parse response.body
18
+ end
19
+
20
+ def request endpoint, options={}
21
+ raise ShopSensor::MissingConfiguration, :api_key unless @configuration.api_key
22
+ options[:format] ||= 'json'
23
+ path = File.join API_ROOT_PATH, API_VERSION, endpoint
24
+ connection.get path, options
25
+ end
26
+
27
+ def product prod_id
28
+ self.get "/products/#{prod_id}"
29
+ end
30
+
31
+ def configure &block
32
+ @connection = nil
33
+ @configuration.configure &block
34
+ end
35
+
36
+ private
37
+ def connection
38
+ @connection ||= Faraday.new(API_HOST, params: default_params) do |faraday|
39
+ faraday.request :url_encoded # form-encode POST params
40
+ faraday.response :logger # log requests to STDOUT
41
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
42
+ end
43
+ end
44
+
45
+ def default_params
46
+ { pid: configuration.api_key, site: configuration.site }
47
+ end
48
+
49
+ def method_missing method, *args
50
+ return super unless simple_apis.include? method.to_s
51
+ get *([method.to_s] + args)
52
+ end
53
+
54
+ def simple_apis
55
+ [
56
+ 'brands',
57
+ 'products',
58
+ 'categories',
59
+ 'colors',
60
+ 'retailers'
61
+ ]
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ module ShopSensor
2
+ class Configuration
3
+ Config = Struct.new 'Config', :api_key, :locale
4
+
5
+ DEFAULTS = {
6
+ locale: :en_US
7
+ }
8
+ SITES = {
9
+ en_US: 'www.shopstyle.com',
10
+ en_GB: 'www.shopstyle.co.uk',
11
+ fr_FR: 'www.shopstyle.fr',
12
+ de_DE: 'www.shopstyle.de',
13
+ ja_JP: 'www.shopstyle.co.jp',
14
+ en_AU: 'www.shopstyle.com.au',
15
+ en_CA: 'www.shopstyle.ca'
16
+ }
17
+
18
+ def initialize settings={}
19
+ @config = Config.new
20
+ set DEFAULTS.merge(settings)
21
+ end
22
+
23
+ def configure &block
24
+ block.call @config
25
+ self
26
+ end
27
+
28
+ def clear!
29
+ set DEFAULTS
30
+ end
31
+
32
+ def site
33
+ SITES[@config.locale.intern]
34
+ end
35
+
36
+ def clone
37
+ self.class.new self.to_h
38
+ end
39
+
40
+ def to_h
41
+ @config.to_h
42
+ end
43
+
44
+ private
45
+ def method_missing method, *args
46
+ return super unless @config.members.include? method
47
+ @config.public_send method, *args
48
+ end
49
+
50
+ def set settings={}
51
+ @config.members.each { |member| @config[member] = settings[member] }
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,12 @@
1
+ module ShopSensor
2
+ class MissingConfiguration < StandardError
3
+ def initialize *keys
4
+ super
5
+ @keys = keys
6
+ end
7
+
8
+ def message
9
+ "Missing configuration. [#{@keys.map(&:inspect).join(', ')}]"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module ShopSensor
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'shop_sensor/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "shop_sensor"
8
+ spec.version = ShopSensor::VERSION
9
+ spec.authors = ["Arai Hiroki"]
10
+ spec.email = ["hiroara62@gmail.com"]
11
+ spec.summary = %q{Unofficial client library of ShopSense API}
12
+ spec.description = %q{This is unofficial client library of ShopSense API (http://shopsense.shopstyle.com/shopsense/7234015).}
13
+ spec.homepage = "https://github.com/hiroara/shop_sensor"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.6'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'guard-rspec'
25
+ spec.add_development_dependency 'pry-byebug'
26
+ spec.add_development_dependency 'rr'
27
+ spec.add_development_dependency 'hashie'
28
+
29
+ spec.add_dependency 'faraday'
30
+ end
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+ require 'hashie'
4
+
5
+ describe ShopSensor::Client do
6
+ after { ShopSensor.configuration.clear! }
7
+
8
+ let(:client) { described_class.new }
9
+
10
+ shared_context 'some api_key is configured' do
11
+ before { ShopSensor.configure { |config| config.api_key = api_key } }
12
+ let(:api_key) { 'some_api_key' }
13
+ end
14
+
15
+ describe :initialize do
16
+ subject { client }
17
+ it do
18
+ expect(subject).to be_a ShopSensor::Client
19
+ expect(subject.configuration).to be_a ShopSensor::Configuration
20
+ expect(subject.configuration.api_key).to be_nil
21
+ end
22
+
23
+ context 'when api_key is configured' do
24
+ include_context 'some api_key is configured'
25
+ it { expect(subject.configuration.api_key).to eq api_key }
26
+ end
27
+ end
28
+
29
+ shared_context 'mocking API endpoint' do
30
+ before { mock(client).connection.with_no_args.at_least(1) { connection } }
31
+ let(:connection) { Faraday.new(ShopSensor::Client::API_HOST, params: client.send(:default_params)) { |builder| builder.adapter :test, faraday_stubs } }
32
+ let(:faraday_stubs) do
33
+ Faraday::Adapter::Test::Stubs.new do |stub|
34
+ stub.get(File.join("/api/v2", endpoint)) { [200, {}, response_body.to_json] }
35
+ end
36
+ end
37
+ let(:response_body) { { 'some' => 'object' } }
38
+ end
39
+
40
+ describe :request do
41
+ subject { client.request endpoint }
42
+ let(:endpoint) { 'brands' }
43
+ it { expect{ subject }.to raise_error ShopSensor::MissingConfiguration }
44
+
45
+ context 'when api_key is configured' do
46
+ include_context 'some api_key is configured'
47
+ include_context 'mocking API endpoint'
48
+ it do
49
+ expect{ subject }.not_to raise_error
50
+ expect(JSON.parse(subject.body)['some']).to eq 'object'
51
+ end
52
+
53
+ describe :params do
54
+ subject { client.request(endpoint).env.params }
55
+ it do
56
+ expect(subject['site']).to eq client.configuration.site
57
+ expect(subject['pid']).to eq api_key
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ describe :get do
64
+ include_context 'some api_key is configured'
65
+ include_context 'mocking API endpoint'
66
+ let(:endpoint) { '/brands' }
67
+ subject { client.get endpoint }
68
+ it { expect(subject).to eq response_body }
69
+ end
70
+
71
+ describe :simple_apis do
72
+ include_context 'some api_key is configured'
73
+ include_context 'mocking API endpoint'
74
+ let(:endpoint) { '/colors' }
75
+ subject { client.colors }
76
+ it { expect(subject).to eq response_body }
77
+ end
78
+
79
+ describe :product do
80
+ include_context 'some api_key is configured'
81
+ include_context 'mocking API endpoint'
82
+ let(:endpoint) { "/products/#{prod_id}" }
83
+ let(:prod_id) { '359131344' }
84
+ subject { client.product prod_id }
85
+ it { expect(subject).to eq response_body }
86
+ end
87
+
88
+ describe :configure do
89
+ subject { client.configuration.configure { |config| config.locale = :fr_FR } }
90
+ it { expect{ subject }.to change{ client.configuration.locale }.from(:en_US).to(:fr_FR) }
91
+ end
92
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe ShopSensor::Configuration do
4
+ after { ShopSensor.configuration.clear! }
5
+
6
+ let(:configuration) { ShopSensor.configuration }
7
+ let(:api_key) { 'some_api_key' }
8
+
9
+ describe :initialize do
10
+ subject { described_class.new }
11
+ it do
12
+ expect(subject).to be_a ShopSensor::Configuration
13
+ expect(subject.locale).to eq :en_US
14
+ end
15
+ end
16
+
17
+ describe :configure do
18
+ subject do
19
+ configuration.configure do |config|
20
+ config.api_key = api_key
21
+ end
22
+ end
23
+ it do
24
+ expect{ subject }.to change{ configuration.api_key }.from(nil).to api_key
25
+ expect(subject).to be_a ShopSensor::Configuration
26
+ end
27
+ end
28
+
29
+ describe :clear! do
30
+ before { configuration.configure { |config| config.api_key = 'some_api_key' } }
31
+ subject { configuration.clear! }
32
+ it { expect{ subject }.to change{ configuration.api_key }.to nil }
33
+ end
34
+
35
+ describe :site do
36
+ subject { configuration.site }
37
+ context 'when default settings' do
38
+ it { expect(subject).to eq ShopSensor::Configuration::SITES[:en_US] }
39
+ end
40
+ context 'when custom settings' do
41
+ before { ShopSensor.configure { |config| config.locale = :ja_JP } }
42
+ it { expect(subject).to eq ShopSensor::Configuration::SITES[:ja_JP] }
43
+ end
44
+ end
45
+
46
+ describe :clone do
47
+ before { ShopSensor.configure { |config| config.api_key = api_key } }
48
+ after { ShopSensor.configuration.clear! }
49
+ let(:api_key) { 'some_api_key' }
50
+
51
+ subject { configuration.clone }
52
+ it { expect(subject.to_h).to eq configuration.to_h }
53
+
54
+ describe 'deep clone' do
55
+ let(:other_api_key) { 'other_api_key' }
56
+ it do
57
+ expect{ subject.configure{ |config| config.api_key = other_api_key } }.
58
+ not_to change{ configuration.api_key }.from(api_key)
59
+ expect(subject.api_key).to eq other_api_key
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe ShopSensor do
4
+ it { expect(ShopSensor::VERSION).to eq "0.0.1" }
5
+
6
+ describe :configure do
7
+ subject { ShopSensor.configure &block }
8
+ let(:block) { proc { |config| @config = config } }
9
+ it { expect{ subject }.to change{ @config }.from nil }
10
+ end
11
+
12
+ describe :configuration do
13
+ subject { ShopSensor.configuration }
14
+ it { expect(subject).to be_a ShopSensor::Configuration }
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'shop_sensor'
4
+ require 'rr'
5
+
6
+ RSpec.configure do |config|
7
+ config.mock_framework = :rr
8
+ end
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shop_sensor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Arai Hiroki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hashie
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: faraday
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: This is unofficial client library of ShopSense API (http://shopsense.shopstyle.com/shopsense/7234015).
126
+ email:
127
+ - hiroara62@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - Gemfile
135
+ - Guardfile
136
+ - LICENSE
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - lib/shop_sensor.rb
141
+ - lib/shop_sensor/client.rb
142
+ - lib/shop_sensor/configuration.rb
143
+ - lib/shop_sensor/missing_configuration.rb
144
+ - lib/shop_sensor/version.rb
145
+ - shop_sensor.gemspec
146
+ - spec/shop_sensor/client_spec.rb
147
+ - spec/shop_sensor/configuration_spec.rb
148
+ - spec/shop_sensor_spec.rb
149
+ - spec/spec_helper.rb
150
+ homepage: https://github.com/hiroara/shop_sensor
151
+ licenses:
152
+ - MIT
153
+ metadata: {}
154
+ post_install_message:
155
+ rdoc_options: []
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 2.2.2
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Unofficial client library of ShopSense API
174
+ test_files:
175
+ - spec/shop_sensor/client_spec.rb
176
+ - spec/shop_sensor/configuration_spec.rb
177
+ - spec/shop_sensor_spec.rb
178
+ - spec/spec_helper.rb