paystack 0.1.3 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,105 +1,104 @@
1
-
2
- require 'paystack/error.rb'
3
-
4
- module Utils
5
-
6
- def Utils.nullifyString(value)
7
- if value.nil?
8
- return nil
9
- end
10
-
11
- if (value.strip.eql? "")
12
- return nil
13
- end
14
- return value;
15
- end
16
-
17
- def Utils.isWholePositiveNumber(value)
18
- if(value == nil)
19
- return false
20
- end
21
- length = value.length;
22
-
23
- for i in 0..(length-1)
24
- c = value[i]
25
-
26
- if((c =~ /[[:digit:]]/) == nil)
27
- return false
28
- end
29
- end
30
- return true
31
- end
32
-
33
- def Utils.isLuthValidNumber(number)
34
- sum = 0
35
- length = number.strip.length;
36
-
37
- for i in 0..(length-1)
38
- c = number[length - 1 -i]
39
-
40
- if((c =~ /[[:digit:]]/) == nil)
41
- return false
42
- end
43
- digit = c.to_i
44
- if (i % 2 == 1)
45
- digit *= 2
46
- end
47
- sum += digit > 9 ? digit - 9 : digit
48
- end
49
-
50
- return (sum % 10 == 0)
51
- end
52
-
53
- def Utils.isEmpty(value)
54
- return (value.nil? || value.strip.eql?(""))
55
- end
56
-
57
- def Utils.hasYearPassed(year)
58
- return year < Time.new.year
59
- end
60
- def Utils.hasMonthPassed(year, month)
61
- t = Time.new
62
- return hasYearPassed(year) || year == t.year && month < (t.month)
63
- end
64
-
65
- def Utils.hasCardExpired(year, month)
66
- # Normalize Year value e.g 14 becomes 2014 or 2114 etc.
67
- year_int = year.strip.to_i
68
- if(year_int < 100 && year_int >= 0)
69
- cal_year = Time.new.year.to_s
70
- year_int = ("#{cal_year[0..1]}#{year.strip}").to_i
71
- end
72
-
73
- # Check for expiration
74
- return !hasYearPassed(year_int) && !hasMonthPassed(year_int, month.to_i)
75
-
76
- end
77
-
78
-
79
-
80
-
81
-
82
- def Utils.serverErrorHandler(e)
83
-
84
- if(e.response == nil)
85
- raise e
86
- return
87
- end
88
- error = PaystackServerError.new(e.response);
89
- case e.response.code
90
- when 400
91
- raise error, "HTTP Code 400: A validation or client side error occurred and the request was not fulfilled. "
92
- when 401
93
- raise error, "HTTP Code 401: The request was not authorized. This can be triggered by passing an invalid secret key in the authorization header or the lack of one"
94
- when 404
95
- raise error, "HTTP Code 404: Request could not be fulfilled as the request resource does not exist."
96
- when 500, 501,502,503,504
97
- raise error, "HTTP Code #{e.response.code}: Request could not be fulfilled due to an error on Paystack's end. This shouldn't happen so please report as soon as you encounter any instance of this."
98
- else
99
- raise error, "HTTP Code #{e.response.code}: #{e.response.body}"
100
-
101
- end
102
-
103
- end
104
-
105
- end
1
+ require 'paystack/error.rb'
2
+
3
+ module Utils
4
+
5
+ def Utils.nullifyString(value)
6
+ if value.nil?
7
+ return nil
8
+ end
9
+
10
+ if (value.strip.eql? "")
11
+ return nil
12
+ end
13
+ return value;
14
+ end
15
+
16
+ def Utils.isWholePositiveNumber(value)
17
+ if(value == nil)
18
+ return false
19
+ end
20
+ length = value.length;
21
+
22
+ for i in 0..(length-1)
23
+ c = value[i]
24
+
25
+ if((c =~ /[[:digit:]]/) == nil)
26
+ return false
27
+ end
28
+ end
29
+ return true
30
+ end
31
+
32
+ def Utils.isLuhnValidNumber(number)
33
+ sum = 0
34
+ length = number.strip.length;
35
+
36
+ for i in 0..(length-1)
37
+ c = number[length - 1 -i]
38
+
39
+ if((c =~ /[[:digit:]]/) == nil)
40
+ return false
41
+ end
42
+ digit = c.to_i
43
+ if (i % 2 == 1)
44
+ digit *= 2
45
+ end
46
+ sum += digit > 9 ? digit - 9 : digit
47
+ end
48
+
49
+ return (sum % 10 == 0)
50
+ end
51
+
52
+ def Utils.isEmpty(value)
53
+ return (value.nil? || value.strip.eql?(""))
54
+ end
55
+
56
+ def Utils.hasYearPassed(year)
57
+ return year < Time.new.year
58
+ end
59
+ def Utils.hasMonthPassed(year, month)
60
+ t = Time.new
61
+ return hasYearPassed(year) || year == t.year && month < (t.month)
62
+ end
63
+
64
+ def Utils.hasCardExpired(year, month)
65
+ # Normalize Year value e.g 14 becomes 2014 or 2114 etc.
66
+ year_int = year.strip.to_i
67
+ if(year_int < 100 && year_int >= 0)
68
+ cal_year = Time.new.year.to_s
69
+ year_int = ("#{cal_year[0..1]}#{year.strip}").to_i
70
+ end
71
+
72
+ # Check for expiration
73
+ return !hasYearPassed(year_int) && !hasMonthPassed(year_int, month.to_i)
74
+
75
+ end
76
+
77
+
78
+
79
+
80
+
81
+ def Utils.serverErrorHandler(e)
82
+
83
+ if(e.response == nil)
84
+ raise e
85
+ return
86
+ end
87
+ error = PaystackServerError.new(e.response);
88
+ case e.response.code
89
+ when 400
90
+ raise error, "HTTP Code 400: A validation or client side error occurred and the request was not fulfilled. "
91
+ when 401
92
+ raise error, "HTTP Code 401: The request was not authorized. This can be triggered by passing an invalid secret key in the authorization header or the lack of one"
93
+ when 404
94
+ raise error, "HTTP Code 404: Request could not be fulfilled as the request resource does not exist."
95
+ when 500, 501,502,503,504
96
+ raise error, "HTTP Code #{e.response.code}: Request could not be fulfilled due to an error on Paystack's end. This shouldn't happen so please report as soon as you encounter any instance of this."
97
+ else
98
+ raise error, "HTTP Code #{e.response.code}: #{e.response.body}"
99
+
100
+ end
101
+
102
+ end
103
+
104
+ end
@@ -1,3 +1,3 @@
1
- module Paystack
2
- VERSION = "0.1.3"
1
+ class Paystack
2
+ VERSION = "0.1.10"
3
3
  end
