vacuum 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/README.md +11 -113
  2. data/lib/vacuum/request.rb +66 -0
  3. data/lib/vacuum/version.rb +1 -1
  4. data/lib/vacuum.rb +5 -38
  5. data/test/request_test.rb +18 -0
  6. metadata +24 -96
  7. data/lib/vacuum/endpoint/base.rb +0 -58
  8. data/lib/vacuum/endpoint/mws.rb +0 -59
  9. data/lib/vacuum/endpoint/product_advertising.rb +0 -34
  10. data/lib/vacuum/mws.rb +0 -8
  11. data/lib/vacuum/product_advertising.rb +0 -7
  12. data/lib/vacuum/request/base.rb +0 -109
  13. data/lib/vacuum/request/mws.rb +0 -24
  14. data/lib/vacuum/request/product_advertising.rb +0 -101
  15. data/lib/vacuum/request/signature/authentication.rb +0 -32
  16. data/lib/vacuum/request/signature/builder.rb +0 -70
  17. data/lib/vacuum/request/utils.rb +0 -24
  18. data/lib/vacuum/response/base.rb +0 -57
  19. data/lib/vacuum/response/mws.rb +0 -7
  20. data/lib/vacuum/response/product_advertising.rb +0 -19
  21. data/lib/vacuum/response/utils.rb +0 -48
  22. data/spec/fixtures/product_advertising +0 -1
  23. data/spec/spec_helper.rb +0 -15
  24. data/spec/support/shared_examples/endpoint.rb +0 -43
  25. data/spec/support/shared_examples/request.rb +0 -142
  26. data/spec/support/shared_examples/response.rb +0 -51
  27. data/spec/vacuum/endpoint/base_spec.rb +0 -19
  28. data/spec/vacuum/endpoint/mws_spec.rb +0 -47
  29. data/spec/vacuum/endpoint/product_advertising_spec.rb +0 -25
  30. data/spec/vacuum/request/base_spec.rb +0 -22
  31. data/spec/vacuum/request/mws_spec.rb +0 -26
  32. data/spec/vacuum/request/product_advertising_spec.rb +0 -118
  33. data/spec/vacuum/request/signature/authentication_spec.rb +0 -30
  34. data/spec/vacuum/request/signature/builder_spec.rb +0 -76
  35. data/spec/vacuum/request/utils_spec.rb +0 -23
  36. data/spec/vacuum/response/base_spec.rb +0 -38
  37. data/spec/vacuum/response/product_advertising_spec.rb +0 -57
  38. data/spec/vacuum/response/utils_spec.rb +0 -42
data/README.md CHANGED
@@ -1,126 +1,24 @@
1
1
  # Vacuum
2
2
 
3
- [![travis] [1]] [2]
3
+ [![travis][1]][2]
4
4
 
5
- Vacuum is a thin Ruby wrapper to various [Amazon Web Services (AWS) APIs] [3].
5
+ Vacuum is a thin Ruby wrapper to the [Amazon Product Advertising API][3].
6
6
 
7
- ![vacuum] [4]
8
-
9
- ## Installation
10
-
11
- ```sh
12
- gem install vacuum
13
- ```
14
-
15
- ## Amazon Product Advertising API
16
-
17
- Vacuum knows the [Amazon Product Advertising API] [5] inside out.
18
-
19
- Set up a request:
7
+ ![vacuum][4]
20
8
 
