marketplace_web_service 0.0.3 → 0.0.4

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: 2f4ff93dac20f15865f105e22202cd5b246ae0d1
4
- data.tar.gz: af2075a5e950eed79f9c9c4ffe3d99c018e02bcb
3
+ metadata.gz: b050d9e13f090866dccb8998f44218a5a8b26b6a
4
+ data.tar.gz: ffba83a4ef0b45e4b2cd6d3d2bb1f89df27fd545
5
5
  SHA512:
6
- metadata.gz: f80a5ae26a99bdf8edc0c852dac8628c927ada747d401f33445e86088f50e320f354e1ffb8b059306c93e3187ebf798c07447ae69a92b8d7d032a0575ab7f3d9
7
- data.tar.gz: e4652031bf15c83e5aee67ffe3687c991dff8bc6c94d5038822cea72e9c704a21386e0c28864f32df2c6dce86e17292a057d9b2b2540bd165941c013f7e8332c
6
+ metadata.gz: b9b7861be76f73e0ba9e7da7b58033671387676492fbf422fa545ec452a37807ec0d1c4ee4b04a60c58f4f04e49ce08925ca4f1734f83108bc6bfe97289f78b3
7
+ data.tar.gz: 73963d4de204c40b57e1a3362a74efacfba120d448014e3e36c237b861d4204fc6dbd8a1526a1356a4ebebc1caba804c1c2c23e9a2d218a5197688027c5e34d4
data/lib/mws.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require "mws/query_string"
2
- require "mws/report"
3
2
  require "mws/request"
4
3
  require "mws/version"
5
4
 
5
+ require "mws/feed"
6
+ require "mws/report"
7
+
6
8
  module MWS
7
9
  end
data/lib/mws/api.rb ADDED
@@ -0,0 +1,18 @@
1
+ require "mws/query_string"
2
+ require "mws/request"
3
+
4
+ module MWS
5
+ module API
6
+ module_function
7
+
8
+ def request(method, args, default_version)
9
+ action = method.to_s.split("_").map(&:capitalize).join
10
+ args[:params] = {"Action" => action, "Version" => default_version}.merge(args[:params])
11
+ args = args.merge({path: "/?#{MWS::QueryString.new(args)}"})
12
+
13
+ req = MWS::Request.new(args)
14
+ res = req.execute
15
+ res.body
16
+ end
17
+ end
18
+ end
data/lib/mws/feed.rb ADDED
@@ -0,0 +1,13 @@
1
+ require "mws/api"
2
+
3
+ module MWS
4
+ module Feed
5
+ DEFAULT_VERSION = "2009-01-01"
6
+
7
+ module_function
8
+
9
+ def method_missing(method, args={})
10
+ MWS::API.request(method, args, DEFAULT_VERSION)
11
+ end
12
+ end
13
+ end
@@ -1,7 +1,7 @@
1
1
  require "time"
2
+ require "mws/query_string/percent_encoded_string"
2
3
  require "mws/query_string/request_string"
3
4
  require "mws/query_string/signature"
4
- require "mws/query_string/uri_encoder"
5
5
 
6
6
  module MWS
7
7
  class QueryString < ::String
@@ -28,8 +28,7 @@ module MWS
28
28
  private
29
29
 
30
30
  def query_string
31
- encoder = MWS::QueryString::UriEncoder.new
32
- sorted_params.each.map{|k, v| [k, encoder.encode(v)].join("=") }.join("&")
31
+ sorted_params.each.map{|k, v| [k, PercentEncodedString.new(v)].join("=") }.join("&")
33
32
  end
34
33
 
35
34
  def sorted_params
@@ -0,0 +1,12 @@
1
+ require "uri_encoding"
2
+
3
+ module MWS
4
+ class QueryString < ::String
5
+ class PercentEncodedString < ::String
6
+ def initialize(string)
7
+ encoded_string = UriEncoding.encode(string, UriEncoding::UnreservedCharacters)
8
+ super(encoded_string)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,4 +1,4 @@
1
- require "mws/query_string/uri_encoder"
1
+ require "mws/query_string/percent_encoded_string"
2
2
 
3
3
  module MWS
4
4
  class QueryString < ::String
@@ -19,8 +19,7 @@ module MWS
19
19
  end
20
20
 
21
21
  def encoded_params
22
- encoder = MWS::QueryString::UriEncoder.new
23
- Hash[sorted_params.map{|pair| pair.map{|elm| encoder.encode(elm.to_s) } } ]
22
+ Hash[sorted_params.map{|pair| pair.map{|elm| PercentEncodedString.new(elm.to_s) } } ]
24
23
  end
25
24
 
26
25
  def request_string
data/lib/mws/report.rb CHANGED
@@ -1,17 +1,13 @@
1
+ require "mws/api"
2
+
1
3
  module MWS
2
4
  module Report
3
5
  DEFAULT_VERSION = "2009-01-01"
4
6
 
5
- def method_missing(method, args={})
6
- action = method.to_s.split("_").map(&:capitalize).join
7
- args[:params] = {"Action" => action, "Version" => DEFAULT_VERSION}.merge(args[:params])
8
- args = args.merge({path: "/?#{MWS::QueryString.new(args)}"})
7
+ module_function
9
8
 
10
- req = MWS::Request.new(args)
11
- res = req.execute
12
- res.body
9
+ def method_missing(method, args={})
10
+ MWS::API.request(method, args, DEFAULT_VERSION)
13
11
  end
