pboling-remit 0.0.8 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- metadata +19 -72
- data/LICENSE +0 -20
- data/README.markdown +0 -91
- data/lib/remit.rb +0 -127
- data/lib/remit/common.rb +0 -110
- data/lib/remit/data_types.rb +0 -170
- data/lib/remit/error_codes.rb +0 -118
- data/lib/remit/get_pipeline.rb +0 -212
- data/lib/remit/ipn_request.rb +0 -46
- data/lib/remit/operations/cancel_token.rb +0 -18
- data/lib/remit/operations/discard_results.rb +0 -18
- data/lib/remit/operations/fund_prepaid.rb +0 -31
- data/lib/remit/operations/get_account_activity.rb +0 -60
- data/lib/remit/operations/get_account_balance.rb +0 -29
- data/lib/remit/operations/get_all_credit_instruments.rb +0 -18
- data/lib/remit/operations/get_all_prepaid_instruments.rb +0 -18
- data/lib/remit/operations/get_debt_balance.rb +0 -23
- data/lib/remit/operations/get_outstanding_debt_balance.rb +0 -22
- data/lib/remit/operations/get_payment_instruction.rb +0 -21
- data/lib/remit/operations/get_prepaid_balance.rb +0 -23
- data/lib/remit/operations/get_results.rb +0 -27
- data/lib/remit/operations/get_token_by_caller.rb +0 -19
- data/lib/remit/operations/get_token_usage.rb +0 -18
- data/lib/remit/operations/get_tokens.rb +0 -20
- data/lib/remit/operations/get_total_prepaid_liability.rb +0 -22
- data/lib/remit/operations/get_transaction.rb +0 -54
- data/lib/remit/operations/install_payment_instruction.rb +0 -22
- data/lib/remit/operations/pay.rb +0 -30
- data/lib/remit/operations/refund.rb +0 -44
- data/lib/remit/operations/reserve.rb +0 -30
- data/lib/remit/operations/retry_transaction.rb +0 -18
- data/lib/remit/operations/settle.rb +0 -20
- data/lib/remit/operations/settle_debt.rb +0 -30
- data/lib/remit/operations/subscribe_for_caller_notification.rb +0 -18
- data/lib/remit/operations/unsubscribe_for_caller_notification.rb +0 -17
- data/lib/remit/operations/write_off_debt.rb +0 -28
- data/lib/remit/pipeline_response.rb +0 -64
- data/spec/integrations/get_account_activity_spec.rb +0 -36
- data/spec/integrations/get_tokens_spec.rb +0 -38
- data/spec/integrations/integrations_helper.rb +0 -8
- data/spec/spec_helper.rb +0 -36
- data/spec/units/get_pipeline_spec.rb +0 -165
- data/spec/units/get_results_spec.rb +0 -49
- data/spec/units/ipn_request_spec.rb +0 -32
- data/spec/units/pay_spec.rb +0 -133
- data/spec/units/units_helper.rb +0 -4
metadata
CHANGED
@@ -1,79 +1,34 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pboling-remit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Hunt
|
8
|
-
autorequire:
|
8
|
+
autorequire: remit
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-02-25 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: relax
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.7
|
24
|
-
version:
|
14
|
+
dependencies: []
|
15
|
+
|
25
16
|
description: Ruby API for Amazon Web Services Flexible Payment Service
|
26
|
-
email:
|
17
|
+
email: ""
|
27
18
|
executables: []
|
28
19
|
|
29
20
|
extensions: []
|
30
21
|
|
31
|
-
extra_rdoc_files:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
- lib/remit/data_types.rb
|
38
|
-
- lib/remit/error_codes.rb
|
39
|
-
- lib/remit/get_pipeline.rb
|
40
|
-
- lib/remit/ipn_request.rb
|
41
|
-
- lib/remit/operations/cancel_token.rb
|
42
|
-
- lib/remit/operations/discard_results.rb
|
43
|
-
- lib/remit/operations/fund_prepaid.rb
|
44
|
-
- lib/remit/operations/get_account_activity.rb
|
45
|
-
- lib/remit/operations/get_account_balance.rb
|
46
|
-
- lib/remit/operations/get_all_credit_instruments.rb
|
47
|
-
- lib/remit/operations/get_all_prepaid_instruments.rb
|
48
|
-
- lib/remit/operations/get_debt_balance.rb
|
49
|
-
- lib/remit/operations/get_outstanding_debt_balance.rb
|
50
|
-
- lib/remit/operations/get_payment_instruction.rb
|
51
|
-
- lib/remit/operations/get_prepaid_balance.rb
|
52
|
-
- lib/remit/operations/get_results.rb
|
53
|
-
- lib/remit/operations/get_token_by_caller.rb
|
54
|
-
- lib/remit/operations/get_token_usage.rb
|
55
|
-
- lib/remit/operations/get_tokens.rb
|
56
|
-
- lib/remit/operations/get_total_prepaid_liability.rb
|
57
|
-
- lib/remit/operations/get_transaction.rb
|
58
|
-
- lib/remit/operations/install_payment_instruction.rb
|
59
|
-
- lib/remit/operations/pay.rb
|
60
|
-
- lib/remit/operations/refund.rb
|
61
|
-
- lib/remit/operations/reserve.rb
|
62
|
-
- lib/remit/operations/retry_transaction.rb
|
63
|
-
- lib/remit/operations/settle.rb
|
64
|
-
- lib/remit/operations/settle_debt.rb
|
65
|
-
- lib/remit/operations/subscribe_for_caller_notification.rb
|
66
|
-
- lib/remit/operations/unsubscribe_for_caller_notification.rb
|
67
|
-
- lib/remit/operations/write_off_debt.rb
|
68
|
-
- lib/remit/pipeline_response.rb
|
69
|
-
- LICENSE
|
70
|
-
- README.markdown
|
71
|
-
has_rdoc: true
|
72
|
-
homepage: http://github.com/tylerhunt/remit
|
73
|
-
licenses:
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files: []
|
25
|
+
|
26
|
+
has_rdoc: false
|
27
|
+
homepage: http://github.com/tylerhunt/remit/tree/master
|
74
28
|
post_install_message:
|
75
29
|
rdoc_options:
|
76
|
-
- --
|
30
|
+
- --title
|
31
|
+
- AWS FPS Ruby API
|
77
32
|
require_paths:
|
78
33
|
- lib
|
79
34
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -90,18 +45,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
45
|
version:
|
91
46
|
requirements: []
|
92
47
|
|
93
|
-
rubyforge_project:
|
94
|
-
rubygems_version: 1.
|
48
|
+
rubyforge_project:
|
49
|
+
rubygems_version: 1.2.0
|
95
50
|
signing_key:
|
96
51
|
specification_version: 2
|
97
|
-
summary:
|
98
|
-
test_files:
|
99
|
-
|
100
|
-
- spec/integrations/get_tokens_spec.rb
|
101
|
-
- spec/units/get_pipeline_spec.rb
|
102
|
-
- spec/units/get_results_spec.rb
|
103
|
-
- spec/units/ipn_request_spec.rb
|
104
|
-
- spec/units/pay_spec.rb
|
105
|
-
- spec/integrations/integrations_helper.rb
|
106
|
-
- spec/spec_helper.rb
|
107
|
-
- spec/units/units_helper.rb
|
52
|
+
summary: AWS FPS API
|
53
|
+
test_files: []
|
54
|
+
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2007-2009 Tyler Hunt
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
Remit
|
2
|
-
=====
|
3
|
-
|
4
|
-
This API provides access to the Amazon Flexible Payment Service (FPS). After
|
5
|
-
trying to get the SOAP version of the API written, I began working on this REST
|
6
|
-
version to provide a cohesive means of access to all of the functionality of
|
7
|
-
the FPS without having to get dirty dealing with SOAP requests.
|
8
|
-
|
9
|
-
I hope you enjoy using it as much as I've enjoyed writing it. I'm interested to
|
10
|
-
hear what sort of uses you find for it. If you find any bugs, let me know (or
|
11
|
-
better yet, submit a patch).
|
12
|
-
|
13
|
-
|
14
|
-
Sandbox
|
15
|
-
-------
|
16
|
-
|
17
|
-
Amazon provides a testing environment for the FPS called a sandbox. You may
|
18
|
-
(and should) use the sandbox while testing your application. It can be enabled
|
19
|
-
by passing a value of true to the last argument of the API constructor.
|
20
|
-
|
21
|
-
|
22
|
-
Getting Started
|
23
|
-
---------------
|
24
|
-
|
25
|
-
The following example shows how to load up the API, initialize the service, and
|
26
|
-
make a simple call to get the tokens stored on the account:
|
27
|
-
|
28
|
-
gem 'remit'
|
29
|
-
require 'remit'
|
30
|
-
|
31
|
-
ACCESS_KEY = '<your AWS access key>'
|
32
|
-
SECRET_KEY = '<your AWS secret key>'
|
33
|
-
|
34
|
-
# connect using the API's sandbox mode
|
35
|
-
remit = Remit::API.new(ACCESS_KEY, SECRET_KEY, true)
|
36
|
-
|
37
|
-
response = remit.get_tokens
|
38
|
-
puts response.tokens.first.token_id
|
39
|
-
|
40
|
-
|
41
|
-
Using with Rails
|
42
|
-
----------------
|
43
|
-
|
44
|
-
To use Remit in a Rails application, you must first specify a dependency on the
|
45
|
-
Remit gem in your config/environment.rb file:
|
46
|
-
|
47
|
-
config.gem 'remit', :version => '~> 0.0.1'
|
48
|
-
|
49
|
-
Then you should create an initializer to configure your Amazon keys. Create the
|
50
|
-
file config/initializers/remit.rb with the following contents:
|
51
|
-
|
52
|
-
config_file = File.join(Rails.root, 'config', 'amazon_fps.yml')
|
53
|
-
config = YAML.load_file(config_file)[RAILS_ENV].symbolize_keys
|
54
|
-
|
55
|
-
FPS_ACCESS_KEY = config[:access_key]
|
56
|
-
FPS_SECRET_KEY = config[:secret_key]
|
57
|
-
|
58
|
-
Then create the YAML file config/amazon_fps.yml:
|
59
|
-
|
60
|
-
development: &sandbox
|
61
|
-
access_key: <your sandbox access key>
|
62
|
-
secret_key: <your sandbox secret key>
|
63
|
-
|
64
|
-
test:
|
65
|
-
<<: *sandbox
|
66
|
-
|
67
|
-
production:
|
68
|
-
access_key: <your access key>
|
69
|
-
secret_key: <your secret key>
|
70
|
-
|
71
|
-
To instantiate and use the Remit API in your application, you could define a
|
72
|
-
method in your ApplicationController like this:
|
73
|
-
|
74
|
-
def remit
|
75
|
-
@remit ||= begin
|
76
|
-
sandbox = !Rails.env.production?
|
77
|
-
Remit::API.new(FPS_ACCESS_KEY, FPS_SECRET_KEY, sandbox)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
|
82
|
-
Sites Using Remit
|
83
|
-
-----------------
|
84
|
-
|
85
|
-
The following production sites are currently using Remit:
|
86
|
-
|
87
|
-
* http://www.storenvy.com/
|
88
|
-
* http://www.obsidianportal.com/
|
89
|
-
|
90
|
-
|
91
|
-
Copyright (c) 2007-2009 Tyler Hunt, released under the MIT license
|
data/lib/remit.rb
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
2
|
-
|
3
|
-
require 'openssl'
|
4
|
-
require 'net/https'
|
5
|
-
require 'uri'
|
6
|
-
require 'date'
|
7
|
-
require 'base64'
|
8
|
-
require 'erb'
|
9
|
-
|
10
|
-
require 'rubygems'
|
11
|
-
|
12
|
-
gem 'pboling-relax', '0.0.7.1'
|
13
|
-
require 'relax'
|
14
|
-
|
15
|
-
require 'remit/common'
|
16
|
-
require 'remit/data_types'
|
17
|
-
require 'remit/error_codes'
|
18
|
-
require 'remit/ipn_request'
|
19
|
-
require 'remit/get_pipeline'
|
20
|
-
require 'remit/pipeline_response'
|
21
|
-
|
22
|
-
require 'remit/operations/cancel_token'
|
23
|
-
require 'remit/operations/discard_results'
|
24
|
-
require 'remit/operations/fund_prepaid'
|
25
|
-
require 'remit/operations/get_account_activity'
|
26
|
-
require 'remit/operations/get_account_balance'
|
27
|
-
require 'remit/operations/get_all_credit_instruments'
|
28
|
-
require 'remit/operations/get_all_prepaid_instruments'
|
29
|
-
require 'remit/operations/get_debt_balance'
|
30
|
-
require 'remit/operations/get_outstanding_debt_balance'
|
31
|
-
require 'remit/operations/get_payment_instruction'
|
32
|
-
require 'remit/operations/get_prepaid_balance'
|
33
|
-
require 'remit/operations/get_results'
|
34
|
-
require 'remit/operations/get_token_by_caller'
|
35
|
-
require 'remit/operations/get_token_usage'
|
36
|
-
require 'remit/operations/get_tokens'
|
37
|
-
require 'remit/operations/get_total_prepaid_liability'
|
38
|
-
require 'remit/operations/get_transaction'
|
39
|
-
require 'remit/operations/install_payment_instruction'
|
40
|
-
require 'remit/operations/pay'
|
41
|
-
require 'remit/operations/refund'
|
42
|
-
require 'remit/operations/reserve'
|
43
|
-
require 'remit/operations/retry_transaction'
|
44
|
-
require 'remit/operations/settle'
|
45
|
-
require 'remit/operations/settle_debt'
|
46
|
-
require 'remit/operations/subscribe_for_caller_notification'
|
47
|
-
require 'remit/operations/unsubscribe_for_caller_notification'
|
48
|
-
require 'remit/operations/write_off_debt'
|
49
|
-
|
50
|
-
module Remit
|
51
|
-
class API < Relax::Service
|
52
|
-
include CancelToken
|
53
|
-
include DiscardResults
|
54
|
-
include FundPrepaid
|
55
|
-
include GetAccountActivity
|
56
|
-
include GetAccountBalance
|
57
|
-
include GetAllCreditInstruments
|
58
|
-
include GetAllPrepaidInstruments
|
59
|
-
include GetDebtBalance
|
60
|
-
include GetOutstandingDebtBalance
|
61
|
-
include GetPaymentInstruction
|
62
|
-
include GetPipeline
|
63
|
-
include GetPrepaidBalance
|
64
|
-
include GetResults
|
65
|
-
include GetTokenUsage
|
66
|
-
include GetTokens
|
67
|
-
include GetTokenByCaller
|
68
|
-
include GetTotalPrepaidLiability
|
69
|
-
include GetTransaction
|
70
|
-
include InstallPaymentInstruction
|
71
|
-
include Pay
|
72
|
-
include Refund
|
73
|
-
include Reserve
|
74
|
-
include RetryTransaction
|
75
|
-
include Settle
|
76
|
-
include SettleDebt
|
77
|
-
include SubscribeForCallerNotification
|
78
|
-
include UnsubscribeForCallerNotification
|
79
|
-
include WriteOffDebt
|
80
|
-
|
81
|
-
API_ENDPOINT = 'https://fps.amazonaws.com/'.freeze
|
82
|
-
API_SANDBOX_ENDPOINT = 'https://fps.sandbox.amazonaws.com/'.freeze
|
83
|
-
PIPELINE_URL = 'https://authorize.payments.amazon.com/cobranded-ui/actions/start'.freeze
|
84
|
-
PIPELINE_SANDBOX_URL = 'https://authorize.payments-sandbox.amazon.com/cobranded-ui/actions/start'.freeze
|
85
|
-
API_VERSION = Date.new(2008, 9, 17).to_s.freeze
|
86
|
-
SIGNATURE_VERSION = 1.freeze
|
87
|
-
|
88
|
-
attr_reader :access_key
|
89
|
-
attr_reader :secret_key
|
90
|
-
attr_reader :pipeline_url
|
91
|
-
|
92
|
-
def initialize(access_key, secret_key, sandbox=false)
|
93
|
-
@access_key = access_key
|
94
|
-
@secret_key = secret_key
|
95
|
-
@pipeline_url = sandbox ? PIPELINE_SANDBOX_URL : PIPELINE_URL
|
96
|
-
|
97
|
-
super(sandbox ? API_SANDBOX_ENDPOINT : API_ENDPOINT)
|
98
|
-
end
|
99
|
-
|
100
|
-
def new_query(query={})
|
101
|
-
SignedQuery.new(@endpoint, @secret_key, query)
|
102
|
-
end
|
103
|
-
private :new_query
|
104
|
-
|
105
|
-
def default_query
|
106
|
-
new_query({
|
107
|
-
:AWSAccessKeyId => @access_key,
|
108
|
-
:SignatureVersion => SIGNATURE_VERSION,
|
109
|
-
:Version => API_VERSION,
|
110
|
-
:Timestamp => Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
|
111
|
-
})
|
112
|
-
end
|
113
|
-
private :default_query
|
114
|
-
|
115
|
-
def query(request)
|
116
|
-
query = super
|
117
|
-
query[:Signature] = sign(query)
|
118
|
-
query
|
119
|
-
end
|
120
|
-
private :query
|
121
|
-
|
122
|
-
def sign(values)
|
123
|
-
SignedQuery.signature(@secret_key,values)
|
124
|
-
end
|
125
|
-
private :sign
|
126
|
-
end
|
127
|
-
end
|
data/lib/remit/common.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
require 'base64'
|
2
|
-
require 'erb'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'relax'
|
7
|
-
|
8
|
-
module Remit
|
9
|
-
class Request < Relax::Request
|
10
|
-
def self.action(name)
|
11
|
-
parameter :action, :value => name
|
12
|
-
end
|
13
|
-
|
14
|
-
def convert_key(key)
|
15
|
-
key.to_s.gsub(/(^|_)(.)/) { $2.upcase }.to_sym
|
16
|
-
end
|
17
|
-
protected :convert_key
|
18
|
-
end
|
19
|
-
|
20
|
-
class BaseResponse < Relax::Response
|
21
|
-
def node_name(name, namespace=nil)
|
22
|
-
super(name.to_s.gsub(/(^|_)(.)/) { $2.upcase }, namespace)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
class Response < BaseResponse
|
27
|
-
parameter :request_id
|
28
|
-
|
29
|
-
attr_accessor :errors
|
30
|
-
attr_accessor :xml
|
31
|
-
|
32
|
-
def initialize(xml)
|
33
|
-
super
|
34
|
-
|
35
|
-
@xml = xml
|
36
|
-
@errors = []
|
37
|
-
if is?(:Response) && has?(:Errors)
|
38
|
-
@errors = elements(:Errors).collect do |error|
|
39
|
-
Error.new(error)
|
40
|
-
end
|
41
|
-
else
|
42
|
-
@errors = elements('Errors/Errors').collect do |error|
|
43
|
-
ServiceError.new(error)
|
44
|
-
end unless successful?
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def successful?
|
49
|
-
@errors.empty?
|
50
|
-
end
|
51
|
-
|
52
|
-
def node_name(name, namespace=nil)
|
53
|
-
super(name.to_s.split('/').collect{ |tag|
|
54
|
-
tag.gsub(/(^|_)(.)/) { $2.upcase }
|
55
|
-
}.join('/'), namespace)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
#do we really need to pass in a uri and query params? Can't we just pass in the uri?
|
60
|
-
class SignedQuery < Relax::Query
|
61
|
-
def initialize(uri, secret_key, query={})
|
62
|
-
super(query)
|
63
|
-
@uri = URI.parse(uri.to_s)
|
64
|
-
parse_uri #values in the uri take precedence over the ones in the query
|
65
|
-
@secret_key = secret_key
|
66
|
-
end
|
67
|
-
|
68
|
-
def sign
|
69
|
-
delete(signature_key)
|
70
|
-
store(signature_key, signature)
|
71
|
-
end
|
72
|
-
|
73
|
-
def to_s(signed=true)
|
74
|
-
sign if signed
|
75
|
-
super()
|
76
|
-
end
|
77
|
-
|
78
|
-
def signature
|
79
|
-
self.class.signature(@secret_key,self)
|
80
|
-
end
|
81
|
-
|
82
|
-
def signature_key
|
83
|
-
:awsSignature
|
84
|
-
end
|
85
|
-
|
86
|
-
def parse_uri
|
87
|
-
if @uri.query
|
88
|
-
@uri.query.split('&').each do |parameter|
|
89
|
-
key, value = parameter.split('=', 2)
|
90
|
-
self[key] = self.class.unescape_value(value)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
private :parse_uri
|
95
|
-
|
96
|
-
class << self
|
97
|
-
|
98
|
-
def signature(secret_key,hashable = {})
|
99
|
-
keys = hashable.keys.sort { |a, b| a.to_s.downcase <=> b.to_s.downcase }
|
100
|
-
|
101
|
-
signature = keys.inject('') do |signature, key|
|
102
|
-
value = hashable[key]
|
103
|
-
signature += key.to_s + value.to_s if value
|
104
|
-
end
|
105
|
-
|
106
|
-
Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, secret_key, signature)).strip
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|