pesapal 1.8.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.gitignore +5 -15
- data/.rubocop.yml +18 -10
- data/.travis.yml +6 -4
- data/CHANGELOG.md +12 -1
- data/LICENSE.md +1 -1
- data/README.md +10 -15
- data/docs/.ruby-version +1 -0
- data/docs/Gemfile +4 -0
- data/docs/README.md +10 -0
- data/docs/_config.yml +27 -0
- data/docs/_includes/google-analytics.html +8 -0
- data/docs/_layouts/default.html +53 -0
- data/docs/assets/javascripts/scale.fix.js +17 -0
- data/docs/assets/stylesheets/pygment_trac.css +69 -0
- data/docs/assets/stylesheets/styles.css +287 -0
- data/docs/favicon.ico +0 -0
- data/docs/index.md +302 -0
- data/lib/pesapal.rb +0 -2
- data/lib/pesapal/helper/details.rb +5 -3
- data/lib/pesapal/helper/post.rb +5 -3
- data/lib/pesapal/helper/status.rb +8 -7
- data/lib/pesapal/merchant.rb +55 -141
- data/lib/pesapal/oauth.rb +13 -11
- data/lib/pesapal/version.rb +1 -1
- data/pesapal.gemspec +9 -4
- data/spec/pesapal_merchant_spec.rb +25 -86
- metadata +68 -34
- data/lib/generators/pesapal/install_generator.rb +0 -21
- data/lib/generators/templates/README.md +0 -21
- data/lib/generators/templates/pesapal.yml +0 -9
- data/lib/pesapal/railtie.rb +0 -26
data/lib/pesapal/oauth.rb
CHANGED
@@ -48,7 +48,7 @@ module Pesapal
|
|
48
48
|
chars = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789'
|
49
49
|
nonce = ''
|
50
50
|
length.times { nonce << chars[rand(chars.size)] }
|
51
|
-
|
51
|
+
nonce
|
52
52
|
end
|
53
53
|
|
54
54
|
# Generate the oAuth signature using HMAC-SHA1 algorithm.
|
@@ -116,12 +116,10 @@ module Pesapal
|
|
116
116
|
def self.generate_signature_base_string(http_method, absolute_url, params)
|
117
117
|
# step 1: convert the http method to uppercase
|
118
118
|
http_method = http_method.upcase
|
119
|
-
|
120
119
|
# step 2: percent encode the url
|
121
120
|
url_encoded = parameter_encode(normalized_request_uri(absolute_url))
|
122
|
-
|
123
121
|
# step 3: percent encode the parameter string
|
124
|
-
parameter_string_encoded = parameter_encode(generate_signable_encoded_params_query_string
|
122
|
+
parameter_string_encoded = parameter_encode(generate_signable_encoded_params_query_string(params))
|
125
123
|
|
126
124
|
"#{http_method}&#{url_encoded}&#{parameter_string_encoded}"
|
127
125
|
end
|
@@ -176,15 +174,19 @@ module Pesapal
|
|
176
174
|
#
|
177
175
|
# @return [String] valid constructed URL as per the spec.
|
178
176
|
def self.normalized_request_uri(absolute_url)
|
179
|
-
|
177
|
+
uri = URI.parse(absolute_url)
|
178
|
+
|
179
|
+
scheme = uri.scheme.downcase
|
180
|
+
host = uri.host.downcase
|
181
|
+
path = uri.path
|
182
|
+
port = uri.port
|
180
183
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
port = u.port
|
184
|
+
non_standard_http = scheme == 'http' && port != 80
|
185
|
+
non_standard_https = scheme == 'https' && port != 443
|
186
|
+
uri_with_path = path && (path != '')
|
185
187
|
|
186
|
-
port =
|
187
|
-
path =
|
188
|
+
port = non_standard_http || non_standard_https ? ":#{port}" : ''
|
189
|
+
path = uri_with_path ? path : '/'
|
188
190
|
|
189
191
|
"#{scheme}://#{host}#{port}#{path}"
|
190
192
|
end
|
data/lib/pesapal/version.rb
CHANGED
data/pesapal.gemspec
CHANGED
@@ -8,12 +8,15 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.date = Time.new.getutc.strftime('%Y-%m-%d')
|
9
9
|
spec.authors = ['Job King\'ori Maina']
|
10
10
|
spec.email = ['j@kingori.co']
|
11
|
-
spec.
|
12
|
-
spec.summary = 'Make authenticated Pesapal API calls without the fuss! Handles all the oAuth stuff abstracting any direct interaction with the API endpoints so that you can focus on what matters. Building awesome.'
|
13
|
-
spec.homepage = 'http://itsmrwave.github.io/pesapal-gem'
|
11
|
+
spec.homepage = 'http://itskingori.github.io/pesapal-gem'
|
14
12
|
spec.license = 'MIT'
|
13
|
+
spec.description = 'Make authenticated Pesapal API calls without the fuss!'
|
14
|
+
spec.summary = 'Make authenticated Pesapal API calls without the fuss! '\
|
15
|
+
'Handles all the oAuth stuff abstracting any direct ' \
|
16
|
+
'interaction with the API endpoints so that you can ' \
|
17
|
+
'focus on what matters. Building awesome.'
|
15
18
|
|
16
|
-
spec.files = `git ls-files`.split(
|
19
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
22
|
spec.require_paths = ['lib']
|
@@ -24,9 +27,11 @@ Gem::Specification.new do |spec|
|
|
24
27
|
spec.add_development_dependency 'coveralls'
|
25
28
|
spec.add_development_dependency 'faker'
|
26
29
|
spec.add_development_dependency 'rake'
|
30
|
+
spec.add_development_dependency 'redcarpet'
|
27
31
|
spec.add_development_dependency 'rspec'
|
28
32
|
spec.add_development_dependency 'rubocop'
|
29
33
|
spec.add_development_dependency 'webmock'
|
34
|
+
spec.add_development_dependency 'yard'
|
30
35
|
|
31
36
|
spec.add_runtime_dependency 'htmlentities'
|
32
37
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Pesapal::Merchant do
|
4
|
-
|
5
4
|
let(:order_details) do
|
6
|
-
{
|
5
|
+
{
|
6
|
+
amount: 1000,
|
7
7
|
description: Faker::Lorem.sentence,
|
8
8
|
type: 'MERCHANT',
|
9
9
|
reference: '111-222-333',
|
@@ -16,32 +16,17 @@ describe Pesapal::Merchant do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
let(:default_credentials) do
|
19
|
-
{
|
19
|
+
{
|
20
|
+
callback_url: 'http://0.0.0.0:3000/pesapal/callback',
|
20
21
|
consumer_key: '<YOUR_CONSUMER_KEY>',
|
21
22
|
consumer_secret: '<YOUR_CONSUMER_SECRET>'
|
22
23
|
}
|
23
24
|
end
|
24
25
|
|
25
|
-
let(:demo_endpoints) do
|
26
|
-
{ postpesapaldirectorderv4: 'https://demo.pesapal.com/API/PostPesapalDirectOrderV4',
|
27
|
-
querypaymentstatus: 'https://demo.pesapal.com/API/QueryPaymentStatus',
|
28
|
-
querypaymentdetails: 'https://demo.pesapal.com/API/QueryPaymentDetails'
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
let(:production_endpoints) do
|
33
|
-
{ postpesapaldirectorderv4: 'https://www.pesapal.com/API/PostPesapalDirectOrderV4',
|
34
|
-
querypaymentstatus: 'https://www.pesapal.com/API/QueryPaymentStatus',
|
35
|
-
querypaymentdetails: 'https://www.pesapal.com/API/QueryPaymentDetails'
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
26
|
context 'when mode not specified' do
|
40
|
-
|
41
27
|
let(:pesapal) { Pesapal::Merchant.new }
|
42
28
|
|
43
29
|
describe '#new' do
|
44
|
-
|
45
30
|
it 'is valid object' do
|
46
31
|
expect(pesapal).to be_an_instance_of(Pesapal::Merchant)
|
47
32
|
end
|
@@ -59,20 +44,7 @@ describe Pesapal::Merchant do
|
|
59
44
|
end
|
60
45
|
end
|
61
46
|
|
62
|
-
describe '#change_env' do
|
63
|
-
|
64
|
-
it 'sets default environment variable' do
|
65
|
-
pesapal.change_env
|
66
|
-
expect(pesapal.send(:env)).to eq 'development'
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'sets endpoints for default environment' do
|
70
|
-
expect(pesapal.change_env).to eq(demo_endpoints)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
47
|
describe '#generate_order_url' do
|
75
|
-
|
76
48
|
it 'generates iframe url string' do
|
77
49
|
pesapal.order_details = order_details
|
78
50
|
expect(pesapal.generate_order_url).to match %r{https://demo.pesapal.com/API/PostPesapalDirectOrderV4\?oauth_callback=.*oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_request_data=.*}
|
@@ -80,7 +52,6 @@ describe Pesapal::Merchant do
|
|
80
52
|
end
|
81
53
|
|
82
54
|
describe '#query_payment_status' do
|
83
|
-
|
84
55
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
85
56
|
|
86
57
|
it 'gets pending payment status' do
|
@@ -105,21 +76,21 @@ describe Pesapal::Merchant do
|
|
105
76
|
end
|
106
77
|
|
107
78
|
describe '#query_payment_details' do
|
108
|
-
|
109
79
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
110
80
|
|
111
81
|
it 'gets pending payment details' do
|
112
82
|
request.to_return(status: 200, body: 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
83
|
+
expected_result = {
|
84
|
+
method: 'payment_method',
|
85
|
+
status: 'payment_status',
|
86
|
+
merchant_reference: 'merchant_reference',
|
87
|
+
transaction_tracking_id: 'transaction_tracking_id'
|
88
|
+
}
|
89
|
+
expect(pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq(expected_result)
|
118
90
|
end
|
119
91
|
end
|
120
92
|
|
121
93
|
describe '#ipn_listener' do
|
122
|
-
|
123
94
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
124
95
|
|
125
96
|
it 'gets ipn response for pending status' do
|
@@ -145,11 +116,9 @@ describe Pesapal::Merchant do
|
|
145
116
|
end
|
146
117
|
|
147
118
|
context 'when mode is specified as development' do
|
148
|
-
|
149
119
|
let(:pesapal) { Pesapal::Merchant.new(:development) }
|
150
120
|
|
151
121
|
describe '#new(:development)' do
|
152
|
-
|
153
122
|
it 'is valid object' do
|
154
123
|
expect(pesapal).to be_an_instance_of(Pesapal::Merchant)
|
155
124
|
end
|
@@ -167,20 +136,7 @@ describe Pesapal::Merchant do
|
|
167
136
|
end
|
168
137
|
end
|
169
138
|
|
170
|
-
describe '#change_env(:development)' do
|
171
|
-
|
172
|
-
it 'sets environment variable' do
|
173
|
-
pesapal.change_env :development
|
174
|
-
expect(pesapal.send(:env)).to eq 'development'
|
175
|
-
end
|
176
|
-
|
177
|
-
it 'sets endpoints for environment' do
|
178
|
-
expect(pesapal.change_env :development).to eq(demo_endpoints)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
139
|
describe '#generate_order_url' do
|
183
|
-
|
184
140
|
it 'generates iframe url string' do
|
185
141
|
pesapal.order_details = order_details
|
186
142
|
expect(pesapal.generate_order_url).to match %r{https://demo.pesapal.com/API/PostPesapalDirectOrderV4\?oauth_callback=.*oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_request_data=.*}
|
@@ -188,7 +144,6 @@ describe Pesapal::Merchant do
|
|
188
144
|
end
|
189
145
|
|
190
146
|
describe '#query_payment_status' do
|
191
|
-
|
192
147
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
193
148
|
|
194
149
|
it 'gets pending payment status' do
|
@@ -213,21 +168,21 @@ describe Pesapal::Merchant do
|
|
213
168
|
end
|
214
169
|
|
215
170
|
describe '#query_payment_details' do
|
216
|
-
|
217
171
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
218
172
|
|
219
173
|
it 'gets pending payment details' do
|
220
174
|
request.to_return(status: 200, body: 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
175
|
+
expected_result = {
|
176
|
+
method: 'payment_method',
|
177
|
+
status: 'payment_status',
|
178
|
+
merchant_reference: 'merchant_reference',
|
179
|
+
transaction_tracking_id: 'transaction_tracking_id'
|
180
|
+
}
|
181
|
+
expect(pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq(expected_result)
|
226
182
|
end
|
227
183
|
end
|
228
184
|
|
229
185
|
describe '#ipn_listener' do
|
230
|
-
|
231
186
|
let(:request) { stub_request(:get, %r{https://demo.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
232
187
|
|
233
188
|
it 'gets ipn response for pending status' do
|
@@ -253,11 +208,9 @@ describe Pesapal::Merchant do
|
|
253
208
|
end
|
254
209
|
|
255
210
|
context 'when mode is specified as production' do
|
256
|
-
|
257
211
|
let(:pesapal) { Pesapal::Merchant.new(:production) }
|
258
212
|
|
259
213
|
describe '#new(:production)' do
|
260
|
-
|
261
214
|
it 'is valid object' do
|
262
215
|
expect(pesapal).to be_an_instance_of(Pesapal::Merchant)
|
263
216
|
end
|
@@ -275,20 +228,7 @@ describe Pesapal::Merchant do
|
|
275
228
|
end
|
276
229
|
end
|
277
230
|
|
278
|
-
describe '#change_env(:production)' do
|
279
|
-
|
280
|
-
it 'sets environment variable' do
|
281
|
-
pesapal.change_env :production
|
282
|
-
expect(pesapal.send(:env)).to eq 'production'
|
283
|
-
end
|
284
|
-
|
285
|
-
it 'sets endpoints for environment' do
|
286
|
-
expect(pesapal.change_env :production).to eq(production_endpoints)
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
231
|
describe '#generate_order_url' do
|
291
|
-
|
292
232
|
it 'generates iframe url string' do
|
293
233
|
pesapal.order_details = order_details
|
294
234
|
expect(pesapal.generate_order_url).to match %r{https://www.pesapal.com/API/PostPesapalDirectOrderV4\?oauth_callback=.*oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_request_data=.*}
|
@@ -296,7 +236,6 @@ describe Pesapal::Merchant do
|
|
296
236
|
end
|
297
237
|
|
298
238
|
describe '#query_payment_status' do
|
299
|
-
|
300
239
|
let(:request) { stub_request(:get, %r{https://www.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
301
240
|
|
302
241
|
it 'gets pending payment status' do
|
@@ -321,21 +260,21 @@ describe Pesapal::Merchant do
|
|
321
260
|
end
|
322
261
|
|
323
262
|
describe '#query_payment_details' do
|
324
|
-
|
325
263
|
let(:request) { stub_request(:get, %r{https://www.pesapal.com/API/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
326
264
|
|
327
265
|
it 'gets pending payment details' do
|
328
266
|
request.to_return(status: 200, body: 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
267
|
+
expected_result = {
|
268
|
+
method: 'payment_method',
|
269
|
+
status: 'payment_status',
|
270
|
+
merchant_reference: 'merchant_reference',
|
271
|
+
transaction_tracking_id: 'transaction_tracking_id'
|
272
|
+
}
|
273
|
+
expect(pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq(expected_result)
|
334
274
|
end
|
335
275
|
end
|
336
276
|
|
337
277
|
describe '#ipn_listener' do
|
338
|
-
|
339
278
|
let(:request) { stub_request(:get, %r{https://www.pesapal.com/API/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*}) }
|
340
279
|
|
341
280
|
it 'gets ipn response for pending status' do
|
metadata
CHANGED
@@ -1,125 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pesapal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Job King'ori Maina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
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'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
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: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: faker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '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: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: redcarpet
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: webmock
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: yard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
102
130
|
- !ruby/object:Gem::Version
|
103
131
|
version: '0'
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
|
-
- -
|
136
|
+
- - ">="
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: htmlentities
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
|
-
- -
|
143
|
+
- - ">="
|
116
144
|
- !ruby/object:Gem::Version
|
117
145
|
version: '0'
|
118
146
|
type: :runtime
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
|
-
- -
|
150
|
+
- - ">="
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
description: Make authenticated Pesapal API calls without the fuss!
|
@@ -129,34 +157,41 @@ executables: []
|
|
129
157
|
extensions: []
|
130
158
|
extra_rdoc_files: []
|
131
159
|
files:
|
132
|
-
- .coveralls.yml
|
133
|
-
- .gitignore
|
134
|
-
- .hound.yml
|
135
|
-
- .rspec
|
136
|
-
- .rubocop.yml
|
137
|
-
- .travis.yml
|
138
|
-
- .yardopts
|
160
|
+
- ".coveralls.yml"
|
161
|
+
- ".gitignore"
|
162
|
+
- ".hound.yml"
|
163
|
+
- ".rspec"
|
164
|
+
- ".rubocop.yml"
|
165
|
+
- ".travis.yml"
|
166
|
+
- ".yardopts"
|
139
167
|
- CHANGELOG.md
|
140
168
|
- CONTRIBUTING.md
|
141
169
|
- Gemfile
|
142
170
|
- LICENSE.md
|
143
171
|
- README.md
|
144
172
|
- Rakefile
|
145
|
-
-
|
146
|
-
-
|
147
|
-
-
|
173
|
+
- docs/.ruby-version
|
174
|
+
- docs/Gemfile
|
175
|
+
- docs/README.md
|
176
|
+
- docs/_config.yml
|
177
|
+
- docs/_includes/google-analytics.html
|
178
|
+
- docs/_layouts/default.html
|
179
|
+
- docs/assets/javascripts/scale.fix.js
|
180
|
+
- docs/assets/stylesheets/pygment_trac.css
|
181
|
+
- docs/assets/stylesheets/styles.css
|
182
|
+
- docs/favicon.ico
|
183
|
+
- docs/index.md
|
148
184
|
- lib/pesapal.rb
|
149
185
|
- lib/pesapal/helper/details.rb
|
150
186
|
- lib/pesapal/helper/post.rb
|
151
187
|
- lib/pesapal/helper/status.rb
|
152
188
|
- lib/pesapal/merchant.rb
|
153
189
|
- lib/pesapal/oauth.rb
|
154
|
-
- lib/pesapal/railtie.rb
|
155
190
|
- lib/pesapal/version.rb
|
156
191
|
- pesapal.gemspec
|
157
192
|
- spec/pesapal_merchant_spec.rb
|
158
193
|
- spec/spec_helper.rb
|
159
|
-
homepage: http://
|
194
|
+
homepage: http://itskingori.github.io/pesapal-gem
|
160
195
|
licenses:
|
161
196
|
- MIT
|
162
197
|
metadata: {}
|
@@ -166,17 +201,17 @@ require_paths:
|
|
166
201
|
- lib
|
167
202
|
required_ruby_version: !ruby/object:Gem::Requirement
|
168
203
|
requirements:
|
169
|
-
- -
|
204
|
+
- - ">="
|
170
205
|
- !ruby/object:Gem::Version
|
171
206
|
version: '2.0'
|
172
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
208
|
requirements:
|
174
|
-
- -
|
209
|
+
- - ">="
|
175
210
|
- !ruby/object:Gem::Version
|
176
211
|
version: '0'
|
177
212
|
requirements: []
|
178
213
|
rubyforge_project:
|
179
|
-
rubygems_version: 2.6.
|
214
|
+
rubygems_version: 2.6.8
|
180
215
|
signing_key:
|
181
216
|
specification_version: 4
|
182
217
|
summary: Make authenticated Pesapal API calls without the fuss! Handles all the oAuth
|
@@ -185,4 +220,3 @@ summary: Make authenticated Pesapal API calls without the fuss! Handles all the
|
|
185
220
|
test_files:
|
186
221
|
- spec/pesapal_merchant_spec.rb
|
187
222
|
- spec/spec_helper.rb
|
188
|
-
has_rdoc:
|