MVola 0.1.0.pre.alpha

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.
@@ -0,0 +1,56 @@
1
+ module MVola
2
+ class Client
3
+ type token_data = Token
4
+ | { access_token: String, token_type: String, expires_at: DateTime, scope: String }
5
+ | { access_token: String, token_type: String, expires_in: String, scope: String }
6
+
7
+ type user_language = :fr | :mg | 'fr' | 'mg'
8
+
9
+ include Request
10
+
11
+ SANDBOX_URL: String
12
+ PRODUCTION_URL: String
13
+ SANDBOX_PARTNER_PHONE_NUMBER: String
14
+ USER_LANGUAGES: Hash[Symbol, String]
15
+
16
+ @consumer_key: String
17
+ @consumer_secret: String
18
+ @partner_name: String
19
+ @partner_phone_number: String
20
+ @sandbox: bool
21
+ @token: String?
22
+ @user_language: user_language
23
+ @mutex: Mutex
24
+
25
+ attr_reader consumer_key: String
26
+ attr_reader consumer_secret: String
27
+ attr_reader partner_name: String
28
+ attr_reader partner_phone_number: String
29
+ attr_reader sandbox: bool
30
+ attr_reader user_language: user_language
31
+
32
+ alias sandbox? sandbox
33
+
34
+ def initialize: (?consumer_key: String,
35
+ ?consumer_secret: String,
36
+ ?partner_name: String,
37
+ ?partner_phone_number: String,
38
+ ?user_language: user_language,
39
+ ?sandbox: bool,
40
+ ?token: token_data?) -> void
41
+
42
+ def token: () -> Token
43
+
44
+ def token!: () -> Token
45
+
46
+ def base_url: () -> String
47
+
48
+ private
49
+
50
+ def build_token_from: (token_data) -> Token
51
+
52
+ def headers: () -> Hash[String, String]
53
+
54
+ def fetch_token: () -> Hash[Symbol, String]
55
+ end
56
+ end
@@ -0,0 +1,13 @@
1
+ module MVola
2
+ module Request
3
+ def get: (String url, ?::Hash[untyped, untyped] args) -> Net::HTTPResponse
4
+
5
+ def post: (String url, ?::Hash[untyped, untyped] args) -> Net::HTTPResponse
6
+
7
+ private
8
+
9
+ def build_http: (URI uri, Hash[untyped, untyped] args) -> Net::HTTP
10
+
11
+ def handle_error: (Net::HTTPResponse response) -> void
12
+ end
13
+ end
@@ -0,0 +1,46 @@
1
+ module MVola
2
+ class Transaction
3
+ class PaymentStatus
4
+ extend Forwardable
5
+
6
+ type t_status = 'pending' | 'completed' | 'failed'
7
+ type t_notification_method = 'polling' | 'callback'
8
+
9
+ type init_payment_response = {
10
+ "status" => t_status,
11
+ "serverCorrelationId" => String,
12
+ "notificationMethod" => t_notification_method
13
+ }
14
+
15
+ type status_response = init_payment_response & {
16
+ "objectReference" => String
17
+ }
18
+
19
+ type t_raw_response = init_payment_response | status_response
20
+
21
+ @raw_response: t_raw_response
22
+
23
+ @client_correlation_id: String
24
+
25
+ attr_reader raw_response: t_raw_response
26
+
27
+ attr_reader client_correlation_id: String
28
+
29
+ def initialize: (t_raw_response raw_response, client_correlation_id: String) -> void
30
+
31
+ def status: () -> t_status
32
+
33
+ def server_correlation_id: () -> String
34
+
35
+ def notification_method: () -> t_notification_method
36
+
37
+ def transaction_reference: () -> String?
38
+
39
+ def pending?: () -> bool
40
+
41
+ def completed?: () -> bool
42
+
43
+ def failed?: () -> bool
44
+ end
45
+ end
46
+ end
data/sig/mvola.rbs ADDED
@@ -0,0 +1,5 @@
1
+ module MVola
2
+ VERSION: String
3
+
4
+ attr_accessor self.logger: Logger
5
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: MVola
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.pre.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Kassam
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-01-03 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Library for MVola payment provider integration
13
+ email:
14
+ - kassam.housseny@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - ".idea/workspace.xml"
20
+ - ".overcommit.yml"
21
+ - ".rspec"
22
+ - ".standard.yml"
23
+ - CHANGELOG.md
24
+ - CODE_OF_CONDUCT.md
25
+ - LICENSE.txt
26
+ - README.md
27
+ - Rakefile
28
+ - lib/mvola.rb
29
+ - lib/mvola/client.rb
30
+ - lib/mvola/client/token.rb
31
+ - lib/mvola/errors.rb
32
+ - lib/mvola/request.rb
33
+ - lib/mvola/transaction.rb
34
+ - lib/mvola/transaction/payment_status.rb
35
+ - lib/mvola/version.rb
36
+ - sig/lib/mvola/client.rbs
37
+ - sig/lib/mvola/client/token.rbs
38
+ - sig/lib/mvola/request.rbs
39
+ - sig/lib/mvola/transaction/payment_status.rbs
40
+ - sig/mvola.rbs
41
+ homepage: https://github.com/Ksm125/mvola
42
+ licenses:
43
+ - MIT
44
+ metadata:
45
+ homepage_uri: https://github.com/Ksm125/mvola
46
+ source_code_uri: https://github.com/Ksm125/mvola
47
+ changelog_uri: https://github.com/Ksm125/mvola/blob/main/CHANGELOG.md
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '2.5'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubygems_version: 3.6.2
63
+ specification_version: 4
64
+ summary: Library for MVola payment provider integration
65
+ test_files: []