orangedata 0.0.9 → 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/CHANGELOG.md +16 -5
- data/Gemfile.lock +81 -53
- data/README.md +1 -1
- data/Rakefile +7 -7
- data/lib/orange_data/credentials.rb +13 -13
- data/lib/orange_data/generated_attributes.rb +2 -2
- data/lib/orange_data/receipt.rb +10 -9
- data/lib/orange_data/schema_definitions.yml +7 -2
- data/lib/orange_data/transport.rb +4 -3
- data/lib/orange_data/version.rb +1 -1
- data/orangedata.gemspec +5 -5
- metadata +14 -19
- data/.gitignore +0 -11
- data/.rspec +0 -3
- data/.rubocop.yml +0 -113
- data/.travis.yml +0 -9
- data/tmp/.keep +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ba3bcedb39497e51ece3556b54004a8876c21a66f908421cc838a75ac0fb4556
|
|
4
|
+
data.tar.gz: 43edebb7b0afa263af5fc73b964fd2e72c0b55fc8e95048e66d3afc99032c20f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c82f3c489b2465bb5d94c2170e0d8ca192ce0819db7884c22961c928f4f532eba48954186bdf1c5f3a5bb6b2e548dbe4feba69c5294957696ab09a6009b41624
|
|
7
|
+
data.tar.gz: 7b2e202b628d4dbcec2f61327254fa602f067258b229b0962be8615b67286107e63d7748d163688550807331c2288e45d75724a1d5d138e61885fd7650643946
|
data/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
- Deprecated support for EOL ruby versions < 2.6 - gem may continue to work, but will not be tested against
|
|
6
|
+
- Switched CI to github actions
|
|
7
|
+
- ruby 3.0, 3.1 support
|
|
8
|
+
|
|
9
|
+
## 0.0.10
|
|
10
|
+
- Changed cashless print title per law change
|
|
11
|
+
|
|
12
|
+
## 0.0.9
|
|
2
13
|
|
|
3
14
|
- Added: Payment method names in schema
|
|
4
15
|
- Added: credentials#certificate_subject
|
|
5
16
|
- Added: `Receipt#as_json` and `.from_hash`
|
|
6
17
|
|
|
7
|
-
|
|
18
|
+
## 0.0.8
|
|
8
19
|
|
|
9
|
-
- Fixed: return `nil` when document is not ready yet
|
|
20
|
+
- Fixed: return `nil` when document is not ready yet
|
|
10
21
|
|
|
11
|
-
|
|
22
|
+
## 0.0.7
|
|
12
23
|
|
|
13
24
|
- data schema update to 2.23.0 (15.06.2019)
|
|
14
25
|
- Added: load credentials from zip file via rubyzip (no dependency, only accept already opened object)
|
|
15
26
|
- Added: Credentials#from_hash now accepts `key_pass` argument
|
|
16
27
|
|
|
17
|
-
|
|
28
|
+
## 0.0.6
|
|
18
29
|
|
|
19
30
|
- data schema changes:
|
|
20
31
|
- title attribute used for field names instead of description
|
data/Gemfile.lock
CHANGED
|
@@ -1,67 +1,95 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
orangedata (0.0
|
|
4
|
+
orangedata (0.1.0)
|
|
5
5
|
faraday (>= 0.15)
|
|
6
6
|
faraday_middleware
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
addressable (2.
|
|
12
|
-
public_suffix (>= 2.0.2, <
|
|
13
|
-
ast (2.4.
|
|
14
|
-
crack (0.4.
|
|
15
|
-
|
|
16
|
-
diff-lcs (1.
|
|
17
|
-
docile (1.
|
|
18
|
-
faraday (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
faraday (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
11
|
+
addressable (2.8.1)
|
|
12
|
+
public_suffix (>= 2.0.2, < 6.0)
|
|
13
|
+
ast (2.4.2)
|
|
14
|
+
crack (0.4.5)
|
|
15
|
+
rexml
|
|
16
|
+
diff-lcs (1.5.0)
|
|
17
|
+
docile (1.4.0)
|
|
18
|
+
faraday (1.10.2)
|
|
19
|
+
faraday-em_http (~> 1.0)
|
|
20
|
+
faraday-em_synchrony (~> 1.0)
|
|
21
|
+
faraday-excon (~> 1.1)
|
|
22
|
+
faraday-httpclient (~> 1.0)
|
|
23
|
+
faraday-multipart (~> 1.0)
|
|
24
|
+
faraday-net_http (~> 1.0)
|
|
25
|
+
faraday-net_http_persistent (~> 1.0)
|
|
26
|
+
faraday-patron (~> 1.0)
|
|
27
|
+
faraday-rack (~> 1.0)
|
|
28
|
+
faraday-retry (~> 1.0)
|
|
29
|
+
ruby2_keywords (>= 0.0.4)
|
|
30
|
+
faraday-em_http (1.0.0)
|
|
31
|
+
faraday-em_synchrony (1.0.0)
|
|
32
|
+
faraday-excon (1.1.0)
|
|
33
|
+
faraday-httpclient (1.0.1)
|
|
34
|
+
faraday-multipart (1.0.4)
|
|
35
|
+
multipart-post (~> 2)
|
|
36
|
+
faraday-net_http (1.0.1)
|
|
37
|
+
faraday-net_http_persistent (1.2.0)
|
|
38
|
+
faraday-patron (1.0.0)
|
|
39
|
+
faraday-rack (1.0.0)
|
|
40
|
+
faraday-retry (1.0.3)
|
|
41
|
+
faraday_middleware (1.2.0)
|
|
42
|
+
faraday (~> 1.0)
|
|
43
|
+
hashdiff (1.0.1)
|
|
44
|
+
json (2.6.2)
|
|
45
|
+
json-schema (3.0.0)
|
|
46
|
+
addressable (>= 2.8)
|
|
47
|
+
multipart-post (2.2.3)
|
|
48
|
+
parallel (1.22.1)
|
|
49
|
+
parser (3.1.2.1)
|
|
50
|
+
ast (~> 2.4.1)
|
|
51
|
+
public_suffix (5.0.0)
|
|
52
|
+
rainbow (3.1.1)
|
|
53
|
+
rake (13.0.6)
|
|
54
|
+
regexp_parser (2.6.0)
|
|
55
|
+
rexml (3.2.5)
|
|
56
|
+
rspec (3.11.0)
|
|
57
|
+
rspec-core (~> 3.11.0)
|
|
58
|
+
rspec-expectations (~> 3.11.0)
|
|
59
|
+
rspec-mocks (~> 3.11.0)
|
|
60
|
+
rspec-core (3.11.0)
|
|
61
|
+
rspec-support (~> 3.11.0)
|
|
62
|
+
rspec-expectations (3.11.1)
|
|
41
63
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
42
|
-
rspec-support (~> 3.
|
|
43
|
-
rspec-mocks (3.
|
|
64
|
+
rspec-support (~> 3.11.0)
|
|
65
|
+
rspec-mocks (3.11.1)
|
|
44
66
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
45
|
-
rspec-support (~> 3.
|
|
46
|
-
rspec-support (3.
|
|
47
|
-
rubocop (
|
|
48
|
-
|
|
67
|
+
rspec-support (~> 3.11.0)
|
|
68
|
+
rspec-support (3.11.1)
|
|
69
|
+
rubocop (1.36.0)
|
|
70
|
+
json (~> 2.3)
|
|
49
71
|
parallel (~> 1.10)
|
|
50
|
-
parser (>= 2.
|
|
72
|
+
parser (>= 3.1.2.1)
|
|
51
73
|
rainbow (>= 2.2.2, < 4.0)
|
|
74
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
75
|
+
rexml (>= 3.2.5, < 4.0)
|
|
76
|
+
rubocop-ast (>= 1.20.1, < 2.0)
|
|
52
77
|
ruby-progressbar (~> 1.7)
|
|
53
|
-
unicode-display_width (>= 1.4.0, <
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
78
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
79
|
+
rubocop-ast (1.21.0)
|
|
80
|
+
parser (>= 3.1.1.0)
|
|
81
|
+
ruby-progressbar (1.11.0)
|
|
82
|
+
ruby2_keywords (0.0.5)
|
|
83
|
+
rubyzip (2.3.2)
|
|
84
|
+
simplecov (0.21.2)
|
|
58
85
|
docile (~> 1.1)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
simplecov-html (0.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
86
|
+
simplecov-html (~> 0.11)
|
|
87
|
+
simplecov_json_formatter (~> 0.1)
|
|
88
|
+
simplecov-html (0.12.3)
|
|
89
|
+
simplecov_json_formatter (0.1.4)
|
|
90
|
+
unicode-display_width (2.3.0)
|
|
91
|
+
webmock (3.18.1)
|
|
92
|
+
addressable (>= 2.8.0)
|
|
65
93
|
crack (>= 0.3.2)
|
|
66
94
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
67
95
|
|
|
@@ -69,10 +97,10 @@ PLATFORMS
|
|
|
69
97
|
ruby
|
|
70
98
|
|
|
71
99
|
DEPENDENCIES
|
|
72
|
-
bundler
|
|
73
|
-
json-schema (
|
|
100
|
+
bundler
|
|
101
|
+
json-schema (>= 2.8)
|
|
74
102
|
orangedata!
|
|
75
|
-
rake (
|
|
103
|
+
rake (>= 10.0)
|
|
76
104
|
rspec
|
|
77
105
|
rubocop
|
|
78
106
|
rubyzip
|
|
@@ -80,4 +108,4 @@ DEPENDENCIES
|
|
|
80
108
|
webmock
|
|
81
109
|
|
|
82
110
|
BUNDLED WITH
|
|
83
|
-
|
|
111
|
+
2.3.10
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/orangedata)
|
|
4
4
|

|
|
5
|
-
|
|
5
|
+

|
|
6
6
|
|
|
7
7
|
A ruby client for orangedata.ru service.
|
|
8
8
|
Target service is pretty local to RU, so parts of readme will be in russian.
|
data/Rakefile
CHANGED
|
@@ -28,11 +28,11 @@ namespace :swagger do
|
|
|
28
28
|
new_definitions = swagger['definitions']
|
|
29
29
|
old_definitions = OrangeData::PAYLOAD_SCHEMA['definitions']
|
|
30
30
|
|
|
31
|
-
if new_definitions.keys
|
|
31
|
+
if new_definitions.keys == old_definitions.keys
|
|
32
|
+
puts "No top-level definitions changed"
|
|
33
|
+
else
|
|
32
34
|
puts "New schema definitions: #{new_definitions.keys - old_definitions.keys}"
|
|
33
35
|
puts "Removed schema definitions: #{old_definitions.keys - new_definitions.keys}"
|
|
34
|
-
else
|
|
35
|
-
puts "No top-level definitions changed"
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
new_definitions.each_pair do |key, new_schema|
|
|
@@ -40,13 +40,13 @@ namespace :swagger do
|
|
|
40
40
|
next unless old_schema
|
|
41
41
|
|
|
42
42
|
if old_schema['properties'].keys != new_schema['properties'].keys
|
|
43
|
-
if old_schema['properties'].keys.sort
|
|
44
|
-
puts "\t#{key} added: #{new_schema['properties'].keys - old_schema['properties'].keys}"
|
|
45
|
-
puts "\t#{key} removed: #{old_schema['properties'].keys - new_schema['properties'].keys}"
|
|
46
|
-
else
|
|
43
|
+
if old_schema['properties'].keys.sort == new_schema['properties'].keys.sort
|
|
47
44
|
puts "\t#{key} property order changed:"
|
|
48
45
|
puts "\t\told:#{old_schema['properties'].keys}"
|
|
49
46
|
puts "\t\tnew:#{new_schema['properties'].keys}"
|
|
47
|
+
else
|
|
48
|
+
puts "\t#{key} added: #{new_schema['properties'].keys - old_schema['properties'].keys}"
|
|
49
|
+
puts "\t#{key} removed: #{old_schema['properties'].keys - new_schema['properties'].keys}"
|
|
50
50
|
end
|
|
51
51
|
# else
|
|
52
52
|
# TODO: deep compare
|
|
@@ -18,11 +18,11 @@ module OrangeData
|
|
|
18
18
|
h = { 'Modulus' => :n, 'Exponent' => :e }
|
|
19
19
|
h.merge!('P' => :p, 'Q' => :q, 'DP' => :dmp1, 'DQ' => :dmq1, 'InverseQ' => :iqmp, 'D' => :d) if private?
|
|
20
20
|
|
|
21
|
-
"<RSAKeyValue>#{h.map{|(k, v)| "<#{k}>#{h_params[v.to_s]}</#{k}>" }.join
|
|
21
|
+
"<RSAKeyValue>#{h.map{|(k, v)| "<#{k}>#{h_params[v.to_s]}</#{k}>" }.join}</RSAKeyValue>"
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def to_hash
|
|
25
|
-
params.map{|k, v| v != 0 && [k, Base64.strict_encode64(v.to_s(2))] || nil }.compact.to_h
|
|
25
|
+
params.map{|k, v| (v != 0 && [k, Base64.strict_encode64(v.to_s(2))]) || nil }.compact.to_h
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -78,7 +78,7 @@ module OrangeData
|
|
|
78
78
|
end
|
|
79
79
|
else
|
|
80
80
|
# ruby 2.3 and may be older
|
|
81
|
-
key.params.
|
|
81
|
+
key.params.each_key do |param|
|
|
82
82
|
if (v = hash[param] || hash[param.to_sym])
|
|
83
83
|
key.send(:"#{param}=", OpenSSL::BN.new(Base64.decode64(v), 2))
|
|
84
84
|
end
|
|
@@ -205,9 +205,9 @@ module OrangeData
|
|
|
205
205
|
end
|
|
206
206
|
|
|
207
207
|
def certificate_subject
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
return unless (subj = certificate.subject.to_a.select{|ent| ent.first == 'O' }.first)
|
|
209
|
+
|
|
210
|
+
subj[1].force_encoding('UTF-8')
|
|
211
211
|
end
|
|
212
212
|
|
|
213
213
|
DEFAULT_KEY_LENGTH = 2048
|
|
@@ -225,14 +225,14 @@ module OrangeData
|
|
|
225
225
|
|
|
226
226
|
def self.read_certs_from_pack(path, signature_key_name:nil, cert_key_pass:nil, title:nil, signature_key:nil)
|
|
227
227
|
path = File.expand_path(path)
|
|
228
|
-
client_cert = Dir.glob(path
|
|
228
|
+
client_cert = Dir.glob("#{path}/*.{crt}").select{|f| File.file?(f.sub(/.crt\z/, '.key')) }
|
|
229
229
|
raise 'Expect to find exactly one <num>.crt with corresponding <num>.key file' unless client_cert.size == 1
|
|
230
230
|
|
|
231
231
|
client_cert = client_cert.first
|
|
232
232
|
|
|
233
233
|
unless signature_key
|
|
234
234
|
# private_key_test.xml || rsa_\d+_private_key.xml
|
|
235
|
-
xmls = Dir.glob(path
|
|
235
|
+
xmls = Dir.glob("#{path}/*.{xml}").grep(/private/)
|
|
236
236
|
signature_key = if xmls.size == 1
|
|
237
237
|
File.read(xmls.first)
|
|
238
238
|
else
|
|
@@ -241,14 +241,14 @@ module OrangeData
|
|
|
241
241
|
end
|
|
242
242
|
end
|
|
243
243
|
|
|
244
|
-
from_hash(
|
|
244
|
+
from_hash({
|
|
245
245
|
title: title || "Generated from #{File.basename(path)}",
|
|
246
246
|
signature_key_name: signature_key_name || File.basename(client_cert).gsub(/\..*/, ''),
|
|
247
247
|
certificate: File.read(client_cert),
|
|
248
248
|
certificate_key: File.read(client_cert.sub(/.crt\z/, '.key')),
|
|
249
249
|
certificate_key_pass: cert_key_pass,
|
|
250
250
|
signature_key: signature_key
|
|
251
|
-
)
|
|
251
|
+
})
|
|
252
252
|
end
|
|
253
253
|
|
|
254
254
|
def self.read_certs_from_zip_pack(rubyzip_object, signature_key_name:nil, cert_key_pass:nil, title:nil, signature_key:nil)
|
|
@@ -260,7 +260,7 @@ module OrangeData
|
|
|
260
260
|
|
|
261
261
|
unless signature_key
|
|
262
262
|
# private_key_test.xml || rsa_\d+_private_key.xml
|
|
263
|
-
xmls = rubyzip_object.glob('/*.{xml}').
|
|
263
|
+
xmls = rubyzip_object.glob('/*.{xml}').grep(/private/)
|
|
264
264
|
signature_key = if xmls.size == 1
|
|
265
265
|
xmls.first.get_input_stream.read
|
|
266
266
|
else
|
|
@@ -269,14 +269,14 @@ module OrangeData
|
|
|
269
269
|
end
|
|
270
270
|
end
|
|
271
271
|
|
|
272
|
-
from_hash(
|
|
272
|
+
from_hash({
|
|
273
273
|
title: title || "Generated from zip",
|
|
274
274
|
signature_key_name: signature_key_name || File.basename(client_cert.name).gsub(/\..*/, ''),
|
|
275
275
|
certificate: client_cert.get_input_stream.read,
|
|
276
276
|
certificate_key: client_key.get_input_stream.read,
|
|
277
277
|
certificate_key_pass: cert_key_pass,
|
|
278
278
|
signature_key: signature_key
|
|
279
|
-
)
|
|
279
|
+
})
|
|
280
280
|
end
|
|
281
281
|
|
|
282
282
|
# публичная часть ключа подписи в формате пригодном для отдачи в ЛК
|
|
@@ -37,8 +37,8 @@ module OrangeData
|
|
|
37
37
|
property_name = info["x-name"] || property.underscore
|
|
38
38
|
|
|
39
39
|
if plain_types.include?(info["type"]) ||
|
|
40
|
-
info["type"].is_a?(Array) && plain_types.include?(info["type"].first) &&
|
|
41
|
-
info["type"].last == "null" && info["type"].size == 2
|
|
40
|
+
(info["type"].is_a?(Array) && plain_types.include?(info["type"].first) &&
|
|
41
|
+
info["type"].last == "null" && info["type"].size == 2)
|
|
42
42
|
if info["x-enum"]
|
|
43
43
|
inverse_map = info["x-enum"].map{|k, v| [v['val'], k.to_sym] }.to_h
|
|
44
44
|
|
data/lib/orange_data/receipt.rb
CHANGED
|
@@ -30,7 +30,7 @@ module OrangeData
|
|
|
30
30
|
group: hash[:group] || hash['group'],
|
|
31
31
|
key_name: hash[:key] || hash['key'],
|
|
32
32
|
content: hash[:content] || hash['content'],
|
|
33
|
-
callback_url: hash[:callbackUrl] || hash['callbackUrl']
|
|
33
|
+
callback_url: hash[:callbackUrl] || hash['callbackUrl']
|
|
34
34
|
)
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -68,7 +68,7 @@ module OrangeData
|
|
|
68
68
|
|
|
69
69
|
class ReceiptContent < PayloadContent
|
|
70
70
|
def initialize(payload={})
|
|
71
|
-
|
|
71
|
+
super(payload || {})
|
|
72
72
|
# TODO: import...
|
|
73
73
|
# TODO: taxationSystem default in checkclose
|
|
74
74
|
@check_close = CheckClose.new(@payload['checkClose'])
|
|
@@ -118,12 +118,12 @@ module OrangeData
|
|
|
118
118
|
def set_agent_info(**options)
|
|
119
119
|
# agent info may have some validations/transformations, so
|
|
120
120
|
agent_info = AgentInfo.new.assign_attributes(options)
|
|
121
|
-
assign_attributes(agent_info.attributes.
|
|
121
|
+
assign_attributes(agent_info.attributes.compact)
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
class Position < PayloadContent
|
|
125
125
|
def initialize(payload={})
|
|
126
|
-
|
|
126
|
+
super(payload || {})
|
|
127
127
|
@supplier_info = SupplierInfo.new(@payload['supplierInfo']) if @payload['supplierInfo']
|
|
128
128
|
@agent_info = AgentInfo.new(@payload['agentInfo']) if @payload['agentInfo']
|
|
129
129
|
end
|
|
@@ -160,9 +160,8 @@ module OrangeData
|
|
|
160
160
|
|
|
161
161
|
class CheckClose < PayloadContent
|
|
162
162
|
def initialize(payload={})
|
|
163
|
-
payload
|
|
164
|
-
@
|
|
165
|
-
@payments = (payload['payments'] || []).map{|p| Payment.new(p) }
|
|
163
|
+
super(payload || {})
|
|
164
|
+
@payments = (@payload['payments'] || []).map{|p| Payment.new(p) }
|
|
166
165
|
end
|
|
167
166
|
|
|
168
167
|
def to_hash
|
|
@@ -192,7 +191,7 @@ module OrangeData
|
|
|
192
191
|
|
|
193
192
|
class ReceiptResult < PayloadContent
|
|
194
193
|
def initialize(payload)
|
|
195
|
-
|
|
194
|
+
super(payload)
|
|
196
195
|
@content = ReceiptContent.new(@payload["content"])
|
|
197
196
|
end
|
|
198
197
|
|
|
@@ -204,6 +203,7 @@ module OrangeData
|
|
|
204
203
|
end
|
|
205
204
|
|
|
206
205
|
attr_reader :content
|
|
206
|
+
|
|
207
207
|
GeneratedAttributes.from_schema(self, PAYLOAD_SCHEMA["definitions"]["CheckStatusViewModel[CheckContent]"])
|
|
208
208
|
|
|
209
209
|
def qr_code_content
|
|
@@ -248,7 +248,7 @@ module OrangeData
|
|
|
248
248
|
|
|
249
249
|
class CorrectionResult < PayloadContent
|
|
250
250
|
def initialize(payload)
|
|
251
|
-
|
|
251
|
+
super(payload || {})
|
|
252
252
|
@content = CorrectionContent.new(@payload["content"] || {})
|
|
253
253
|
end
|
|
254
254
|
|
|
@@ -260,6 +260,7 @@ module OrangeData
|
|
|
260
260
|
end
|
|
261
261
|
|
|
262
262
|
attr_reader :content
|
|
263
|
+
|
|
263
264
|
GeneratedAttributes.from_schema(self, PAYLOAD_SCHEMA["definitions"]["CheckStatusViewModel[CheckContent]"])
|
|
264
265
|
end
|
|
265
266
|
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
info:
|
|
3
3
|
version: '2.0'
|
|
4
4
|
title: Nebula API v2
|
|
5
|
-
description:
|
|
5
|
+
description: |-
|
|
6
|
+
OpenApi-like definition for receipt schema with extensions and additions
|
|
7
|
+
Подробнее про поля имеет смысл смотреть в Приказ ФНС России от 21.03.2017 N ММВ-7-20/229@ (ред. от 22.10.2018)
|
|
8
|
+
"Об утверждении дополнительных реквизитов фискальных документов и форматов фискальных документов,
|
|
9
|
+
обязательных к использованию" (Зарегистрировано в Минюсте России 13.04.2017 N 46361)
|
|
10
|
+
(с изм. и доп., вступ. в силу с 01.01.2019)
|
|
6
11
|
|
|
7
12
|
anyOf:
|
|
8
13
|
- "$ref": "#definitions/CheckDocumentCreate[CheckContent]"
|
|
@@ -587,7 +592,7 @@ definitions:
|
|
|
587
592
|
card:
|
|
588
593
|
val: 2
|
|
589
594
|
title: сумма по чеку электронными
|
|
590
|
-
print:
|
|
595
|
+
print: Безналичными
|
|
591
596
|
x-tag-id: 1081
|
|
592
597
|
prepaid:
|
|
593
598
|
val: 14
|
|
@@ -24,11 +24,12 @@ module OrangeData
|
|
|
24
24
|
def initialize(app, signature_key)
|
|
25
25
|
@app = app
|
|
26
26
|
@signature_key = signature_key
|
|
27
|
+
super(app)
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def call(env)
|
|
30
31
|
if env.body
|
|
31
|
-
signature = @signature_key.sign(OpenSSL::Digest
|
|
32
|
+
signature = @signature_key.sign(OpenSSL::Digest.new('SHA256'), env.body)
|
|
32
33
|
env.request_headers['X-Signature'] = Base64.strict_encode64(signature)
|
|
33
34
|
end
|
|
34
35
|
@app.call(env)
|
|
@@ -105,8 +106,8 @@ module OrangeData
|
|
|
105
106
|
|
|
106
107
|
@transport.send(
|
|
107
108
|
get_method,
|
|
108
|
-
@data.respond_to?(:inn) && @data.inn || @data[:inn] || @data["inn"],
|
|
109
|
-
@data.respond_to?(:id) && @data.id || @data[:id] || @data["id"]
|
|
109
|
+
(@data.respond_to?(:inn) && @data.inn) || @data[:inn] || @data["inn"],
|
|
110
|
+
(@data.respond_to?(:id) && @data.id) || @data[:id] || @data["id"]
|
|
110
111
|
)
|
|
111
112
|
end
|
|
112
113
|
end
|
data/lib/orange_data/version.rb
CHANGED
data/orangedata.gemspec
CHANGED
|
@@ -16,21 +16,21 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
spec.license = "MIT"
|
|
17
17
|
|
|
18
18
|
spec.files = Dir.chdir(File.expand_path('.', __dir__)) do
|
|
19
|
-
`git ls-files -z`.split("\x0").reject{|f| f.match(%r{^(test|spec|features)/}) }
|
|
19
|
+
`git ls-files -z`.split("\x0").reject{|f| f.start_with?('.') || f.match(%r{^(test|spec|features|tmp)/}) }
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
# spec.bindir = "exe"
|
|
23
23
|
# spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
24
24
|
spec.require_paths = ["lib"]
|
|
25
25
|
|
|
26
|
-
# spec.required_ruby_version = ">=2.
|
|
26
|
+
# spec.required_ruby_version = ">=2.6"
|
|
27
27
|
|
|
28
28
|
spec.add_dependency "faraday", ">=0.15"
|
|
29
29
|
spec.add_dependency "faraday_middleware"
|
|
30
30
|
|
|
31
|
-
spec.add_development_dependency "bundler"
|
|
32
|
-
spec.add_development_dependency "json-schema", "
|
|
33
|
-
spec.add_development_dependency "rake", "
|
|
31
|
+
spec.add_development_dependency "bundler"
|
|
32
|
+
spec.add_development_dependency "json-schema", ">= 2.8"
|
|
33
|
+
spec.add_development_dependency "rake", ">= 10.0"
|
|
34
34
|
spec.add_development_dependency "rspec"
|
|
35
35
|
spec.add_development_dependency "rubocop"
|
|
36
36
|
spec.add_development_dependency "rubyzip"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: orangedata
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vasily Fedoseyev
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-10-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -42,42 +42,42 @@ dependencies:
|
|
|
42
42
|
name: bundler
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
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
|
-
version: '
|
|
54
|
+
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: json-schema
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '2.8'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '2.8'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rake
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - "
|
|
73
|
+
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '10.0'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - "
|
|
80
|
+
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '10.0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
@@ -157,10 +157,6 @@ executables: []
|
|
|
157
157
|
extensions: []
|
|
158
158
|
extra_rdoc_files: []
|
|
159
159
|
files:
|
|
160
|
-
- ".gitignore"
|
|
161
|
-
- ".rspec"
|
|
162
|
-
- ".rubocop.yml"
|
|
163
|
-
- ".travis.yml"
|
|
164
160
|
- CHANGELOG.md
|
|
165
161
|
- Gemfile
|
|
166
162
|
- Gemfile.lock
|
|
@@ -179,12 +175,11 @@ files:
|
|
|
179
175
|
- lib/orange_data/version.rb
|
|
180
176
|
- lib/orangedata.rb
|
|
181
177
|
- orangedata.gemspec
|
|
182
|
-
- tmp/.keep
|
|
183
178
|
homepage: https://github.com/Vasfed/orangedata
|
|
184
179
|
licenses:
|
|
185
180
|
- MIT
|
|
186
181
|
metadata: {}
|
|
187
|
-
post_install_message:
|
|
182
|
+
post_install_message:
|
|
188
183
|
rdoc_options: []
|
|
189
184
|
require_paths:
|
|
190
185
|
- lib
|
|
@@ -199,8 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
199
194
|
- !ruby/object:Gem::Version
|
|
200
195
|
version: '0'
|
|
201
196
|
requirements: []
|
|
202
|
-
rubygems_version: 3.
|
|
203
|
-
signing_key:
|
|
197
|
+
rubygems_version: 3.3.3
|
|
198
|
+
signing_key:
|
|
204
199
|
specification_version: 4
|
|
205
200
|
summary: Ruby client for orangedata.ru service
|
|
206
201
|
test_files: []
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
AllCops:
|
|
2
|
-
# DefaultFormatter: fuubar
|
|
3
|
-
# TargetRubyVersion: 2.1
|
|
4
|
-
TargetRubyVersion: 2.3
|
|
5
|
-
Exclude:
|
|
6
|
-
- 'spec/fixtures/**/*'
|
|
7
|
-
- 'tmp/**/*'
|
|
8
|
-
|
|
9
|
-
Gemspec/RequiredRubyVersion:
|
|
10
|
-
Enabled: false
|
|
11
|
-
|
|
12
|
-
Metrics/LineLength:
|
|
13
|
-
Max: 130
|
|
14
|
-
Exclude:
|
|
15
|
-
- 'spec/**/*'
|
|
16
|
-
|
|
17
|
-
Metrics/BlockLength:
|
|
18
|
-
Enabled: false
|
|
19
|
-
Exclude:
|
|
20
|
-
- 'spec/**/*'
|
|
21
|
-
|
|
22
|
-
Metrics/BlockNesting:
|
|
23
|
-
Max: 4
|
|
24
|
-
|
|
25
|
-
Metrics/MethodLength:
|
|
26
|
-
Max: 20
|
|
27
|
-
Enabled: false
|
|
28
|
-
|
|
29
|
-
Metrics/ClassLength:
|
|
30
|
-
Enabled: false
|
|
31
|
-
|
|
32
|
-
Metrics/AbcSize:
|
|
33
|
-
# Max: 50
|
|
34
|
-
Enabled: false
|
|
35
|
-
|
|
36
|
-
Metrics/CyclomaticComplexity:
|
|
37
|
-
Max: 50
|
|
38
|
-
|
|
39
|
-
Metrics/PerceivedComplexity:
|
|
40
|
-
Max: 50
|
|
41
|
-
|
|
42
|
-
Metrics/ParameterLists:
|
|
43
|
-
Max: 10
|
|
44
|
-
|
|
45
|
-
Style/StringLiterals:
|
|
46
|
-
Enabled: false
|
|
47
|
-
# EnforcedStyle: double_quotes
|
|
48
|
-
|
|
49
|
-
Style/RedundantReturn:
|
|
50
|
-
Enabled: false
|
|
51
|
-
|
|
52
|
-
Layout/AlignArguments:
|
|
53
|
-
EnforcedStyle: with_fixed_indentation
|
|
54
|
-
|
|
55
|
-
Layout/SpaceBeforeBlockBraces:
|
|
56
|
-
EnforcedStyle: no_space
|
|
57
|
-
|
|
58
|
-
Layout/SpaceAroundEqualsInParameterDefault:
|
|
59
|
-
EnforcedStyle: no_space
|
|
60
|
-
|
|
61
|
-
Layout/SpaceAfterColon:
|
|
62
|
-
Enabled: false
|
|
63
|
-
|
|
64
|
-
Layout/SpaceAroundOperators:
|
|
65
|
-
Enabled: false
|
|
66
|
-
|
|
67
|
-
Layout/EndAlignment:
|
|
68
|
-
EnforcedStyleAlignWith: variable
|
|
69
|
-
|
|
70
|
-
Layout/SpaceInsideBlockBraces:
|
|
71
|
-
SpaceBeforeBlockParameters: false
|
|
72
|
-
|
|
73
|
-
Layout/EmptyLinesAroundBlockBody:
|
|
74
|
-
Exclude:
|
|
75
|
-
- 'spec/**/*'
|
|
76
|
-
|
|
77
|
-
Layout/EmptyLinesAroundModuleBody:
|
|
78
|
-
Enabled: false
|
|
79
|
-
# EnforcedStyle: empty_lines_except_namespace
|
|
80
|
-
Layout/EmptyLinesAroundClassBody:
|
|
81
|
-
Enabled: false
|
|
82
|
-
# EnforcedStyle: empty_lines_except_namespace
|
|
83
|
-
|
|
84
|
-
Layout/DotPosition:
|
|
85
|
-
# so that code can be copied to console
|
|
86
|
-
EnforcedStyle: trailing
|
|
87
|
-
|
|
88
|
-
Layout/IndentFirstHashElement:
|
|
89
|
-
EnforcedStyle: consistent
|
|
90
|
-
|
|
91
|
-
Layout/EmptyLines:
|
|
92
|
-
Enabled: false
|
|
93
|
-
|
|
94
|
-
Style/AsciiComments:
|
|
95
|
-
Enabled: false
|
|
96
|
-
|
|
97
|
-
Style/Documentation:
|
|
98
|
-
# TODO
|
|
99
|
-
Enabled: false
|
|
100
|
-
|
|
101
|
-
Style/BlockDelimiters:
|
|
102
|
-
Enabled: false
|
|
103
|
-
Exclude:
|
|
104
|
-
- 'spec/**/*'
|
|
105
|
-
|
|
106
|
-
# trailing commas make simpler diffs
|
|
107
|
-
Style/TrailingCommaInHashLiteral:
|
|
108
|
-
Enabled: false
|
|
109
|
-
Style/TrailingCommaInArrayLiteral:
|
|
110
|
-
Enabled: false
|
|
111
|
-
|
|
112
|
-
Naming/AccessorMethodName:
|
|
113
|
-
Enabled: false
|
data/.travis.yml
DELETED
data/tmp/.keep
DELETED
|
File without changes
|