21
9
  ```ruby
22
- req = Vacuum.new :product_advertising
10
+ request = Vacuum.new
23
11
 
24
- req.configure do |config|
25
- config.key 'key'
26
- config.secret 'secret'
27
- config.tag 'tag'
28
- end
29
- ```
30
-
31
- Build and run a search:
32
-
33
- ```ruby
34
- req.build operation: 'ItemSearch',
35
- search_index: 'Books',
36
- keywords: 'Deleuze'
37
- res = req.get
38
-
39
- res.valid? or raise res.code
12
+ request.configure key: 'foo',
13
+ secret: 'secret',
14
+ tag: 'foo-bar'
40
15
 
41
- p res.body
42
- ```
43
-
44
- Or run the same search less verbosely:
45
-
46
- ```ruby
47
- res = req.search :books, 'Deleuze'
48
- p res.body
49
- ```
50
-
51
- The response wraps a [Nokogiri] [6] document:
52
-
53
- ```ruby
54
- res.xml
55
- ```
56
-
57
- And lets you drop down to any node:
58
-
59
- ```ruby
60
- res.find('Item') do |item|
61
- p item
62
- end
16
+ request.get query: { 'Operation' => 'ItemSearch',
17
+ 'SearchIndex' => 'Books',
18
+ 'Keywords' => 'Architecture' }
63
19
  ```
64
20
 
65
- Browse more examples [here] [7].
66
-
67
- ## Amazon Marketplace Web Services API
68
-
69
- The wrapper to the [Amazon Marketplace Web Services API] [8] is a
70
- work-in-progress.
71
-
72
- Set up a request to the Products API:
73
-
74
- ```ruby
75
- req = Vacuum.new(:mws_products) do |config|
76
- config.locale 'US'
77
- config.key 'key'
78
- config.secret 'secret'
79
- config.marketplace 'marketplace'
80
- config.seller 'seller'
81
- end
82
- ```
83
-
84
- Get the lowest offers for a single ASIN:
85
-
86
- ```ruby
87
- req.build 'Action' => 'GetLowestOfferListingsForASIN',
88
- 'ASINList.ASIN.1' => '0231081596'
89
- offers = req.get.find 'GetLowestOfferListingsForASINResult'
90
- ```
91
-
92
- I will at some point throw in some syntactic sugar for common operations.
93
-
94
- ## Other AWS APIs
95
-
96
- Vacuum should work with all AWS libraries, including EC2, S3, IAM, SimpleDB,
97
- SQS, SNS, SES, and ELB. Most of these already have popular Ruby
98
- implementations. If you need to implement one using Vacuum, please fork and
99
- send a pull request when done.
100
-
101
- ## HTTP Client Adapters
102
-
103
- You can use any of the alternative adapters [Faraday] [9] supports:
104
-
105
- ```ruby
106
- req.connection do |builder|
107
- builder.adapter :em_synchrony
108
- end
109
- ```
110
-
111
- ## Addendum
112
-
113
- ![vacuums] [10]
114
-
115
- > Workers queuing to crawl AWS.
116
-
117
21
  [1]: https://secure.travis-ci.org/hakanensari/vacuum.png
118
22
  [2]: http://travis-ci.org/hakanensari/vacuum
119
- [3]: http://aws.amazon.com/
23
+ [3]: https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html
120
24
  [4]: http://f.cl.ly/items/2k2X0e2u0G3k1c260D2u/vacuum.png