data/paystack.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'paystack/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "paystack"
8
8
  spec.version = Paystack::VERSION
9
- spec.authors = ["Victor"]
9
+ spec.authors = ["Victor Ikoro"]
10
10
  spec.email = ["ikoro.victor@gmail.com"]
11
11
 
12
12
  spec.summary = %q{PayStack.co gem for Ruby/Rails}
@@ -20,11 +20,13 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  #Dev dependencies
23
- spec.add_development_dependency "bundler", "~> 1.11"
23
+ spec.add_development_dependency "bundler", "~> 2.2"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 0"
26
-
25
+ spec.add_development_dependency 'rspec', '~> 3.0'
26
+
27
27
  #Dependencies
28
- spec.add_dependency "rest-client", '~> 1.8'
29
-
28
+ spec.required_ruby_version = '>= 2.0.0'
29
+ spec.add_runtime_dependency 'rest-client', '~> 2.0'
30
+
31
+
30
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paystack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
- - Victor
7
+ - Victor Ikoro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-10 00:00:00.000000000 Z
11
+ date: 2021-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '2.2'
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
- version: '1.11'
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '3.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
- version: '0'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rest-client
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
61
+ version: '2.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.8'
68
+ version: '2.0'
69
69
  description: Client Library Gem for PayStack.co
70
70
  email:
71
71
  - ikoro.victor@gmail.com
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
77
  - ".rspec"
78
+ - ".travis.yml"
78
79
  - CODE_OF_CONDUCT.md
79
80
  - Gemfile
80
81
  - LICENSE.txt
@@ -82,17 +83,21 @@ files:
82
83
  - Rakefile
83
84
  - bin/console
84
85
  - bin/setup
85
- - key.pem
86
86
  - lib/paystack.rb
87
87
  - lib/paystack/error.rb
88
88
  - lib/paystack/modules/api.rb
89
- - lib/paystack/modules/crypto.rb
90
- - lib/paystack/modules/tokenmanager.rb
89
+ - lib/paystack/objects/balance.rb
90
+ - lib/paystack/objects/banks.rb
91
91
  - lib/paystack/objects/base.rb
