peddler 0.4.3 → 0.5.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
2
  SHA1:
3
- metadata.gz: 62834a80dac2dbed397f77f2079c67b03e77b210
4
- data.tar.gz: abaac02b413d76490fd2150477cdbaec192ab40d
3
+ metadata.gz: cfc50fce63ad3d1352ca442c1d29dcabb2f5ba5d
4
+ data.tar.gz: 72703e47d8dd0f04c1c96d5c754c3d8217183599
5
5
  SHA512:
6
- metadata.gz: 6b35c2fb1aaebdfd8d52f5eaca1aa9a9b21aa169e63f058f70fb81834ac4631884b37a8e0bd60893a3df748a7c78af3afd0933be70b191fbc22970e53ece4aa5
7
- data.tar.gz: 85c116fdf9f320edb63dce740e892c9f6c205e0fa92149d1ea15c97a300499bb60204dde3a585810dac479f888ce6c8183cbcbfc923a074b2a6d5b6fcbd765de
6
+ metadata.gz: 6d48814cee3986c8d9168bdf1a60ca128a5c1edcd81207c611b31286f1539343628ca0f99a94b29fd334491893f3016c9936595fe085dee781ad39cb27352a69
7
+ data.tar.gz: c8bee181bbb23d6906e15206a845535e09f1c99b7aab3954d63dcb4ddcffd35da712e8f5b2055f7613122f7a5faf2fce5bcc1f36d41547a7e40479adb7c1e5da
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2012 Paper Cavalier
3
+ Copyright (c) 2013 Paper Cavalier
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,65 +1,22 @@
1
1
  # Peddler
2
2
 
3
- [![travis][1]][2]
3
+ ![Peddler][1]
4
4
 
5
- ![Peddler][3]
5
+ Peddler provides a light-weight wrapper around the [Amazon Marketplace Web
6
+ Service (MWS) APIs][2].
6
7
 
7
- Peddler wraps the [Amazon Marketplace Web Service (MWS) APIs][4].
8
+ ## Usage
8
9
 
9
10
  ```ruby
10
- service = Peddler.new 'US'
11
-
12
- service.configure key: 'key',
13
- secret: 'secret',
14
- seller: 'seller'
15
-
16
- service.status # => "GREEN"
11
+ client = Peddler::Products.new('US', 'aws_key', 'aws_secret, 'seller_id')
12
+ params = {
13
+ 'Marketplace' => client.marketplace_id('US'),
14
+ 'Action' => 'ListMatchingProducts',
15
+ 'Query' => 'Architecture'
16
+ }
17
+
18
+ res = client.get(query: params)
17
19
  ```
18
20
 