121
- [5]: https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html
122
- [6]: http://nokogiri.org/
123
- [7]: https://github.com/hakanensari/vacuum/blob/master/examples/product_advertising/
124
- [8]: https://developer.amazonservices.com/gp/mws/docs.html
125
- [9]: https://github.com/technoweenie/faraday
126
- [10]: http://f.cl.ly/items/1Q3W372A0H3M0w2H1e0W/hoover.jpeg
@@ -0,0 +1,66 @@
1
+ require 'jeff'
2
+
3
+ module Vacuum
4
+ # An Amazon Product Advertising API request.
5
+ class Request
6
+ include Jeff
7
+
8
+ BadLocale = Class.new ArgumentError
9
+ MissingTag = Class.new ArgumentError
10
+
11
+ # A list of Amazon Product Advertising API hosts.
12
+ HOSTS = {
13
+ 'CA' => 'ecs.amazonaws.ca',
14
+ 'CN' => 'webservices.amazon.cn',
15
+ 'DE' => 'ecs.amazonaws.de',
16
+ 'ES' => 'webservices.amazon.es',
17
+ 'FR' => 'ecs.amazonaws.fr',
18
+ 'IT' => 'webservices.amazon.it',
19
+ 'JP' => 'ecs.amazonaws.jp',
20
+ 'UK' => 'ecs.amazonaws.co.uk',
21
+ 'US' => 'ecs.amazonaws.com'
22
+ }.freeze
23
+
24
+ params 'AssociateTag' => -> { tag },
25
+ 'Service' => 'AWSECommerceService',
26
+ 'Version' => '2011-08-01'
27
+
28
+ # Creates a new request for given locale and credentials.
29
+ #
30
+ # locale - The String Product Advertising API locale (default: US).
31
+ #
32
+ # Raises a Bad Locale error if locale is not valid.
33
+ def initialize(locale = nil)
34
+ host = HOSTS[locale || 'US'] or raise BadLocale
35
+ self.endpoint = "http://#{host}/onca/xml"
36
+ end
37
+
38
+ # Configures the Amazon Product Advertising API request.
39
+ #
40
+ # credentials - The Hash credentials of the API endpoint.
41
+ # :key - The String Amazon Web Services (AWS) key.
42
+ # :secret - The String AWS secret.
43
+ # :tag - The String Associate Tag.
44
+ #
45
+ # Yields self.
46
+ #
47
+ # Returns nothing.
48
+ def configure(credentials, &blk)
49
+ if block_given?
50
+ yield self
51
+ else
52
+ credentials.each { |key, val| self.send "#{key}=", val }
53
+ end
54
+ end
55
+
56
+ # Gets the String Associate Tag.
57
+ #
58
+ # Raises a Missing Tag error if Associate Tag is missing.
59
+ def tag
60
+ @tag or raise MissingTag
61
+ end
62
+
63
+ # Sets the String Associate Tag.
64
+ attr_writer :tag
65
+ end
66
+ end
@@ -1,3 +1,3 @@
1
1
  module Vacuum
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/vacuum.rb CHANGED
@@ -1,46 +1,13 @@
1
- # Standard library dependencies.
2
- require 'base64'
3
1
  require 'forwardable'
4
- require 'openssl'
5
- require 'time'
6
2
 
7
- # External dependencies.
8
- require 'addressable/uri'
9
- require 'faraday'
10
- require 'nokogiri'
11
-
12
- # Internal dependencies.
13
- require 'vacuum/endpoint/base'
14
- require 'vacuum/request/base'
15
- require 'vacuum/request/signature/authentication'
16
- require 'vacuum/request/signature/builder'
17
- require 'vacuum/request/utils'
18
- require 'vacuum/response/base'
19
- require 'vacuum/response/utils'
3
+ require 'vacuum/request'
20
4
  require 'vacuum/version'
21
5
 
22
- # Vacuum is a Ruby wrapper to various Amazon Web Services (AWS) APIs.
6
+ # Vacuum is a Ruby wrapper to the Amazon Product Advertising API.
23
7
  module Vacuum
24
- BadLocale = Class.new ArgumentError
25
- BadResponse = Class.new StandardError
26
- MissingKey = Class.new ArgumentError
27
- MissingSecret = Class.new ArgumentError
28
-
29
8
  class << self
30
- def new(api, &blk)
31
- case api
32
- when /^mws/
33
- require 'vacuum/mws'
34
- Request::MWS.new do |config|
35
- config.api = api.slice(4, api.size).to_sym
36
- blk.call config
37
- end
38
- when :product_advertising
39
- require 'vacuum/product_advertising'
40
- Request::ProductAdvertising.new &blk
41
- else
42
- raise NotImplementedError
43
- end
44
- end
9
+ extend Forwardable
10
+
11
+ def_delegator 'Vacuum::Request', :new
45
12
  end
46
13
  end
