bank_of_baku 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab423c8b3d4a838a66339589b5c12211fd3e2d18480b92109737c0a750a5a35e
4
- data.tar.gz: 6ce6d43905eae77d984ed80ab253aea607e71eaee6e1bc8a439395e230c99795
3
+ metadata.gz: 16cf553fe44da581b2cad18645986c186e227c7ef41d443b0c8cd619732a2f6b
4
+ data.tar.gz: 6f348f3a3c264a99e9d2f7cf706f13e2d989571468d52e353fadf2b8fa13344d
5
5
  SHA512:
6
- metadata.gz: b49963c7aac13afcb1498139275b6630628c60fb880fea3d160a15c0f127d34d90d719b5944f601401caffcb67781a862857e2d169b408103a5080ba155df451
7
- data.tar.gz: 872a38c5f8518a0378bbac1a4958bcfe547bb13e42c2c2d47fab048f10b345ff33949d2a9381f6c26648267c21db63e2dd296b91439c662667727396e4debda3
6
+ metadata.gz: 51ab804ad03c9d1f940163890b6bc6e1902a1f07f4508d4cf363f9177b923c032119c7ead35f64969b30ce4f4072844c55300ef4a6439208af15c1d1767948f5
7
+ data.tar.gz: ea788db5c0d7533f51bcbaffea99ea2acd15082642be084023a1dcf486e0116c9b56d74e3511a4e14782fae4ffc09ee3bee0356752e1861446d9e9039fc5e0d8
@@ -3,8 +3,24 @@
3
3
  require 'bank_of_baku/version'
4
4
  require 'bank_of_baku/configuration'
5
5
  require 'bank_of_baku/error'
6
- require 'bank_of_baku/request'
6
+ require 'bank_of_baku/requests'
7
+ require 'bank_of_baku/client'
7
8
 
8
9
  module BankOfBaku
9
10
  extend Configuration
11
+
12
+ # @return [BankOfBaku::Client]
13
+ def self.client
14
+ BankOfBaku::Client.new
15
+ end
16
+
17
+ def self.method_missing(method, *args, &block)
18
+ return super unless client.respond_to?(method)
19
+
20
+ client.send(method, *args, &block)
21
+ end
22
+
23
+ def self.respond_to_missing?(method_name, include_private = false)
24
+ client.respond_to?(method_name) || super
25
+ end
10
26
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'typhoeus'
4
+ require 'json'
5
+
6
+ module BankOfBaku
7
+ class Client
8
+ include Requests
9
+
10
+ private
11
+
12
+ def run_request(action, options)
13
+ request = Typhoeus::Request.new(
14
+ "#{BankOfBaku.endpoint}/#{action}",
15
+ BankOfBaku.typhoeus_options.merge(
16
+ method: :post,
17
+ followlocation: true,
18
+ headers: { 'User-Agent' => BankOfBaku.user_agent },
19
+ body: BankOfBaku.credentials.merge(options)
20
+ )
21
+ )
22
+ handle_response(request.run)
23
+ end
24
+
25
+ def handle_response(response)
26
+ raise HTTPResponseError, "HTTP request failed: #{response.code}" unless response.success?
27
+
28
+ response = JSON.parse response.body
29
+ error_klass = case response['errorCode']
30
+ when '1' then RegisteredOrder
31
+ when '2' then DeclinedOrder
32
+ when '3' then InvalidCurrency
33
+ when '4' then MissingParameter
34
+ when '5' then InvalidParameterValue
35
+ when '6' then UnregisteredOrder
36
+ when '7' then GatewayError
37
+ end
38
+
39
+ raise error_klass, response['errorMessage'] if error_klass
40
+
41
+ response
42
+ end
43
+ end
44
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module BankOfBaku
4
4
  module Configuration
5
- VALID_OPTIONS_KEYS = %i[endpoint username password user_agent].freeze
5
+ VALID_OPTIONS_KEYS = %i[endpoint username password user_agent typhoeus_options].freeze
6
6
  DEFAULT_USER_AGENT = "BankOfBaku Ruby Gem #{BankOfBaku::VERSION}"
7
7
 
8
8
  attr_accessor(*VALID_OPTIONS_KEYS)
@@ -20,9 +20,10 @@ module BankOfBaku
20
20
  send("#{key}=", nil)
21
21
  end
22
22
  self.user_agent = DEFAULT_USER_AGENT
23
+ self.typhoeus_options = {}
23
24
  end