14
-
15
- module_function :method_missing
16
12
  end
17
13
  end
data/lib/mws/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MWS
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "uri_encoding", ">= 0.0.2"
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.6"
22
24
  spec.add_development_dependency "rake"
23
25
  spec.add_development_dependency "rspec"
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::Feed do
4
+ describe ".method_missing" do
5
+ describe ".submit_feed" do
6
+ let(:valid_args){
7
+ {
8
+ key: "ThisIsSigningKey",
9
+ endpoint: "mws.amazonservices.com",
10
+ params: {
11
+ "AWSAccessKeyId" => "AccessKeyIdString",
12
+ "SellerId" => "SellerIdString",
13
+ "FeedType" => "_POST_PRODUCT_PRICING_DATA_"
14
+ },
15
+ body: request_body
16
+ }
17
+ }
18
+ let(:request_body){ "" }
19
+
20
+ before do
21
+ response = double("request")
22
+ expect(response).to receive(:body).and_return("BodyString")
23
+ request = double("request")
24
+ expect(request).to receive(:execute).and_return(response)
25
+ expect(MWS::Request).to receive(:new).and_return(request)
26
+ end
27
+
28
+ subject { described_class.submit_feed(valid_args) }
29
+ it { is_expected.to be_a String }
30
+ end
31
+ end
32
+ end
@@ -1,9 +1,7 @@
1
- require 'spec_helper'
2
-
3
- describe MWS::QueryString::UriEncoder do
4
- describe "#encode" do
5
- let(:encoder){ MWS::QueryString::UriEncoder.new }
1
+ require "spec_helper"
6
2
 
3
+ describe MWS::QueryString::PercentEncodedString do
4
+ describe "initialize" do
7
5
  mappings = {
8
6
  "abcdefghijklmnopqrstuvwxyz" => "abcdefghijklmnopqrstuvwxyz",
9
7
  "ABCDEFGHIJKLMNOPQRSTUVWXYZ" => "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
@@ -18,9 +16,13 @@ describe MWS::QueryString::UriEncoder do
18
16
  "2009-08-20T01:10:27.607Z" => "2009-08-20T01%3A10%3A27.607Z"
19
17
  }
20
18
 
19
+ subject{ described_class.new("") }
20
+ it{ is_expected.to be_an_instance_of(described_class) }
21
+ it{ is_expected.to be_a(String) }
22
+
21
23
  mappings.each do |before, after|
22
24
  describe "\"#{before}\"" do
23
- subject{ encoder.encode(before) }
25
+ subject{ described_class.new(before) }
24
26
  it{ is_expected.to eq(after) }
25
27
  end
26
28
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marketplace_web_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - OSA Shunsuke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-18 00:00:00.000000000 Z
11
+ date: 2014-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: uri_encoding
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.2
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -82,17 +96,20 @@ files:
82
96
  - Rakefile
83
97
  - lib/marketplace_web_service.rb
84
98
  - lib/mws.rb
99
+ - lib/mws/api.rb
100
+ - lib/mws/feed.rb
85
101
  - lib/mws/query_string.rb
102
+ - lib/mws/query_string/percent_encoded_string.rb
86
103
  - lib/mws/query_string/request_string.rb
87
104
  - lib/mws/query_string/signature.rb
88
- - lib/mws/query_string/uri_encoder.rb
89
105
  - lib/mws/report.rb
90
106
  - lib/mws/request.rb
91
107
  - lib/mws/version.rb
92
108
  - marketplace_web_service.gemspec
109
+ - spec/mws/feed_spec.rb
110
+ - spec/mws/query_string/percent_encoded_string_spec.rb
93
111
  - spec/mws/query_string/request_string_spec.rb
94
112
  - spec/mws/query_string/signature_spec.rb
95
- - spec/mws/query_string/uri_encoder_spec.rb
96
113
  - spec/mws/query_string_spec.rb
97
114
  - spec/mws/report_spec.rb
98
115
  - spec/mws/request_spec.rb
@@ -123,9 +140,10 @@ signing_key:
123
140
  specification_version: 4
124
141
  summary: Simple wrapper gem for Amazon MWS(Marketplace Web Service) API.
125
142
  test_files:
143
+ - spec/mws/feed_spec.rb
144
+ - spec/mws/query_string/percent_encoded_string_spec.rb
126
145
  - spec/mws/query_string/request_string_spec.rb
127
146
  - spec/mws/query_string/signature_spec.rb
128
- - spec/mws/query_string/uri_encoder_spec.rb
129
147
  - spec/mws/query_string_spec.rb
130
148
  - spec/mws/report_spec.rb
131
149
  - spec/mws/request_spec.rb
@@ -1,17 +0,0 @@
1
- module MWS
2
- class QueryString < ::String
3
- class UriEncoder
4
- NO_ENCODE_CHARACTERS = /[A-Za-z0-9\-\_\.\~]/
5
-
6
- def encode(string)
7
- string.to_s.each_char.map{|char| char.match(NO_ENCODE_CHARACTERS) ? char : escape_char(char) }.join("")
8
- end
9
-
10
- private
11
-
12
- def escape_char(char)
13
- char.each_byte.map{|byte| "%#{byte.to_s(16).upcase}" }.join("")
14
- end
15
- end
16
- end
17
- end