@@ -0,0 +1,18 @@
1
+ require 'minitest/autorun'
2
+ require_relative '../lib/vacuum'
3
+
4
+ module Vacuum
5
+ describe Request do
6
+ it 'requires a valid locale' do
7
+ -> { Request.new('foo') }.must_raise Request::BadLocale
8
+ end
9
+
10
+ it 'requires an Associate Tag' do
11
+ -> { Request.new('US').tag }.must_raise Request::MissingTag
12
+ end
13
+
14
+ it 'defaults to the US endpoint' do
15
+ Request.new.endpoint.must_equal 'http://ecs.amazonaws.com/onca/xml'
16
+ end
17
+ end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vacuum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,110 +9,53 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-05 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &70295025564860 !ruby/object:Gem::Requirement
15
+ name: jeff
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0.9'
22
- type: :development
23
- prerelease: false
24
- version_requirements: *70295025564860
25
- - !ruby/object:Gem::Dependency
26
- name: rspec
27
- requirement: &70295025564460 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '2.9'
33
- type: :development
21
+ version: 0.4.0
22
+ type: :runtime
34
23
  prerelease: false
35
- version_requirements: *70295025564460
36
- - !ruby/object:Gem::Dependency
37
- name: addressable
38
- requirement: &70295025563720 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
39
25
  none: false
40
26
  requirements:
41
27
  - - ~>
42
28
  - !ruby/object:Gem::Version
43
- version: '2.2'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *70295025563720
29
+ version: 0.4.0
47
30
  - !ruby/object:Gem::Dependency
48
- name: faraday
49
- requirement: &70295025563140 !ruby/object:Gem::Requirement
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
50
33
  none: false
51
34
  requirements:
52
- - - ~>
35
+ - - ! '>='
53
36
  - !ruby/object:Gem::Version
54
- version: 0.7.6
55
- type: :runtime
37
+ version: '0'
38
+ type: :development
56
39
  prerelease: false
57
- version_requirements: *70295025563140
58
- - !ruby/object:Gem::Dependency
59
- name: nokogiri
60
- requirement: &70295025562560 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
61
41
  none: false
62
42
  requirements:
63
- - - ~>
43
+ - - ! '>='
64
44
  - !ruby/object:Gem::Version
65
- version: '1.5'
66
- type: :runtime
67
- prerelease: false
68
- version_requirements: *70295025562560
69
- description: ! 'Vacuum is a wrapper to various Amazon Web Services (AWS) APIs, including
70
-
71
- Product Advertising and Marketplace Web Services (MWS).
72
-
73
- '
45
+ version: '0'
46
+ description: A wrapper to the Amazon Product Advertising API
74
47
  email:
75
48
  - hakan.ensari@papercavalier.com
76
49
  executables: []
77
50
  extensions: []
78
51
  extra_rdoc_files: []
79
52
  files:
80
- - lib/vacuum/endpoint/base.rb
81
- - lib/vacuum/endpoint/mws.rb
82
- - lib/vacuum/endpoint/product_advertising.rb
83
- - lib/vacuum/mws.rb
84
- - lib/vacuum/product_advertising.rb
85
- - lib/vacuum/request/base.rb
86
- - lib/vacuum/request/mws.rb
87
- - lib/vacuum/request/product_advertising.rb
88
- - lib/vacuum/request/signature/authentication.rb
89
- - lib/vacuum/request/signature/builder.rb
90
- - lib/vacuum/request/utils.rb
91
- - lib/vacuum/response/base.rb
92
- - lib/vacuum/response/mws.rb
93
- - lib/vacuum/response/product_advertising.rb
94
- - lib/vacuum/response/utils.rb
53
+ - lib/vacuum/request.rb
95
54
  - lib/vacuum/version.rb
96
55
  - lib/vacuum.rb
97
56
  - LICENSE
98
57
  - README.md