92
92
  - lib/paystack/objects/card.rb
93
93
  - lib/paystack/objects/customers.rb
94
94
  - lib/paystack/objects/plans.rb
95
+ - lib/paystack/objects/recipients.rb
96
+ - lib/paystack/objects/settlements.rb
97
+ - lib/paystack/objects/subaccounts.rb
98
+ - lib/paystack/objects/subscriptions.rb
95
99
  - lib/paystack/objects/transactions.rb
100
+ - lib/paystack/objects/transfers.rb
96
101
  - lib/paystack/utils/utils.rb
97
102
  - lib/paystack/version.rb
98
103
  - paystack.gemspec
@@ -108,15 +113,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
113
  requirements:
109
114
  - - ">="
110
115
  - !ruby/object:Gem::Version
111
- version: '0'
116
+ version: 2.0.0
112
117
  required_rubygems_version: !ruby/object:Gem::Requirement
113
118
  requirements:
114
119
  - - ">="
115
120
  - !ruby/object:Gem::Version
116
121
  version: '0'
117
122
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.4.5
123
+ rubygems_version: 3.0.8
120
124
  signing_key:
121
125
  specification_version: 4
122
126
  summary: PayStack.co gem for Ruby/Rails
data/key.pem DELETED
File without changes
@@ -1,11 +0,0 @@
1
- require "Base64"
2
- require "openssl"
3
-
4
- module Crypto
5
-
6
- def Crypto.encrypt_string(message, public_key)
7
-
8
- rsa = OpenSSL::PKey::RSA.new public_key
9
- return Base64::encode64(rsa.public_encrypt(message)).rstrip
10
- end
11
- end
@@ -1,60 +0,0 @@
1
- require 'rest-client'
2
- require 'paystack/modules/crypto.rb'
3
- require 'paystack/modules/api.rb'
4
- require 'paystack/objects/card.rb'
5
-
6
- module TokenManager
7
-
8
- CONCATENATOR = '*'
9
- RSA_PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANIsL+RHqfkBiKGn/D1y1QnNrMkKzxWP\n2wkeSokw2OJrCI+d6YGJPrHHx+nmb/Qn885/R01Gw6d7M824qofmCvkCAwEAAQ==\n-----END PUBLIC KEY-----\n"
10
-
11
- def TokenManager.create(card, publishableKey)
12
- if(card == nil)
13
- raise PayStackCardError, "Card cannot be null"
14
- elsif !card.isValidCard()
15
- raise PayStackCardError, "Invalid card details"
16
- end
17
-
18
- card_str = concatCardFields(card)
19
- enc_card_str = Crypto.encrypt_string(card_str, RSA_PUBLIC_KEY)
20
- return createServerToken enc_card_str, publishableKey
21
- end
22
-
23
- def TokenManager.concatCardFields(card)
24
- raise PayStackCardError, 'Invalid Card' unless (!card.nil? && card.instance_of?(PaystackCard))
25
-
26
- number = Utils.nullifyString(card.number)
27
- cvc = card.cvc
28
- expiryMonth = card.expiryMonth
29
- expiryYear = card.expiryYear
30
-
31
- raise PayStackCardError, 'Card number cannot be empty or null' unless (!number.nil?)
32
-
33
- return "#{number}#{CONCATENATOR}#{cvc}#{CONCATENATOR}#{expiryMonth}#{CONCATENATOR}#{expiryYear}"
34
-
35
- end
36
-
37
- def TokenManager.createServerToken(encrypted_card, publishableKey)
38
- token = nil;
39
- begin
40
- response = RestClient.post "#{API::TOKEN_URL}", :clientdata => encrypted_card, :publishablekey => publishableKey
41
- unless (response.code == 200 || response.code == 201)
42
- raise PayStackServerError.new(response), "HTTP Code #{response.code}: #{response.body}"
43
- end
44
- result = JSON.parse(response.body)
45
- unless(result['status'] != '0' )
46
- raise PayStackServerError.new(response), "Server Message: #{result['message']}"
47
- end
48
- token = {:token => result['token'], :last4 => result['last4']}
49
- rescue JSON::ParserError => jsonerr
50
- raise PayStackServerError.new(response) , "Invalid result data. Could not parse JSON response body \n #{jsonerr.message}"
51
-
52
- rescue PayStackServerError => e
53
- puts e.response.code
54
- Utils.serverErrorHandler(e)
55
- end
56
- return token
57
-
58
- end
59
- end
60
-