aws_agcod 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OGZjMTRlM2Q2ZjhlYjMzZjdiMjE1NmIxNjk3NThjNjM5YTdmODc3YQ==
5
- data.tar.gz: !binary |-
6
- MjZjNzkxNmZhZWVmYzA4OTQzNTUxNWFhMmFjYmNjMDM5MjQwN2Q3OQ==
2
+ SHA1:
3
+ metadata.gz: 655c7b1368611cacb12fba40bb8c7d41c2dc4df9
4
+ data.tar.gz: ec16be753d4e8488b1c9b642cfe3edc467649d9c
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDdlMGI0ZmQ0MGM3ZjhhNzNiZmY0YWVkMTZiNmI0NTY2MTVhNzYwM2VkM2Y4
10
- NGM5NDIyZjI3YWUwZjAxYjkzZGJkZmNkOWZiZDA5MGM3ODEwOGM5ZmJhZTJh
11
- YzdiZTc5YTFkNjIzYWY2OWU2OWRkZjNjY2UyNDU5MjM0M2I1ODM=
12
- data.tar.gz: !binary |-
13
- NmMyYzE5ODZiMjc0YThmMDQzY2U4ZDkzZWJhNThkZjI5NmM0MWIyNTMzNGU1
14
- MmQ4M2QwODUxNDcwMGVjMzAyM2E3ZjE2Y2Q1Yjc4MTg2YWY0NTE3YTEzZDhj
15
- OTI1YjRiZGY0Njk4OWQyYWE4NjAwM2YyN2Y5MmI3OTdhNThlYzY=
6
+ metadata.gz: 15bb4600aa4d6f812359f511855d7f42659ffe8a6d8b730b7b95f54bb014a45b5539fecda80f6fbbd7f9bf6ed7d0caf9b133a8ddfdc16185d36966e62f8a23c6
7
+ data.tar.gz: 0ec38ce66e43f14b6b98086d19f31df5604dd68e0a69759e8a4b75baf535650e82207e7d8fcb93d93686248077619349e7ac3fdee5ce8022e762d35c2e8da063
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 TODO: Write your name
1
+ Copyright (c) 2015 Xenor Chang
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # AwsAgcod
1
+ # AGCOD
2
2
 
3
3
  Amazon Gift Code On Demand (AGCOD) API v2 implementation for distribute Amazon gift cards (gift codes) instantly in any denomination.
4
4
 
@@ -25,12 +25,13 @@ Or install it yourself as:
25
25
  ```ruby
26
26
  require "aws_agcod"
27
27
 
28
- AwsAgcod.configure do |config|
28
+ AGCOD.configure do |config|
29
29
  config.access_key = "YOUR_ACCESS_KEY"
30
30
  config.secret_key = "YOUR_SECRET_KEY"
31
31
  config.partner_id = "PARTNER_ID"
32
32
  config.uri = "https://agcod-v2-gamma.amazon.com" # default, sandbox endpoint
33
- config.partner_id = "us-east-1" # default
33
+ config.region = "us-east-1" # default
34
+ config.timeout = 30 # default
34
35
  end
35
36
  ```
36
37
 
@@ -38,9 +39,10 @@ end
38
39
 