99
- - spec/fixtures/product_advertising
100
- - spec/spec_helper.rb
101
- - spec/support/shared_examples/endpoint.rb
102
- - spec/support/shared_examples/request.rb
103
- - spec/support/shared_examples/response.rb
104
- - spec/vacuum/endpoint/base_spec.rb
105
- - spec/vacuum/endpoint/mws_spec.rb
106
- - spec/vacuum/endpoint/product_advertising_spec.rb
107
- - spec/vacuum/request/base_spec.rb
108
- - spec/vacuum/request/mws_spec.rb
109
- - spec/vacuum/request/product_advertising_spec.rb
110
- - spec/vacuum/request/signature/authentication_spec.rb
111
- - spec/vacuum/request/signature/builder_spec.rb
112
- - spec/vacuum/request/utils_spec.rb
113
- - spec/vacuum/response/base_spec.rb
114
- - spec/vacuum/response/product_advertising_spec.rb
115
- - spec/vacuum/response/utils_spec.rb
58
+ - test/request_test.rb
116
59
  homepage: https://github.com/hakanensari/vacuum
117
60
  licenses: []
118
61
  post_install_message:
@@ -124,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
67
  requirements:
125
68
  - - ! '>='
126
69
  - !ruby/object:Gem::Version
127
- version: '0'
70
+ version: '1.9'
128
71
  required_rubygems_version: !ruby/object:Gem::Requirement
129
72
  none: false
130
73
  requirements:
@@ -133,25 +76,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
76
  version: '0'
134
77
  requirements: []
135
78
  rubyforge_project:
136
- rubygems_version: 1.8.11
79
+ rubygems_version: 1.8.23
137
80
  signing_key:
138
81
  specification_version: 3
139
- summary: A wrapper to various Amazon Web Services APIs
82
+ summary: Amazon Product Advertising in Ruby
140
83
  test_files:
141
- - spec/fixtures/product_advertising
142
- - spec/spec_helper.rb
143
- - spec/support/shared_examples/endpoint.rb
144
- - spec/support/shared_examples/request.rb
145
- - spec/support/shared_examples/response.rb
146
- - spec/vacuum/endpoint/base_spec.rb
147
- - spec/vacuum/endpoint/mws_spec.rb
148
- - spec/vacuum/endpoint/product_advertising_spec.rb
149
- - spec/vacuum/request/base_spec.rb
150
- - spec/vacuum/request/mws_spec.rb
151
- - spec/vacuum/request/product_advertising_spec.rb
152
- - spec/vacuum/request/signature/authentication_spec.rb
153
- - spec/vacuum/request/signature/builder_spec.rb
154
- - spec/vacuum/request/utils_spec.rb
155
- - spec/vacuum/response/base_spec.rb
156
- - spec/vacuum/response/product_advertising_spec.rb
157
- - spec/vacuum/response/utils_spec.rb
84
+ - test/request_test.rb
85
+ has_rdoc:
@@ -1,58 +0,0 @@
1
- module Vacuum
2
- module Endpoint
3
- # An Amazon Web Services (AWS) API endpoint.
4
- class Base
5
- LOCALES = %w(CA CN DE ES FR IT JP UK US)
6
-
7
- # Raises a Not Implemented Error.
8
- #
9
- # When implemented, this should return a String AWS API host.
10
- def host
11
- raise NotImplementedError
12
- end
13
-
14
- # Returns the String AWS access key ID.
15
- #
16
- # Raises a Missing Key error if key is missing.
17
- def key
18
- @key or raise MissingKey
19
- end
20
-
21
- # Sets the String AWS access key ID.
22
- attr_writer :key
23
-
24
- # Returns the String AWS API locale (default: US).
25
- #
26
- # Raises a Bad Locale error if locale is not valid.
27
- def locale
28
- @locale ||= 'US'
29
- LOCALES.include? @locale or raise BadLocale
30
-
31
- @locale
32
- end
33
-
34
- # Sets the String AWS API locale.
35
- attr_writer :locale
36
-
37
- # Returns the String AWS access secret key.
38
- #
39
- # Raises a Missing Secret error if secret is missing.
40
- def secret
41
- @secret or raise MissingSecret
42
- end
43
-
44
- # Sets the String AWS access secret key.
45
- attr_writer :secret
46
-
47
- # Returns a String user agent for the AWS API request.
48
- def user_agent
49
- engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
50
- language = [engine, RUBY_VERSION, "p#{RUBY_PATCHLEVEL}"].join ' '
51
- hostname = `hostname`.chomp
52
- version = Vacuum::VERSION
53
-
54
- "Vacuum/#{version} (Language=#{language}; Host=#{hostname})"
55
- end
56
- end
57
- end
58
- end
@@ -1,59 +0,0 @@
1
- module Vacuum
2
- module Endpoint
3
- # A Marketplace Web Services (MWS) API endpoint.
4
- class MWS < Base
5
- # A list of MWS API hosts.
6
- HOSTS = {
7
- 'CA' => 'mws.amazonservices.ca',
8
- 'CN' => 'mws.amazonservices.com.cn',
9
- 'DE' => 'mws-eu.amazonservices.com',
10
- 'ES' => 'mws-eu.amazonservices.com',
11
- 'FR' => 'mws-eu.amazonservices.com',
12
- 'IT' => 'mws-eu.amazonservices.com',
13
- 'JP' => 'mws.amazonservices.jp',
14
- 'UK' => 'mws-eu.amazonservices.com',
15
- 'US' => 'mws.amazonservices.com'
16
- }
17
-
18
- # Internal: Gets/Sets the Symbol MWS API type.
19
- attr_accessor :api
20
-
21
- # Returns a String MWS API host.
22
- def host
23
- HOSTS[locale]
24
- end
25
-
26
- # Sets the String marketplace ID.
27
- #
28
- # Raises a Missing Marketplace error if marketplace ID is missing.
29
- def marketplace
30
- @marketplace or raise MissingMarketplace
31
- end
32
-
33
- # Sets the String marketplace ID tag.
34
- attr_writer :marketplace
35
-
36
- # Returns a String MWS API URL path.
37
- #
38
- # Raises a Not Implemented Error if API is not implemented.
39
- def path
40
- case api
41
- when :products
42
- '/Products/2011-10-01'
43
- else
44
- raise NotImplementedError
45
- end
46
- end
47
-
48
- # Sets the String seller ID.
49
- #
50
- # Raises a Missing Seller error if seller ID is missing.
51
- def seller
52
- @seller or raise MissingSeller
53
- end
54
-
55
- # Sets the String seller ID tag.
56
- attr_writer :seller
57
- end
58
- end
59
- end
@@ -1,34 +0,0 @@
1
- module Vacuum
2
- module Endpoint
3
- # A Product Advertising API endpoint.
4
- class ProductAdvertising < Base
5
- # A list of Product Advertising API hosts.
6
- HOSTS = {
7
- 'CA' => 'ecs.amazonaws.ca',
8
- 'CN' => 'webservices.amazon.cn',
9
- 'DE' => 'ecs.amazonaws.de',
10
- 'ES' => 'webservices.amazon.es',
11
- 'FR' => 'ecs.amazonaws.fr',
12
- 'IT' => 'webservices.amazon.it',
13
- 'JP' => 'ecs.amazonaws.jp',
14
- 'UK' => 'ecs.amazonaws.co.uk',
15
- 'US' => 'ecs.amazonaws.com'
16
- }
17
-
18
- # Returns a String Product Advertising API host.
19
- def host
20
- HOSTS[locale]
21
- end
22
-
23
- # Sets the String Associate tag.
24
- #
25
- # Raises a Missing Tag error if tag is missing.
26
- def tag
27
- @tag or raise MissingTag
28
- end
29
-
30
- # Sets the String Associate tag.
31
- attr_writer :tag
32
- end
33
- end
34
- end
data/lib/vacuum/mws.rb DELETED
@@ -1,8 +0,0 @@
1
- %w(endpoint request response).each do |path|
2
- require "vacuum/#{path}/mws"
3
- end
4
-
5
- module Vacuum
6
- class MissingMarketplace < ArgumentError; end
7
- class MissingSeller < ArgumentError; end
8
- end
@@ -1,7 +0,0 @@
1
- %w(endpoint request response).each do |path|
2
- require "vacuum/#{path}/product_advertising"
3
- end
4
-
5
- module Vacuum
6
- MissingTag = Class.new(ArgumentError)
7
- end