24
25
 
25
- def default_options
26
+ def credentials
26
27
  {
27
28
  userName: username,
28
29
  password: password,
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BankOfBaku
4
+ module Requests
5
+ # @param [Hash] options
6
+ # @return [Hash]
7
+ # @raise [BankOfBaku::HTTPResponseError]
8
+ # @raise [BankOfBaku::RegisteredOrder]
9
+ # @raise [BankOfBaku::InvalidCurrency]
10
+ # @raise [BankOfBaku::MissingParameter]
11
+ # @raise [BankOfBaku::InvalidParameterValue]
12
+ # @raise [BankOfBaku::GatewayError]
13
+ def register(options)
14
+ run_request('register.do', options)
15
+ end
16
+
17
+ # @param [Hash] options
18
+ # @return [Hash]
19
+ # @raise [BankOfBaku::HTTPResponseError]
20
+ # @raise [BankOfBaku::DeclinedOrder]
21
+ # @raise [BankOfBaku::InvalidParameterValue]
22
+ # @raise [BankOfBaku::UnregisteredOrder]
23
+ def order_status(options)
24
+ run_request('getOrderStatus.do', options)
25
+ end
26
+ end
27
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BankOfBaku
4
- VERSION = '0.2.1'
4
+ VERSION = '1.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bank_of_baku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nihad Abbasov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-17 00:00:00.000000000 Z
11
+ date: 2019-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -90,9 +90,10 @@ files:
90
90
  - LICENSE.txt
91
91
  - README.md
92
92
  - lib/bank_of_baku.rb
93
+ - lib/bank_of_baku/client.rb
93
94
  - lib/bank_of_baku/configuration.rb
94
95
  - lib/bank_of_baku/error.rb
95
- - lib/bank_of_baku/request.rb
96
+ - lib/bank_of_baku/requests.rb
96
97
  - lib/bank_of_baku/version.rb
97
98
  homepage: https://github.com/narkoz/bank_of_baku
98
99
  licenses:
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'typhoeus'
4
- require 'json'
5
-
6
- module BankOfBaku
7
- module Request
8
- # @param [Hash] request_options
9
- # @return [Hash]
10
- # @raise [BankOfBaku::HTTPResponseError]
11
- # @raise [BankOfBaku::RegisteredOrder]
12
- # @raise [BankOfBaku::InvalidCurrency]
13
- # @raise [BankOfBaku::MissingParameter]
14
- # @raise [BankOfBaku::InvalidParameterValue]
15
- # @raise [BankOfBaku::GatewayError]
16
- def self.register(request_options)
17
- request = Typhoeus::Request.new(
18
- "#{BankOfBaku.endpoint}/register.do",
19
- method: :post,
20
- followlocation: true,
21
- ssl_verifypeer: false,
22
- headers: { 'User-Agent' => BankOfBaku.user_agent },
23
- body: BankOfBaku.default_options.merge(request_options)
24
- )
25
- handle_response(request.run)
26
- end
27
-
28
- # @param [Hash] request_options
29
- # @return [Hash]
30
- # @raise [BankOfBaku::HTTPResponseError]
31
- # @raise [BankOfBaku::DeclinedOrder]
32
- # @raise [BankOfBaku::InvalidParameterValue]
33
- # @raise [BankOfBaku::UnregisteredOrder]
34
- def self.order_status(request_options)
35
- request = Typhoeus::Request.new(
36
- "#{BankOfBaku.endpoint}/getOrderStatus.do",
37
- method: :post,
38
- followlocation: true,
39
- ssl_verifypeer: false,
40
- headers: { 'User-Agent' => BankOfBaku.user_agent },
41
- body: BankOfBaku.default_options.merge(request_options)
42
- )
43
- handle_response(request.run)
44
- end
45
-
46
- # @private
47
- def self.handle_response(response)
48
- raise HTTPResponseError, "Gateway request failed: #{response.code}" unless response.success?
49
-
50
- response = JSON.parse response.body
51
- error_klass = case response['errorCode']
52
- when '1' then RegisteredOrder
53
- when '2' then DeclinedOrder
54
- when '3' then InvalidCurrency
55
- when '4' then MissingParameter
56
- when '5' then InvalidParameterValue
57
- when '6' then UnregisteredOrder
58
- when '7' then GatewayError
59
- end
60
-
61
- raise error_klass, response['errorMessage'] if error_klass
62
-
63
- response
64
- end
65
- end
66
- end