39
40
  ```ruby
40
41
  request_id = "test"
41
- amount = 10 # USD
42
+ amount = 10
43
+ currency = "USD" # default to USD, available types are: USD, EUR, JPY, CNY, CAD
42
44
 
43
- request = AwsAgcod::CreateGiftCard.new(request_id, amount)
45
+ request = AGCOD::CreateGiftCard.new(request_id, amount, currency)
44
46
 
45
47
  # When succeed
46
48
  if request.success?
@@ -59,7 +61,7 @@ end
59
61
  request_id = "test"
60
62
  gc_id = "test_gc_id"
61
63
 
62
- request = AwsAgcod::CancelGiftCard.new(request_id, gc_id)
64
+ request = AGCOD::CancelGiftCard.new(request_id, gc_id)
63
65
 
64
66
  # When failed
65
67
  unless request.success?
@@ -77,7 +79,7 @@ page = 1
77
79
  per_page = 100
78
80
  show_no_ops = false # Wehther to show activities with no operation or not
79
81
 
80
- request = AwsAgcod::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops)
82
+ request = AGCOD::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops)
81
83
 
82
84
  # When succeed
83
85
  if request.success?
data/lib/aws_agcod.rb CHANGED
@@ -4,7 +4,7 @@ require "aws_agcod/create_gift_card"
4
4
  require "aws_agcod/cancel_gift_card"
5
5
  require "aws_agcod/gift_card_activity_list"
6
6
 
7
- module AwsAgcod
7
+ module AGCOD
8
8
  def self.configure(&block)
9
9
  @config = Config.new
10
10
 
@@ -1,6 +1,6 @@
1
1
  require "aws_agcod/request"
2
2
 
3
- module AwsAgcod
3
+ module AGCOD
4
4
  class CancelGiftCard
5
5
  extend Forwardable
6
6
 
@@ -8,7 +8,7 @@ module AwsAgcod
8
8
 
9
9
  def initialize(request_id, gc_id)
10
10
  @response = Request.new("CancelGiftCard",
11
- "creationRequestId" => "#{AwsAgcod.config.partner_id}#{request_id}",
11
+ "creationRequestId" => "#{AGCOD.config.partner_id}#{request_id}",
12
12
  "gcId" => gc_id
13
13
  ).response
14
14
  end
@@ -1,11 +1,12 @@
1
- module AwsAgcod
1
+ module AGCOD
2
2
  class Config
3
- attr_accessor :access_key, :secret_key, :uri, :partner_id, :region
3
+ attr_accessor :access_key, :secret_key, :uri, :partner_id, :region, :timeout
4
4
 
5
5
  def initialize
6
6
  # API defaults
7
7
  @uri = "https://agcod-v2-gamma.amazon.com"
8
8
  @region = "us-east-1"
9
+ @timeout = 30
9
10
  end
10
11
  end
11
12
  end
@@ -1,16 +1,24 @@
1
1
  require "aws_agcod/request"
2
2
 
3
- module AwsAgcod
3
+ module AGCOD
4
+ class CreateGiftCardError < StandardError; end
5
+
4
6
  class CreateGiftCard
5
7
  extend Forwardable
6
8
 
9
+ CURRENCIES = %w(USD EUR JPY CNY CAD)
10
+
7
11
  def_delegators :@response, :success?, :error_message
8
12
 
9
- def initialize(request_id, amount)
13
+ def initialize(request_id, amount, currency = "USD")
14
+ unless CURRENCIES.include?(currency.to_s)
15
+ raise CreateGiftCardError, "Currency #{currency} not supported, available types are #{CURRENCIES.join(", ")}"
16
+ end
17
+
10
18
  @response = Request.new("CreateGiftCard",
11
- "creationRequestId" => "#{AwsAgcod.config.partner_id}#{request_id}",
19
+ "creationRequestId" => "#{AGCOD.config.partner_id}#{request_id}",
12
20
  "value" => {
13
- "currencyCode" => "USD",
21
+ "currencyCode" => currency,
14
22
  "amount" => amount
15
23
  }
16
24
  ).response
@@ -1,6 +1,6 @@
1
1
  require "aws_agcod/request"
2
2
 
3
- module AwsAgcod
3
+ module AGCOD
4
4
  class GiftCardActivityListError < StandardError; end
5
5
 
6
6
  class GiftCardActivity
@@ -34,7 +34,7 @@ module AwsAgcod
34
34
  def_delegators :@response, :success?, :error_message
35
35
 
36
36
  def initialize(request_id, start_time, end_time, page = 1, per_page = 100, show_no_ops = false)
37
- raise GiftCardActivityError, "Only #{LIMIT} records allowed per request." if per_page > LIMIT
37
+ raise GiftCardActivityListError, "Only #{LIMIT} records allowed per request." if per_page > LIMIT
38
38
 
39
39
  @response = Request.new("GetGiftCardActivityPage",
40
40
  "requestId" => request_id,
@@ -3,7 +3,7 @@ require "aws_agcod/response"
3
3
  require "httparty"
4
4
  require "yaml"
5
5
 
6
- module AwsAgcod
6
+ module AGCOD
7
7
  class Request
8
8
  TIME_FORMAT = "%Y%m%dT%H%M%SZ"
9
9
 
@@ -13,7 +13,7 @@ module AwsAgcod
13
13
  @action = action
14
14
  @params = params
15
15
 
16
- @response = Response.new(HTTParty.post(uri, body: body, headers: signed_headers, timeout: 30).body)
16
+ @response = Response.new(HTTParty.post(uri, body: body, headers: signed_headers, timeout: AGCOD.config.timeout).body)
17
17
  end
18
18
 
19
19
  private
@@ -30,16 +30,16 @@ module AwsAgcod
30
30
  "date" => time.to_s
31
31
  }
32
32
 
33
- Signature.new(AwsAgcod.config).sign(uri, headers, body)
33
+ Signature.new(AGCOD.config).sign(uri, headers, body)
34
34
  end
35
35
 
36
36
  def uri
37
- @uri ||= URI("#{AwsAgcod.config.uri}/#{@action}")
37
+ @uri ||= URI("#{AGCOD.config.uri}/#{@action}")
38
38
  end
39
39
 
40
40
  def body
41
41
  @body ||= @params.merge(
42
- "partnerId" => AwsAgcod.config.partner_id
42
+ "partnerId" => AGCOD.config.partner_id
43
43
  ).to_json
44
44
  end
45
45
  end
@@ -1,6 +1,6 @@
1
1
  require "json"
2
2
 
3
- module AwsAgcod
3
+ module AGCOD
4
4
  class Response
5
5
  attr_reader :status, :payload
6
6
 
@@ -6,7 +6,7 @@ require "openssl"
6
6
  require "uri"
7
7
  require "pathname"
8
8
 
9
- module AwsAgcod
9
+ module AGCOD
10
10
  class Signature
11
11
  SERVICE = "AGCODService"
12
12
 
@@ -85,11 +85,11 @@ module AwsAgcod
85
85
  # is a mechanism for calculating a message authentication code
86
86
  # involving a hash function in combination with a secret key
87
87
  def hmac(key, value)
88
- OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha256"), key, value)
88
+ OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha256"), key, value)
89
89
  end
90
90
 
91
91
  def hexhmac(key, value)
92
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new("sha256"), key, value)
92
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), key, value)
93
93
  end
94
94
  end
95
95
  end
@@ -1,3 +1,3 @@
1
- module AwsAgcod
2
- VERSION = "0.0.3"
1
+ module AGCOD
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/cancel_gift_card"
3
+
4
+ describe AGCOD::CancelGiftCard do
5
+ let(:partner_id) { "Testa" }
6
+
7
+ before do
8
+ AGCOD.configure do |config|
9
+ config.partner_id = partner_id
10
+ end
11
+ end
12
+
13
+ context ".new" do
14
+ let(:request_id) { "test1" }
15
+ let(:gc_id) { "FOO" }
16
+
17
+ it "makes cancel request" do
18
+ expect(AGCOD::Request).to receive(:new) do |action, params|
19
+ expect(action).to eq("CancelGiftCard")
20
+ expect(params["creationRequestId"]).to eq("#{partner_id}#{request_id}")
21
+ expect(params["gcId"]).to eq(gc_id)
22
+ end.and_return(spy)
23
+
24
+ AGCOD::CancelGiftCard.new(request_id, gc_id)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/config"
3
+
4
+ describe AGCOD::Config do
5
+ context ".new" do
6
+ let!(:config) { AGCOD::Config.new }
7
+
8
+ it "sets default uri and region" do
9
+ expect(config.uri).not_to be_nil
10
+ expect(config.region).not_to be_nil
11
+ expect(config.timeout).not_to be_nil
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,83 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/create_gift_card"
3
+
4
+ describe AGCOD::CreateGiftCard do
5
+ let(:partner_id) { "Testa" }
6
+ let(:request_id) { "test1" }
7
+ let(:amount) { 10 }
8
+ let(:currency) { AGCOD::CreateGiftCard::CURRENCIES.first }
9
+ let(:response) { spy }
10
+
11
+ before do
12
+ AGCOD.configure do |config|
13
+ config.partner_id = partner_id
14
+ end
15
+ end
16
+
17
+ context ".new" do
18
+ context "when currency available" do
19
+ it "makes create request" do
20
+ expect(AGCOD::Request).to receive(:new) do |action, params|
21
+ expect(action).to eq("CreateGiftCard")
22
+ expect(params["creationRequestId"]).to eq("#{partner_id}#{request_id}")
23
+ expect(params["value"]).to eq(
24
+ "currencyCode" => currency,
25
+ "amount" => amount
26
+ )
27
+ end.and_return(response)
28
+
29
+ AGCOD::CreateGiftCard.new(request_id, amount, currency)
30
+ end
31
+ end
32
+
33
+ context "when currency not available" do
34
+ let(:currency) { "NOTEXIST" }
35
+
36
+ it "raises error" do
37
+ expect {
38
+ AGCOD::CreateGiftCard.new(request_id, amount, currency)
39
+ }.to raise_error(
40
+ AGCOD::CreateGiftCardError,
41
+ "Currency #{currency} not supported, available types are #{AGCOD::CreateGiftCard::CURRENCIES.join(", ")}"
42
+ )
43
+ end
44
+ end
45
+ end
46
+
47
+ shared_context "request with response" do
48
+ let(:claim_code) { "FOO" }
49
+ let(:gc_id) { "BAR" }
50
+ let(:creation_request_id) { "BAZ" }
51
+ let(:payload) { {"gcClaimCode" => claim_code, "gcId" => gc_id, "creationRequestId" => creation_request_id} }
52
+ let(:request) { AGCOD::CreateGiftCard.new(request_id, amount, currency) }
53
+
54
+ before do
55
+ allow(AGCOD::Request).to receive(:new) { double(response: response) }
56
+ allow(response).to receive(:payload) { payload }
57
+ end
58
+ end
59
+
60
+ context "#claim_code" do
61
+ include_context "request with response"
62
+
63
+ it "returns claim_code" do
64
+ expect(request.claim_code).to eq(claim_code)
65
+ end
66
+ end
67
+
68
+ context "#gc_id" do
69
+ include_context "request with response"
70
+
71
+ it "returns gc_id" do
72
+ expect(request.gc_id).to eq(gc_id)
73
+ end
74
+ end
75
+
76
+ context "#request_id" do
77
+ include_context "request with response"
78
+
79
+ it "returns creation request_id" do
80
+ expect(request.request_id).to eq(creation_request_id)
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,74 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/gift_card_activity_list"
3
+
4
+ describe AGCOD::GiftCardActivityList do
5
+ let(:partner_id) { "Testa" }
6
+ let(:request_id) { "test1" }
7
+ let(:start_time) { double("start_time") }
8
+ let(:end_time) { double("end_time") }
9
+ let(:page) { 1 }
10
+ let(:per_page) { AGCOD::GiftCardActivityList::LIMIT }
11
+ let(:show_no_ops) { true }
12
+ let(:response) { spy }
13
+
14
+ before do
15
+ AGCOD.configure do |config|
16
+ config.partner_id = partner_id
17
+ end
18
+ end
19
+
20
+ context ".new" do
21
+ it "makes request" do
22
+ expect(start_time).to receive(:strftime).with(
23
+ AGCOD::GiftCardActivityList::TIME_FORMAT
24
+ ).and_return(start_time)
25
+
26
+ expect(end_time).to receive(:strftime).with(
27
+ AGCOD::GiftCardActivityList::TIME_FORMAT
28
+ ).and_return(end_time)
29
+
30
+ expect(AGCOD::Request).to receive(:new) do |action, params|
31
+ expect(action).to eq("GetGiftCardActivityPage")
32
+ expect(params["requestId"]).to eq(request_id)
33
+ expect(params["utcStartDate"]).to eq(start_time)
34
+ expect(params["utcEndDate"]).to eq(end_time)
35
+ expect(params["pageIndex"]).to eq((page - 1) * per_page)
36
+ expect(params["pageSize"]).to eq(per_page)
37
+ expect(params["showNoOps"]).to eq(show_no_ops)
38
+ end.and_return(response)
39
+
40
+ AGCOD::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops)
41
+ end
42
+
43
+ context "when request per_page reaches limit" do
44
+ let(:per_page) { AGCOD::GiftCardActivityList::LIMIT + 1 }
45
+
46
+ it "raises error" do
47
+ expect {
48
+ AGCOD::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops)
49
+ }.to raise_error(
50
+ AGCOD::GiftCardActivityListError,
51
+ "Only #{AGCOD::GiftCardActivityList::LIMIT} records allowed per request."
52
+ )
53
+ end
54
+ end
55
+ end
56
+
57
+ context "#results" do
58
+ let(:payload) { { "cardActivityList" => [double * 3] } }
59
+ let(:request) { AGCOD::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops) }
60
+
61
+ before do
62
+ allow(start_time).to receive(:strftime)
63
+ allow(end_time).to receive(:strftime)
64
+ allow(AGCOD::Request).to receive(:new) { double(response: response) }
65
+ allow(response).to receive(:payload) { payload }
66
+ end
67
+
68
+ it "returns GiftCardActivity instances" do
69
+ request.results.each do |item|
70
+ expec(item).to be_a(AGCOD::GiftCardActivity)
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,48 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/request"
3
+
4
+ describe AGCOD::Request do
5
+ let(:action) { "Foo" }
6
+ let(:params) { {} }
7
+ let(:signature) { double("Signature") }
8
+ let(:signed_headers) { double("signed_headers") }
9
+ let(:base_uri) { "https://example.com" }
10
+ let(:partner_id) { "BAR" }
11
+ let(:timeout) { 10 }
12
+ let(:config) { double(uri: base_uri, partner_id: partner_id, timeout: timeout) }
13
+
14
+ context "#new" do
15
+ before do
16
+ allow(AGCOD).to receive(:config) { config }
17
+ allow(AGCOD::Signature).to receive(:new).with(config) { signature }
18
+ end
19
+
20
+ it "sends post request to endpoint uri" do
21
+ expect(signature).to receive(:sign) do |uri, headers, body|
22
+ expect(uri).to eq(URI("#{base_uri}/#{action}"))
23
+ expect(headers.keys).to match_array(%w(content-type x-amz-date accept host x-amz-target date))
24
+ expect(headers["content-type"]).to eq("application/json")
25
+ expect(headers["x-amz-target"]).to eq("com.amazonaws.agcod.AGCODService.#{action}")
26
+ expect(JSON.parse(body)["partnerId"]).to eq(partner_id)
27
+ end.and_return(signed_headers)
28
+
29
+ expect(HTTParty).to receive(:post) do |uri, options|
30
+ expect(uri).to eq(URI("#{base_uri}/#{action}"))
31
+ expect(JSON.parse(options[:body])["partnerId"]).to eq(partner_id)
32
+ expect(options[:headers]).to eq(signed_headers)
33
+ expect(options[:timeout]).to eq(timeout)
34
+ end.and_return(double(body: params.to_json))
35
+
36
+ AGCOD::Request.new(action, params)
37
+ end
38
+
39
+ it "sets response" do
40
+ expect(signature).to receive(:sign) { signed_headers }
41
+ expect(HTTParty).to receive(:post) { (double(body: params.to_json)) }
42
+
43
+ response = AGCOD::Request.new(action, params).response
44
+
45
+ expect(response).to be_a(AGCOD::Response)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,66 @@
1
+ require "spec_helper"
2
+ require "aws_agcod/response"
3
+
4
+ describe AGCOD::Response do
5
+ let(:payload) { { foo: "bar" }.to_json }
6
+
7
+ context "#new" do
8
+ it "sets payload and status" do
9
+ response = AGCOD::Response.new(payload)
10
+
11
+ expect(response.payload).not_to be_nil
12
+ expect(response.status).not_to be_nil
13
+ end
14
+
15
+ context "when no status in payload" do
16
+ it "sets status to failure" do
17
+ expect(AGCOD::Response.new(payload).status).to eq("FAILURE")
18
+ end
19
+ end
20
+
21
+ context "when has status in payload" do
22
+ let(:status) { "foo" }
23
+ let(:payload) { { status: status }.to_json }
24
+
25
+ it "sets status as payload's status" do
26
+ expect(AGCOD::Response.new(payload).status).to eq(status)
27
+ end
28
+ end
29
+
30
+ context "when has agcodResponse in payload" do
31
+ let(:status) { "foo" }
32
+ let(:payload) { { agcodResponse: { status: status } }.to_json }
33
+
34
+ it "sets status as agcodResponse's status" do
35
+ expect(AGCOD::Response.new(payload).status).to eq(status)
36
+ end
37
+ end
38
+ end
39
+
40
+ context "success?" do
41
+ context "when status is SUCCESS" do
42
+ let(:payload) { { status: "SUCCESS" }.to_json }
43
+
44
+ it "returns true" do
45
+ expect(AGCOD::Response.new(payload).success?).to be_truthy
46
+ end
47
+ end
48
+
49
+ context "when status is not SUCCESS" do
50
+ it "returns false" do
51
+ expect(AGCOD::Response.new(payload).success?).to be_falsey
52
+ end
53
+ end
54
+ end
55
+
56
+ context "error_message" do
57
+ let(:error_code) { "foo" }
58
+ let(:error_type) { "bar" }
59
+ let(:error_message) { "baz" }
60
+ let(:payload) { { errorCode: error_code, errorType: error_type, message: error_message }.to_json }
61
+
62
+ it "composes error message by error code, type, and message from payload" do
63
+ expect(AGCOD::Response.new(payload).error_message).to eq("#{error_code} #{error_type} - #{error_message}")
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+ require "aws_agcod"
3
+
4
+ describe AGCOD do
5
+ context ".configure" do
6
+ it "yields config" do
7
+ AGCOD.configure do |config|
8
+ expect(config).to be_an_instance_of(AGCOD::Config)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require "pathname"
2
+
3
+ ROOT_PATH = Pathname.new(__FILE__).join("../..").expand_path
4
+ $LOAD_PATH.unshift(ROOT_PATH.join("lib"))
5
+
6
+ RSpec.configure do |config|
7
+ # Run specs in random order to surface order dependencies. If you find an
8
+ # order dependency and want to debug it, you can fix the order by providing
9
+ # the seed, which is printed after each run.
10
+ # --seed 1234
11
+ config.order = "random"
12
+
13
+ # Disable the should syntax compeletely; we use the expect syntax only.
14
+ config.expect_with :rspec do |c|
15
+ c.syntax = :expect
16
+ end
17
+ end
metadata CHANGED
@@ -1,79 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_agcod
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
  - Xenor Chang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.13'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.13'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.1'
62
- - - ! '>='
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: 3.1.0
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ~>
69
+ - - "~>"
70
70
  - !ruby/object:Gem::Version
71
71
  version: '3.1'
72
- - - ! '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: 3.1.0
75
- description: ! "Amazon Gift Code On Demand (AGCOD) API v2 implementation for\n distribute
76
- Amazon gift cards (gift codes) instantly in any denomination"
75
+ description: |-
76
+ Amazon Gift Code On Demand (AGCOD) API v2 implementation for
77
+ distribute Amazon gift cards (gift codes) instantly in any denomination
77
78
  email:
78
79
  - xenor@listia.com
79
80
  executables: []
@@ -92,6 +93,14 @@ files:
92
93
  - lib/aws_agcod/response.rb
93
94
  - lib/aws_agcod/signature.rb
94
95
  - lib/aws_agcod/version.rb
96
+ - spec/aws_agcod/cancel_gift_card_spec.rb
97
+ - spec/aws_agcod/config_spec.rb
98
+ - spec/aws_agcod/create_gift_card_spec.rb
99
+ - spec/aws_agcod/gift_card_activity_list_spec.rb
100
+ - spec/aws_agcod/request_spec.rb
101
+ - spec/aws_agcod/response_spec.rb
102
+ - spec/aws_agcod_spec.rb
103
+ - spec/spec_helper.rb
95
104
  homepage: https://github.com/listia/aws-agcod
96
105
  licenses:
97
106
  - MIT
@@ -102,18 +111,26 @@ require_paths:
102
111
  - lib
103
112
  required_ruby_version: !ruby/object:Gem::Requirement
104
113
  requirements:
105
- - - ! '>='
114
+ - - ">="
106
115
  - !ruby/object:Gem::Version
107
116
  version: '0'
108
117
  required_rubygems_version: !ruby/object:Gem::Requirement
109
118
  requirements:
110
- - - ! '>='
119
+ - - ">="
111
120
  - !ruby/object:Gem::Version
112
121
  version: '0'
113
122
  requirements: []
114
123
  rubyforge_project:
115
- rubygems_version: 2.4.5
124
+ rubygems_version: 2.2.2
116
125
  signing_key:
117
126
  specification_version: 4
118
127
  summary: AWS AGCOD API v2 endpoints implementation
119
- test_files: []
128
+ test_files:
129
+ - spec/aws_agcod/cancel_gift_card_spec.rb
130
+ - spec/aws_agcod/config_spec.rb
131
+ - spec/aws_agcod/create_gift_card_spec.rb
132
+ - spec/aws_agcod/gift_card_activity_list_spec.rb
133
+ - spec/aws_agcod/request_spec.rb
134
+ - spec/aws_agcod/response_spec.rb
135
+ - spec/aws_agcod_spec.rb
136
+ - spec/spec_helper.rb