aws_agcod 0.0.2 → 0.0.3
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 +8 -8
- data/README.md +76 -1
- data/lib/aws_agcod.rb +8 -22
- data/lib/aws_agcod/cancel_gift_card.rb +4 -1
- data/lib/aws_agcod/config.rb +11 -0
- data/lib/aws_agcod/create_gift_card.rb +2 -1
- data/lib/aws_agcod/gift_card_activity_list.rb +54 -0
- data/lib/aws_agcod/request.rb +4 -10
- data/lib/aws_agcod/response.rb +7 -1
- data/lib/aws_agcod/signature.rb +3 -4
- data/lib/aws_agcod/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGZjMTRlM2Q2ZjhlYjMzZjdiMjE1NmIxNjk3NThjNjM5YTdmODc3YQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjZjNzkxNmZhZWVmYzA4OTQzNTUxNWFhMmFjYmNjMDM5MjQwN2Q3OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDdlMGI0ZmQ0MGM3ZjhhNzNiZmY0YWVkMTZiNmI0NTY2MTVhNzYwM2VkM2Y4
|
10
|
+
NGM5NDIyZjI3YWUwZjAxYjkzZGJkZmNkOWZiZDA5MGM3ODEwOGM5ZmJhZTJh
|
11
|
+
YzdiZTc5YTFkNjIzYWY2OWU2OWRkZjNjY2UyNDU5MjM0M2I1ODM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmMyYzE5ODZiMjc0YThmMDQzY2U4ZDkzZWJhNThkZjI5NmM0MWIyNTMzNGU1
|
14
|
+
MmQ4M2QwODUxNDcwMGVjMzAyM2E3ZjE2Y2Q1Yjc4MTg2YWY0NTE3YTEzZDhj
|
15
|
+
OTI1YjRiZGY0Njk4OWQyYWE4NjAwM2YyN2Y5MmI3OTdhNThlYzY=
|
data/README.md
CHANGED
@@ -20,8 +20,83 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
#### Configure
|
24
24
|
|
25
|
+
```ruby
|
26
|
+
require "aws_agcod"
|
27
|
+
|
28
|
+
AwsAgcod.configure do |config|
|
29
|
+
config.access_key = "YOUR_ACCESS_KEY"
|
30
|
+
config.secret_key = "YOUR_SECRET_KEY"
|
31
|
+
config.partner_id = "PARTNER_ID"
|
32
|
+
config.uri = "https://agcod-v2-gamma.amazon.com" # default, sandbox endpoint
|
33
|
+
config.partner_id = "us-east-1" # default
|
34
|
+
end
|
35
|
+
```
|
36
|
+
|
37
|
+
#### Create Gift Code/Card
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
request_id = "test"
|
41
|
+
amount = 10 # USD
|
42
|
+
|
43
|
+
request = AwsAgcod::CreateGiftCard.new(request_id, amount)
|
44
|
+
|
45
|
+
# When succeed
|
46
|
+
if request.success?
|
47
|
+
request.claim_code # => code for the gift card
|
48
|
+
request.gc_id # => gift card id
|
49
|
+
request.request_id # => your request id
|
50
|
+
else
|
51
|
+
# When failed
|
52
|
+
request.error_message # => Error response from AGCOD service
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
#### Cancel Gift Code/Card
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
request_id = "test"
|
60
|
+
gc_id = "test_gc_id"
|
61
|
+
|
62
|
+
request = AwsAgcod::CancelGiftCard.new(request_id, gc_id)
|
63
|
+
|
64
|
+
# When failed
|
65
|
+
unless request.success?
|
66
|
+
request.error_message # => Error response from AGCOD service
|
67
|
+
end
|
68
|
+
```
|
69
|
+
|
70
|
+
#### Get Gift Code/Card activities
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
request_id = "test"
|
74
|
+
start_time = Time.now - 86400
|
75
|
+
end_time = Time.now
|
76
|
+
page = 1
|
77
|
+
per_page = 100
|
78
|
+
show_no_ops = false # Wehther to show activities with no operation or not
|
79
|
+
|
80
|
+
request = AwsAgcod::GiftCardActivityList.new(request_id, start_time, end_time, page, per_page, show_no_ops)
|
81
|
+
|
82
|
+
# When succeed
|
83
|
+
if request.success?
|
84
|
+
request.results.each do |activity|
|
85
|
+
activity.status # => SUCCESS, FAILURE, RESEND
|
86
|
+
activity.created_at
|
87
|
+
activity.type
|
88
|
+
activity.card_number
|
89
|
+
activity.amount
|
90
|
+
activity.error_code
|
91
|
+
activity.gc_id
|
92
|
+
activity.partner_id
|
93
|
+
activity.request_id
|
94
|
+
end
|
95
|
+
else
|
96
|
+
# When failed
|
97
|
+
request.error_message # => Error response from AGCOD service
|
98
|
+
end
|
99
|
+
```
|
25
100
|
## Contributing
|
26
101
|
|
27
102
|
1. Fork it ( https://github.com/[my-github-username]/aws_agcod/fork )
|
data/lib/aws_agcod.rb
CHANGED
@@ -1,33 +1,19 @@
|
|
1
1
|
require "aws_agcod/version"
|
2
|
+
require "aws_agcod/config"
|
2
3
|
require "aws_agcod/create_gift_card"
|
3
4
|
require "aws_agcod/cancel_gift_card"
|
5
|
+
require "aws_agcod/gift_card_activity_list"
|
4
6
|
|
5
7
|
module AwsAgcod
|
6
|
-
|
7
|
-
|
8
|
-
else
|
9
|
-
Pathname.new(__FILE__).join("../..").expand_path
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.env
|
13
|
-
if defined?(Rails)
|
14
|
-
Rails.env
|
15
|
-
else
|
16
|
-
@enviroment || "development"
|
17
|
-
end
|
18
|
-
end
|
8
|
+
def self.configure(&block)
|
9
|
+
@config = Config.new
|
19
10
|
|
20
|
-
|
21
|
-
@enviroment = enviroment
|
22
|
-
end
|
11
|
+
yield @config
|
23
12
|
|
24
|
-
|
25
|
-
@config_file || ROOT_PATH.join("config/agcod.yml")
|
13
|
+
nil
|
26
14
|
end
|
27
15
|
|
28
|
-
def self.
|
29
|
-
|
30
|
-
@config_file = ROOT_PATH.join(file_path)
|
31
|
-
end
|
16
|
+
def self.config
|
17
|
+
@config
|
32
18
|
end
|
33
19
|
end
|
@@ -7,7 +7,10 @@ module AwsAgcod
|
|
7
7
|
def_delegators :@response, :success?, :error_message
|
8
8
|
|
9
9
|
def initialize(request_id, gc_id)
|
10
|
-
@response = Request.new("CancelGiftCard",
|
10
|
+
@response = Request.new("CancelGiftCard",
|
11
|
+
"creationRequestId" => "#{AwsAgcod.config.partner_id}#{request_id}",
|
12
|
+
"gcId" => gc_id
|
13
|
+
).response
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
@@ -7,7 +7,8 @@ module AwsAgcod
|
|
7
7
|
def_delegators :@response, :success?, :error_message
|
8
8
|
|
9
9
|
def initialize(request_id, amount)
|
10
|
-
@response = Request.new("CreateGiftCard",
|
10
|
+
@response = Request.new("CreateGiftCard",
|
11
|
+
"creationRequestId" => "#{AwsAgcod.config.partner_id}#{request_id}",
|
11
12
|
"value" => {
|
12
13
|
"currencyCode" => "USD",
|
13
14
|
"amount" => amount
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "aws_agcod/request"
|
2
|
+
|
3
|
+
module AwsAgcod
|
4
|
+
class GiftCardActivityListError < StandardError; end
|
5
|
+
|
6
|
+
class GiftCardActivity
|
7
|
+
attr_reader :status, :created_at, :type, :card_number, :amount, :error_code,
|
8
|
+
:gc_id, :partner_id, :request_id
|
9
|
+
|
10
|
+
def initialize(payload)
|
11
|
+
@payload = payload
|
12
|
+
@status = payload["activityStatus"]
|
13
|
+
@created_at = payload["activityTime"]
|
14
|
+
@type = payload["activityType"]
|
15
|
+
@card_number = payload["cardNumber"]
|
16
|
+
@amount = payload["cardValue"]["amount"] if payload["cardValue"]
|
17
|
+
@error_code = payload["failureCode"]
|
18
|
+
@gc_id = payload["gcId"]
|
19
|
+
@partner_id = payload["partnerId"]
|
20
|
+
@request_id = payload["requestId"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def is_real?
|
24
|
+
@payload["isRealOp"] == "true"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class GiftCardActivityList
|
29
|
+
extend Forwardable
|
30
|
+
|
31
|
+
LIMIT = 1000 # limit per request
|
32
|
+
TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
|
33
|
+
|
34
|
+
def_delegators :@response, :success?, :error_message
|
35
|
+
|
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
|
38
|
+
|
39
|
+
@response = Request.new("GetGiftCardActivityPage",
|
40
|
+
"requestId" => request_id,
|
41
|
+
"utcStartDate" => start_time.strftime(TIME_FORMAT),
|
42
|
+
"utcEndDate" => end_time.strftime(TIME_FORMAT),
|
43
|
+
"pageIndex" => (page - 1) * per_page,
|
44
|
+
"pageSize" => per_page,
|
45
|
+
"showNoOps" => show_no_ops
|
46
|
+
).response
|
47
|
+
end
|
48
|
+
|
49
|
+
def results
|
50
|
+
@response["cardActivityList"].map { |payload| GiftCardActivity.new(payload) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
data/lib/aws_agcod/request.rb
CHANGED
@@ -9,9 +9,8 @@ module AwsAgcod
|
|
9
9
|
|
10
10
|
attr_reader :response
|
11
11
|
|
12
|
-
def initialize(action,
|
12
|
+
def initialize(action, params)
|
13
13
|
@action = action
|
14
|
-
@request_id = request_id
|
15
14
|
@params = params
|
16
15
|
|
17
16
|
@response = Response.new(HTTParty.post(uri, body: body, headers: signed_headers, timeout: 30).body)
|
@@ -31,21 +30,16 @@ module AwsAgcod
|
|
31
30
|
"date" => time.to_s
|
32
31
|
}
|
33
32
|
|
34
|
-
Signature.new(config).sign(uri, headers, body)
|
35
|
-
end
|
36
|
-
|
37
|
-
def config
|
38
|
-
@config ||= YAML.load_file(AwsAgcod.config_file)[AwsAgcod.env]
|
33
|
+
Signature.new(AwsAgcod.config).sign(uri, headers, body)
|
39
34
|
end
|
40
35
|
|
41
36
|
def uri
|
42
|
-
@uri ||= URI("#{config
|
37
|
+
@uri ||= URI("#{AwsAgcod.config.uri}/#{@action}")
|
43
38
|
end
|
44
39
|
|
45
40
|
def body
|
46
41
|
@body ||= @params.merge(
|
47
|
-
"partnerId" => config
|
48
|
-
"creationRequestId" => "#{config["partner_id"]}#{@request_id}"
|
42
|
+
"partnerId" => AwsAgcod.config.partner_id
|
49
43
|
).to_json
|
50
44
|
end
|
51
45
|
end
|
data/lib/aws_agcod/response.rb
CHANGED
@@ -11,7 +11,13 @@ module AwsAgcod
|
|
11
11
|
# SUCCESS -- Operation succeeded
|
12
12
|
# FAILURE -- Operation failed
|
13
13
|
# RESEND -- A temporary/recoverable system failure that can be resolved by the partner retrying the request
|
14
|
-
@status =
|
14
|
+
@status = if payload["status"]
|
15
|
+
payload["status"]
|
16
|
+
elsif payload["agcodResponse"]
|
17
|
+
payload["agcodResponse"]["status"]
|
18
|
+
else
|
19
|
+
"FAILURE"
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
def success?
|
data/lib/aws_agcod/signature.rb
CHANGED
@@ -9,12 +9,11 @@ require "pathname"
|
|
9
9
|
module AwsAgcod
|
10
10
|
class Signature
|
11
11
|
SERVICE = "AGCODService"
|
12
|
-
DEFAULT_REGION = "us-east-1"
|
13
12
|
|
14
13
|
def initialize(credentials)
|
15
|
-
@access_key = credentials
|
16
|
-
@secret_key = credentials
|
17
|
-
@region = credentials
|
14
|
+
@access_key = credentials.access_key
|
15
|
+
@secret_key = credentials.secret_key
|
16
|
+
@region = credentials.region || DEFAULT_REGION
|
18
17
|
end
|
19
18
|
|
20
19
|
def sign(uri, headers, body = "")
|
data/lib/aws_agcod/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws_agcod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xenor Chang
|
@@ -85,7 +85,9 @@ files:
|
|
85
85
|
- Rakefile
|
86
86
|
- lib/aws_agcod.rb
|
87
87
|
- lib/aws_agcod/cancel_gift_card.rb
|
88
|
+
- lib/aws_agcod/config.rb
|
88
89
|
- lib/aws_agcod/create_gift_card.rb
|
90
|
+
- lib/aws_agcod/gift_card_activity_list.rb
|
89
91
|
- lib/aws_agcod/request.rb
|
90
92
|
- lib/aws_agcod/response.rb
|
91
93
|
- lib/aws_agcod/signature.rb
|