stone-ruby 0.0.2 → 0.1.0
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.
- checksums.yaml +4 -4
- data/.editorconfig +21 -0
- data/.rubocop.yml +28 -0
- data/Gemfile +4 -2
- data/Gemfile.lock +56 -2
- data/Rakefile +5 -3
- data/bin/console +4 -3
- data/lib/stone-ruby.rb +3 -1
- data/lib/stone.rb +7 -2
- data/lib/stone/conciliation.rb +3 -1
- data/lib/stone/conciliation/client.rb +5 -6
- data/lib/stone/conciliation/client/access_authorization.rb +3 -3
- data/lib/stone/conciliation/error.rb +2 -0
- data/lib/stone/siclos.rb +4 -1
- data/lib/stone/siclos/client.rb +40 -39
- data/lib/stone/siclos/client/claim_check.rb +8 -8
- data/lib/stone/siclos/client/danfe.rb +8 -8
- data/lib/stone/siclos/client/establishment.rb +7 -7
- data/lib/stone/siclos/client/finance.rb +3 -3
- data/lib/stone/siclos/client/pos.rb +10 -10
- data/lib/stone/siclos/client/pre_transaction.rb +8 -8
- data/lib/stone/siclos/client/recipient.rb +7 -7
- data/lib/stone/siclos/client/token.rb +2 -0
- data/lib/stone/siclos/client/transaction.rb +7 -7
- data/lib/stone/siclos/client/webhook.rb +15 -15
- data/lib/stone/siclos/entity.rb +25 -0
- data/lib/stone/siclos/entity/address.rb +17 -0
- data/lib/stone/siclos/entity/anticipation.rb +13 -0
- data/lib/stone/siclos/entity/bank.rb +16 -0
- data/lib/stone/siclos/entity/capture_method.rb +14 -0
- data/lib/stone/siclos/entity/card_rate.rb +16 -0
- data/lib/stone/siclos/entity/contact.rb +13 -0
- data/lib/stone/siclos/entity/contact_recipient.rb +11 -0
- data/lib/stone/siclos/entity/create_establishment.rb +28 -0
- data/lib/stone/siclos/entity/create_establishment_existing.rb +17 -0
- data/lib/stone/siclos/entity/create_recipient.rb +24 -0
- data/lib/stone/siclos/entity/create_recipient_existing.rb +18 -0
- data/lib/stone/siclos/entity/responsible.rb +12 -0
- data/lib/stone/siclos/entity/responsible_recipient.rb +14 -0
- data/lib/stone/siclos/error.rb +2 -0
- data/lib/stone/types.rb +15 -0
- data/lib/stone/version.rb +4 -2
- data/stone-ruby.gemspec +8 -4
- metadata +64 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a541b337ffb36ae567af10ae71e538c422786d89
|
4
|
+
data.tar.gz: fbecf06870b9af48a83caed8a95f604bc49363b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 825e4759a977d4352adaeda0b88c118197823f33eabe64c6872dcb019d66903fb03b67d3ebf28f4a65a40bce5bee2262bd8ba594faa2a4c32ba2e93d211056d0
|
7
|
+
data.tar.gz: f7664fd60f013f7aeba71e548e685cf289959171fb34ec3245eccf1ebce990eaf6a92ba4b02eeaeb501d0573542336aefdbe0f0fb52baa5f5384f2e7a4e32976
|
data/.editorconfig
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# EditorConfig helps developers define and maintain consistent
|
2
|
+
# coding styles between different editors and IDEs
|
3
|
+
# editorconfig.org
|
4
|
+
|
5
|
+
root = true
|
6
|
+
|
7
|
+
|
8
|
+
[*]
|
9
|
+
|
10
|
+
# Change these settings to your own preference
|
11
|
+
indent_style = space
|
12
|
+
indent_size = 2
|
13
|
+
|
14
|
+
# We recommend you to keep these unchanged
|
15
|
+
end_of_line = lf
|
16
|
+
charset = utf-8
|
17
|
+
trim_trailing_whitespace = true
|
18
|
+
insert_final_newline = true
|
19
|
+
|
20
|
+
[*.md]
|
21
|
+
trim_trailing_whitespace = false
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# The behavior of RuboCop can be controlled via the .rubocop.yml
|
2
|
+
# configuration file. It makes it possible to enable/disable
|
3
|
+
# certain cops (checks) and to alter their behavior if they accept
|
4
|
+
# any parameters. The file can be placed either in your home
|
5
|
+
# directory or in some project directory.
|
6
|
+
#
|
7
|
+
# RuboCop will start looking for the configuration file in the directory
|
8
|
+
# where the inspected file is and continue its way up to the root directory.
|
9
|
+
#
|
10
|
+
# See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md
|
11
|
+
Style/HashEachMethods:
|
12
|
+
Enabled: true
|
13
|
+
Style/HashTransformKeys:
|
14
|
+
Enabled: true
|
15
|
+
Style/HashTransformValues:
|
16
|
+
Enabled: true
|
17
|
+
Layout/LineLength:
|
18
|
+
Max: 100
|
19
|
+
Style/StringLiterals:
|
20
|
+
EnforcedStyle: single_quotes
|
21
|
+
Style/Documentation:
|
22
|
+
Enabled: false
|
23
|
+
Style/DocumentationMethod:
|
24
|
+
Enabled: false
|
25
|
+
Naming/AccessorMethodName:
|
26
|
+
Enabled: false
|
27
|
+
Style/ClassAndModuleChildren:
|
28
|
+
Enabled: false
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in stone-ruby.gemspec
|
6
8
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,27 +1,67 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
stone-ruby (0.0
|
4
|
+
stone-ruby (0.1.0)
|
5
|
+
activesupport (~> 4.2)
|
5
6
|
dry-configurable (~> 0.8.3)
|
7
|
+
dry-struct (~> 0.7)
|
6
8
|
request_store_rails (~> 2.0.0)
|
7
9
|
typhoeus (~> 1.0.2)
|
8
10
|
|
9
11
|
GEM
|
10
12
|
remote: https://rubygems.org/
|
11
13
|
specs:
|
14
|
+
activesupport (4.2.11.3)
|
15
|
+
i18n (~> 0.7)
|
16
|
+
minitest (~> 5.1)
|
17
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
18
|
+
tzinfo (~> 1.1)
|
19
|
+
ast (2.4.2)
|
12
20
|
concurrent-ruby (1.1.8)
|
13
21
|
diff-lcs (1.3)
|
14
22
|
dry-configurable (0.8.3)
|
15
23
|
concurrent-ruby (~> 1.0)
|
16
24
|
dry-core (~> 0.4, >= 0.4.7)
|
25
|
+
dry-container (0.7.2)
|
26
|
+
concurrent-ruby (~> 1.0)
|
27
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
17
28
|
dry-core (0.4.9)
|
18
29
|
concurrent-ruby (~> 1.0)
|
30
|
+
dry-equalizer (0.2.2)
|
31
|
+
dry-inflector (0.1.2)
|
32
|
+
dry-logic (0.6.1)
|
33
|
+
concurrent-ruby (~> 1.0)
|
34
|
+
dry-core (~> 0.2)
|
35
|
+
dry-equalizer (~> 0.2)
|
36
|
+
dry-struct (0.7.0)
|
37
|
+
dry-core (~> 0.4, >= 0.4.3)
|
38
|
+
dry-equalizer (~> 0.2)
|
39
|
+
dry-types (~> 0.15)
|
40
|
+
ice_nine (~> 0.11)
|
41
|
+
dry-types (0.15.0)
|
42
|
+
concurrent-ruby (~> 1.0)
|
43
|
+
dry-container (~> 0.3)
|
44
|
+
dry-core (~> 0.4, >= 0.4.4)
|
45
|
+
dry-equalizer (~> 0.2, >= 0.2.2)
|
46
|
+
dry-inflector (~> 0.1, >= 0.1.2)
|
47
|
+
dry-logic (~> 0.5, >= 0.5)
|
19
48
|
ethon (0.12.0)
|
20
49
|
ffi (>= 1.3.0)
|
21
|
-
ffi (1.
|
50
|
+
ffi (1.15.0)
|
51
|
+
i18n (0.9.5)
|
52
|
+
concurrent-ruby (~> 1.0)
|
53
|
+
ice_nine (0.11.2)
|
54
|
+
jaro_winkler (1.5.4)
|
55
|
+
minitest (5.14.1)
|
56
|
+
parallel (1.19.1)
|
57
|
+
parser (3.0.0.0)
|
58
|
+
ast (~> 2.4.1)
|
59
|
+
rainbow (2.2.2)
|
60
|
+
rake
|
22
61
|
rake (10.5.0)
|
23
62
|
request_store_rails (2.0.0)
|
24
63
|
concurrent-ruby (~> 1.0)
|
64
|
+
rexml (3.2.4)
|
25
65
|
rspec (3.9.0)
|
26
66
|
rspec-core (~> 3.9.0)
|
27
67
|
rspec-expectations (~> 3.9.0)
|
@@ -35,8 +75,21 @@ GEM
|
|
35
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
36
76
|
rspec-support (~> 3.9.0)
|
37
77
|
rspec-support (3.9.3)
|
78
|
+
rubocop (0.80.1)
|
79
|
+
jaro_winkler (~> 1.5.1)
|
80
|
+
parallel (~> 1.10)
|
81
|
+
parser (>= 2.7.0.1)
|
82
|
+
rainbow (>= 2.2.2, < 4.0)
|
83
|
+
rexml
|
84
|
+
ruby-progressbar (~> 1.7)
|
85
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
86
|
+
ruby-progressbar (1.10.1)
|
87
|
+
thread_safe (0.3.6)
|
38
88
|
typhoeus (1.0.2)
|
39
89
|
ethon (>= 0.9.0)
|
90
|
+
tzinfo (1.2.7)
|
91
|
+
thread_safe (~> 0.1)
|
92
|
+
unicode-display_width (1.6.1)
|
40
93
|
|
41
94
|
PLATFORMS
|
42
95
|
ruby
|
@@ -45,6 +98,7 @@ DEPENDENCIES
|
|
45
98
|
bundler (~> 1.17)
|
46
99
|
rake (~> 10.0)
|
47
100
|
rspec (~> 3.0)
|
101
|
+
rubocop (= 0.80.1)
|
48
102
|
stone-ruby!
|
49
103
|
|
50
104
|
BUNDLED WITH
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'stone/payments'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "stone/payments"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/lib/stone-ruby.rb
CHANGED
data/lib/stone.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'dry-configurable'
|
4
|
+
require 'dry-struct'
|
2
5
|
require 'typhoeus'
|
3
6
|
require 'stone/version'
|
7
|
+
require 'stone/types'
|
8
|
+
require 'active_support'
|
4
9
|
|
5
10
|
module Stone
|
6
11
|
extend Dry::Configurable
|
7
12
|
|
13
|
+
autoload :Types, 'stone/types'
|
8
14
|
autoload :Siclos, 'stone/siclos'
|
9
15
|
autoload :Conciliation, 'stone/conciliation'
|
10
16
|
|
@@ -24,7 +30,6 @@ module Stone
|
|
24
30
|
end
|
25
31
|
|
26
32
|
def self.configure
|
27
|
-
yield
|
33
|
+
yield config
|
28
34
|
end
|
29
|
-
|
30
35
|
end
|
data/lib/stone/conciliation.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Stone::Siclos
|
2
4
|
module Client
|
3
|
-
|
4
|
-
|
5
5
|
class Response
|
6
6
|
def initialize(code, data)
|
7
7
|
@code = code
|
@@ -17,6 +17,7 @@ module Stone::Siclos
|
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
|
+
|
20
21
|
def raise_exception
|
21
22
|
return unless Stone.config.siclos.use_exception
|
22
23
|
|
@@ -25,7 +26,6 @@ module Stone::Siclos
|
|
25
26
|
end
|
26
27
|
|
27
28
|
class Base
|
28
|
-
|
29
29
|
def initialize
|
30
30
|
@token = Stone.config.siclos.api_key
|
31
31
|
end
|
@@ -44,8 +44,8 @@ module Stone::Siclos
|
|
44
44
|
body: data ? data.to_json : nil,
|
45
45
|
params: params,
|
46
46
|
headers: {
|
47
|
-
|
48
|
-
:
|
47
|
+
'Content-Type': 'application/json',
|
48
|
+
Authorization: "Bearer #{@token}"
|
49
49
|
}
|
50
50
|
).run
|
51
51
|
Response.new(response.response_code, response.response_body)
|
@@ -53,7 +53,6 @@ module Stone::Siclos
|
|
53
53
|
end
|
54
54
|
|
55
55
|
class << self
|
56
|
-
|
57
56
|
end
|
58
57
|
end
|
59
58
|
end
|
data/lib/stone/siclos.rb
CHANGED
data/lib/stone/siclos/client.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Stone::Siclos
|
2
4
|
module Client
|
3
|
-
|
4
|
-
TOKEN_KEY = :siclos_token
|
5
|
-
|
6
5
|
autoload :Token, 'stone/siclos/client/token'
|
7
6
|
autoload :Establishment, 'stone/siclos/client/establishment'
|
8
7
|
autoload :Recipient, 'stone/siclos/client/recipient'
|
@@ -15,19 +14,21 @@ module Stone::Siclos
|
|
15
14
|
autoload :Webhook, 'stone/siclos/client/webhook'
|
16
15
|
|
17
16
|
class Response
|
17
|
+
attr_reader :data
|
18
|
+
attr_reader :code
|
19
|
+
|
18
20
|
def initialize(code, data)
|
19
21
|
@code = code
|
20
22
|
@data = JSON.parse(data, symbolize_names: true)
|
21
23
|
raise_exception unless @data[:success]
|
22
24
|
end
|
23
|
-
attr_reader :data
|
24
|
-
attr_reader :code
|
25
25
|
|
26
26
|
def success?
|
27
27
|
@data[:success]
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
31
|
+
|
31
32
|
def raise_exception
|
32
33
|
return unless Stone.config.siclos.use_exception
|
33
34
|
|
@@ -36,9 +37,8 @@ module Stone::Siclos
|
|
36
37
|
end
|
37
38
|
|
38
39
|
class Base
|
39
|
-
|
40
|
-
|
41
|
-
@token = RequestLocals.store[TOKEN_KEY] || _token
|
40
|
+
def initialize(token = Stone.config.siclos.api_key)
|
41
|
+
@token = token
|
42
42
|
end
|
43
43
|
|
44
44
|
def parse_endpoint(path)
|
@@ -48,81 +48,82 @@ module Stone::Siclos
|
|
48
48
|
URI.join(endpoint, path)
|
49
49
|
end
|
50
50
|
|
51
|
+
def remove_blank_values(data)
|
52
|
+
object = data.respond_to?(:attributes) ? data.attributes : data
|
53
|
+
object.each_with_object({}) do |(k, v), new_hash|
|
54
|
+
unless v.blank? && v != false
|
55
|
+
if v.respond_to?(:attributes)
|
56
|
+
new_hash[k] = remove_blank_values(v.attributes)
|
57
|
+
next
|
58
|
+
end
|
59
|
+
|
60
|
+
new_hash[k] = v.is_a?(Hash) ? remove_blank_values(v) : v
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
51
65
|
def request(method, path, data = nil, params = nil)
|
52
66
|
response = Typhoeus::Request.new(
|
53
67
|
parse_endpoint(path),
|
54
68
|
method: method,
|
55
|
-
body: data ? data.to_json : nil,
|
69
|
+
body: data ? remove_blank_values(data).to_json : nil,
|
56
70
|
params: params,
|
57
|
-
headers: {
|
58
|
-
:'Content-Type'=> 'application/json',
|
59
|
-
:Authorization => "Bearer #{@token}"
|
60
|
-
}
|
71
|
+
headers: { 'Content-Type': 'application/json', Authorization: "Bearer #{@token}" }
|
61
72
|
).run
|
62
73
|
Response.new(response.response_code, response.response_body)
|
63
74
|
end
|
64
75
|
end
|
65
76
|
|
66
77
|
class << self
|
78
|
+
attr_reader :authentication_token
|
79
|
+
|
67
80
|
def token
|
68
81
|
@token ||= Token.new
|
69
82
|
end
|
70
83
|
|
71
84
|
def establishment
|
72
|
-
@establishment ||= Establishment.new
|
85
|
+
@establishment ||= Establishment.new(@authentication_token)
|
73
86
|
end
|
74
87
|
|
75
88
|
def recipient
|
76
|
-
@recipient ||= Recipient.new
|
89
|
+
@recipient ||= Recipient.new(@authentication_token)
|
77
90
|
end
|
78
91
|
|
79
92
|
def pos
|
80
|
-
@pos ||= Pos.new
|
93
|
+
@pos ||= Pos.new(@authentication_token)
|
81
94
|
end
|
82
95
|
|
83
96
|
def pre_transaction
|
84
|
-
@pre_transaction ||= PreTransaction.new
|
97
|
+
@pre_transaction ||= PreTransaction.new(@authentication_token)
|
85
98
|
end
|
86
99
|
|
87
100
|
def transaction
|
88
|
-
@transaction ||= Transaction.new
|
101
|
+
@transaction ||= Transaction.new(@authentication_token)
|
89
102
|
end
|
90
103
|
|
91
104
|
def finance
|
92
|
-
@finance ||= Finance.new
|
105
|
+
@finance ||= Finance.new(@authentication_token)
|
93
106
|
end
|
94
107
|
|
95
108
|
def danfe
|
96
|
-
@danfe ||= Danfe.new
|
109
|
+
@danfe ||= Danfe.new(@authentication_token)
|
97
110
|
end
|
98
111
|
|
99
112
|
def claim_check
|
100
|
-
@claim_check ||= ClaimCheck.new
|
113
|
+
@claim_check ||= ClaimCheck.new(@authentication_token)
|
101
114
|
end
|
102
115
|
|
103
116
|
def webhook
|
104
|
-
@webhook ||= Webhook.new
|
117
|
+
@webhook ||= Webhook.new(@authentication_token)
|
105
118
|
end
|
106
119
|
|
107
120
|
def with_token
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
if authentication_token.success?
|
112
|
-
RequestLocals.store[TOKEN_KEY] = authentication_token.data[:token]
|
113
|
-
result = yield(self)
|
114
|
-
result
|
115
|
-
else
|
116
|
-
raise Stone::Siclos::Error::TokenError, authentication_token.data[:msg]
|
117
|
-
end
|
118
|
-
ensure
|
119
|
-
clear_token
|
120
|
-
end
|
121
|
-
|
122
|
-
private
|
121
|
+
token_result = token.token
|
122
|
+
raise Stone::Siclos::Error::TokenError, token_result.data[:msg] unless token_result.success?
|
123
123
|
|
124
|
-
|
125
|
-
|
124
|
+
@authentication_token = token_result.data[:token]
|
125
|
+
result = yield(self)
|
126
|
+
result
|
126
127
|
end
|
127
128
|
end
|
128
129
|
end
|