19
- ## Feeds
20
-
21
- The Feeds API lets you upload inventory and order data to Amazon.
22
-
23
- ## Fulfillment Inbound Shipment
24
-
25
- With the Fulfillment Inbound Shipment API, you can create and update inbound
26
- shipments of inventory in the Amazon Fulfillment Network. You can also request
27
- lists of inbound shipments or inbound shipment items based on criteria that you
28
- specify.
29
-
30
- ## Fulfillment Inventory
31
-
32
- The Fulfillment Inventory API lets you see what is available in your inventory.
33
- It's a real-time reporting mechanism that returns your current or
34
- recently-changed inventory supply in the Amazon fulfillment network.
35
-
36
- ## Fulfillment Outbound Shipment
37
-
38
- The Fulfillment Outbound Shipment API is designed to help you integrate
39
- Fulfillment by Amazon with any payment processing application or inventory
40
- management system currently in use.
41
-
42
- ## Orders
43
-
44
- The Orders API helps you build simple applications that retrieve only the order
45
- information that you need.
46
-
47
- ## Products
48
-
49
- The Products API helps you get information to match your products to existing
50
- product listings on Amazon Marketplace websites and to make sourcing and
51
- pricing decisions for listing those products on Amazon Marketplace websites.
52
-
53
- ## Reports
54
-
55
- The Reports API lets you request reports about your inventory and orders.
56
-
57
- ## Sellers
58
-
59
- The Sellers API lets sellers retrieve information about their seller account,
60
- such as the marketplaces they participate in.
61
-
62
- [1]: https://secure.travis-ci.org/papercavalier/peddler.png
63
- [2]: http://travis-ci.org/papercavalier/peddler
64
- [3]: http://f.cl.ly/items/0W3V0A1Z110Q0x461b3H/mussels.jpeg
65
- [4]: https://developer.amazonservices.com/gp/mws/docs.html
21
+ [1]: http://f.cl.ly/items/0W3V0A1Z110Q0x461b3H/mussels.jpeg
22
+ [2]: https://developer.amazonservices.com/gp/mws/docs.html
data/lib/peddler.rb CHANGED
@@ -1,6 +1 @@
1
- %w(
2
- feeds fulfillment_inbound_shipment fulfillment_inventory
3
- fulfillment_outbound_shipment orders products reports sellers
4
- ).each do |service|
5
- require "peddler/#{service}"
6
- end
1
+ require 'peddler/apis'
@@ -0,0 +1,45 @@
1
+ require 'peddler/service'
2
+
3
+ module Peddler
4
+ class Feeds < Service
5
+ end
6
+
7
+ class FulfillmentInboundShipment < Service
8
+ path 'FulfillmentInboundShipment/2010-10-01'
9
+ end
10
+
11
+ class FulfillmentInventory < Service
12
+ path 'FulfillmentInventory/2010-10-01'
13
+ end
14
+
15
+ class FulfillmentOutboundShipment < Service
16
+ path 'FulfillmentOutboundShipment/2010-10-01'
17
+ end
18
+
19
+ class OffAmazonPayments < Service
20
+ path 'OffAmazonPayments/2013-01-01/'
21
+ end
22
+
23
+ class Orders < Service
24
+ path 'Orders/2011-01-01'
25
+ end
26
+
27
+ class Products < Service
28
+ path 'Products/2011-10-01'
29
+ end
30
+
31
+ class Recommendations < Service
32
+ path 'Recommendations/2013-04-01'
33
+ end
34
+
35
+ class Reports < Service
36
+ end
37
+
38
+ class Sellers < Service
39
+ path 'Sellers/2011-07-01'
40
+ end
41
+
42
+ class Subscriptions < Service
43
+ path 'Subscriptions/2013-07-01'
44
+ end
45
+ end
@@ -1,25 +1,21 @@
1
1
  require 'jeff'
2
2
 
3
3
  module Peddler
4
- BadLocale = Class.new(ArgumentError)
5
- MissingSeller = Class.new(ArgumentError)
6
-
7
- # A wrapper around a Marketplace Web Services (MWS) endpoint.
8
- class Service
4
+ # Service is an abstract wrapper around a Marketplace Web Services (MWS)
5
+ # endpoint.
6
+ #
7
+ # The initializer takes four arguments:
8
+ #
9
+ # country - The String ISO 3166-1 two-letter country code of
10
+ # the base marketplace of the seller.
11
+ # aws_access_key_id - The String AWS access key id.
12
+ # aws_secret_access_key - The String AWS secret access key.
13
+ # seller_id - The String MWS merchant id.
14
+ #
15
+ # These arguments are optional and can be set individually later.
16
+ Service = Struct.new(:country, :aws_access_key_id, :aws_secret_access_key, :seller_id) do
9
17
  include Jeff
10
18
 
11
- class << self
12
- # Gets/Sets the path of the MWS endpoint.
13
- #
14
- # path - A String path (optional).
15
- def path(path = nil)
16
- @path = path if path
17
- @path
18
- end
19
- end
20
-
21
- params 'SellerId' => -> { seller }
22
-
23
19
  # A list of MWS hosts.
24
20
  HOSTS = {
25
21
  'CA' => 'mws.amazonservices.ca',
@@ -27,80 +23,53 @@ module Peddler
27
23
  'DE' => 'mws-eu.amazonservices.com',
28
24
  'ES' => 'mws-eu.amazonservices.com',
29
25
  'FR' => 'mws-eu.amazonservices.com',
26
+ 'GB' => 'mws-eu.amazonservices.com',
30
27
  'IN' => 'mws.amazonservices.in',
31
28
  'IT' => 'mws-eu.amazonservices.com',
32
29
  'JP' => 'mws.amazonservices.jp',
33
- 'UK' => 'mws-eu.amazonservices.com',
34
30
  'US' => 'mws.amazonservices.com'
35
31
  }
36
32
 
37
- # A list of MWS marketplace ids.
38
- MARKETPLACES = {
33
+ # A list of marketplace ids.
34
+ MARKETPLACE_IDS = {
39
35
  'CA' => 'A2EUQ1WTGCTBG2',
40
- 'CN' => nil,
36
+ 'CN' => 'AAHKV2X7AFYLW',
41
37
  'DE' => 'A1PA6795UKMFR9',
42
38
  'ES' => 'A1RKKUPIHCS9HS',
43
39
  'FR' => 'A13V1IB3VIYZZH',
44
- 'IN' => nil,
40
+ 'GB' => 'A1F83G8C2ARO7P',
41
+ 'IN' => 'A21TJRUUN4KGV',
45
42
  'IT' => 'APJ6JRA9NG5V4',
46
43
  'JP' => 'A1VC38T7YXB528',
47
- 'UK' => 'A1F83G8C2ARO7P',
48
44
  'US' => 'ATVPDKIKX0DER'
49
45
  }
50
46
 
51
- def self.inherited(base)
52
- base.params(params)
53
- end
54
-
55
- # Create a new service endpoint for given locale.
47
+ # Gets/Sets the path of the MWS endpoint.
56
48
  #
57
- # locale - The String MWS API locale.
58
- #
59
- # Raises a Bad Locale error if locale is not valid.
60
- def initialize(locale)
61
- @host = HOSTS[@locale = locale] or raise BadLocale
49
+ # path - A String path (default: nil).
50
+ def self.path(path = nil)
51
+ path ? @path = path : @path
62
52
  end
63
53
 
64
- # Configure the MWS endpoint.
65
- #
66
- # credentials - The Hash credentials.
67
- # :key - The String Amazon Web Services (AWS) key.
68
- # :secret - The String AWS secret.
69
- # :seller - The String MWS Seller Id.
70
- #
71
- # Returns nothing.
72
- def configure(credentials)
73
- credentials.each { |key, val| self.send("#{key}=", val) }
54
+ # So that subclasses can continue adding their params.
55
+ def self.inherited(base)
56
+ base.params(params)
74
57
  end
75
58
 
59
+ params('SellerId' => -> { seller_id })
60
+
76
61
  # Returns the String MWS endpoint.
77
62
  def endpoint
78
- "https://#{@host}/#{self.class.path}"
63
+ "https://#{HOSTS.fetch(country)}/#{self.class.path}"
79
64
  end
80
65
 
81
- # Returns a String Marketplace id.
66
+ # Get the marketplace id for a given country.
82
67
  #
83
- # locale - The String MWS API locale (default: the locale of the service
84
- # endpoint).
85
- def marketplace(locale = nil)
86
- MARKETPLACES[locale || @locale] or raise BadLocale
87
- end
88
-
89
- # Gets the String MWS seller id.
68
+ # country - A String ISO 3166-1 two-letter country code.
90
69
  #
91
- # Raises a Missing Seller error if seller id is missing.
92
- def seller
93
- @seller or raise MissingSeller
94
- end
95
-
96
- # Sets the String MWS seller id.
97
- attr_writer :seller
98
-
99
- # Gets the String service status.
100
- def status
101
- get(query: { 'Action' => 'GetServiceStatus' })
102
- .body
103
- .match(/GREEN_?I?|YELLOW|RED/)[0]
70
+ # Returns a String marketplace id.
71
+ def marketplace_id(country)
72
+ MARKETPLACE_IDS.fetch(country)
104
73
  end
105
74
  end
106
75
  end
@@ -1,3 +1,3 @@
1
1
  module Peddler
2
- VERSION = '0.4.3'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -0,0 +1,21 @@
1
+ require_relative 'test_helper'
2
+
3
+ class ServiceTest < MiniTest::Test
4
+ def setup
5
+ @klass = Class.new(Peddler::Service)
6
+ @service = @klass.new('US', 'key', 'secret', 'seller_id')
7
+ end
8
+
9
+ def test_configures_path
10
+ @klass.path('Foo')
11
+ assert @service.endpoint.match(/Foo$/)
12
+ end
13
+
14
+ def test_has_user_agent
15
+ refute @service.connection.data[:headers].empty?
16
+ end
17
+
18
+ def test_gets_marketplace_ids
19
+ refute_equal @service.marketplace_id('US'), @service.marketplace_id('GB')
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ $:.unshift(File.expand_path('../../lib', __FILE__))
2
+ require 'peddler'
3
+ require 'minitest/autorun'
metadata CHANGED
@@ -1,18 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hakan Ensari
8
- - Ezekiel Templin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-26 00:00:00.000000000 Z
11
+ date: 2013-08-09 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rake
14
+ name: jeff
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
16
29
  requirement: !ruby/object:Gem::Requirement
17
30
  requirements:
18
31
  - - '>='
@@ -26,39 +39,34 @@ dependencies:
26
39
  - !ruby/object:Gem::Version
27
40
  version: '0'
28
41
  - !ruby/object:Gem::Dependency
29
- name: jeff
42
+ name: rake
30
43
  requirement: !ruby/object:Gem::Requirement
31
44
  requirements:
32
- - - ~>
45
+ - - '>='
33
46
  - !ruby/object:Gem::Version
34
- version: 0.6.0
35
- type: :runtime
47
+ version: '0'
48
+ type: :development
36
49
  prerelease: false
37
50
  version_requirements: !ruby/object:Gem::Requirement
38
51
  requirements:
39
- - - ~>
52
+ - - '>='
40
53
  - !ruby/object:Gem::Version
41
- version: 0.6.0
42
- description: A wrapper to the Amazon Marketplace Web Service (MWS) API
54
+ version: '0'
55
+ description: A light-weight wrapper to the Amazon Marketplace Web Service (MWS) API
43
56
  email:
44
- - code@papercavalier.com
57
+ - hakan.ensari@papercavalier.com
45
58
  executables: []
46
59
  extensions: []
47
60
  extra_rdoc_files: []
48
61
  files:
49
- - lib/peddler/feeds.rb
50
- - lib/peddler/fulfillment_inbound_shipment.rb
51
- - lib/peddler/fulfillment_inventory.rb
52
- - lib/peddler/fulfillment_outbound_shipment.rb
53
- - lib/peddler/orders.rb
54
- - lib/peddler/products.rb
55
- - lib/peddler/reports.rb
56
- - lib/peddler/sellers.rb
62
+ - lib/peddler/apis.rb
57
63
  - lib/peddler/service.rb
58
64
  - lib/peddler/version.rb
59
65
  - lib/peddler.rb
60
66
  - LICENSE
61
67
  - README.md
68
+ - test/service_test.rb
69
+ - test/test_helper.rb
62
70
  homepage: http://github.com/papercavalier/peddler
63
71
  licenses: []
64
72
  metadata: {}
@@ -78,8 +86,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
86
  version: '0'
79
87
  requirements: []
80
88
  rubyforge_project:
81
- rubygems_version: 2.0.0
89
+ rubygems_version: 2.0.5
82
90
  signing_key:
83
91
  specification_version: 4
84
92
  summary: Wraps the Amazon Marketplace Web Service API
85
- test_files: []
93
+ test_files:
94
+ - test/service_test.rb
95
+ - test/test_helper.rb
data/lib/peddler/feeds.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Feeds API lets you upload inventory and order data to Amazon.
5
- class Feeds < Service
6
- end
7
- end
@@ -1,11 +0,0 @@
1
- require 'peddler/service'
2
-
3
- # With the Fulfillment Inbound Shipment API, you can create and update inbound
4
- # shipments of inventory in the Amazon Fulfillment Network. You can also
5
- # request lists of inbound shipments or inbound shipment items based on
6
- # criteria that you specify.
7
- module Peddler
8
- class FulfillmentInboundShipment < Service
9
- path 'FulfillmentInboundShipment/2010-10-01'
10
- end
11
- end
@@ -1,10 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Fulfillment Inventory API lets you see what is available in your
5
- # inventory. It's a real-time reporting mechanism that returns your current
6
- # or recently-changed inventory supply in the Amazon fulfillment network.
7
- class FulfillmentInventory < Service
8
- path 'FulfillmentInventory/2010-10-01'
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Fulfillment Outbound Shipment API is designed to help you integrate
5
- # Fulfillment by Amazon with any payment processing application or inventory
6
- # management system currently in use.
7
- class FulfillmentOutboundShipment < Service
8
- path 'FulfillmentOutboundShipment/2010-10-01'
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Orders API helps you build simple applications that retrieve only the
5
- # order information that you need.
6
- class Orders < Service
7
- path 'Orders/2011-01-01'
8
- end
9
- end
@@ -1,11 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Products API helps you get information to match your products to
5
- # existing product listings on Amazon Marketplace websites and to make
6
- # sourcing and pricing decisions for listing those products on Amazon
7
- # Marketplace websites.
8
- class Products < Service
9
- path 'Products/2011-10-01'
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Reports API lets you request reports about your inventory and orders.
5
- class Reports < Service
6
- end
7
- end
@@ -1,9 +0,0 @@
1
- require 'peddler/service'
2
-
3
- module Peddler
4
- # The Sellers API lets sellers retrieve information about their seller
5
- # account, such as the marketplaces they participate in.
6
- class Sellers < Service
7
- path 'Sellers/2011-07-01'
8
- end
9
- end