orangedata 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -55,21 +55,31 @@ module OrangeData
55
55
  transport.post(method, data)
56
56
  end
57
57
 
58
+ def post_request(method, data)
59
+ raw_post(method, data).tap{|resp|
60
+ if resp.status == 401
61
+ # TODO: better exceptions
62
+ raise 'Unauthorized'
63
+ end
64
+ }
65
+ end
66
+
58
67
  def post_entity(sub_url, data)
59
- res = raw_post(sub_url, data)
68
+ res = post_request(sub_url, data)
60
69
 
61
70
  case res.status
62
71
  when 201
63
72
  return true
64
- when 401
65
- raise 'Unauthorized'
66
73
  when 409
67
74
  raise "Conflict"
68
75
  when 400
69
- raise "Invalid doc: #{res.body}"
70
- else
71
- raise "Unknown code from OD: #{res.status} #{res.reason_phrase} #{res.body}"
76
+ raise "Invalid doc: #{res.body["errors"] || res.body}"
77
+ when 503
78
+ if res.headers['Retry-After']
79
+ raise "Document queue full, retry in #{res.headers['Retry-After']}"
80
+ end
72
81
  end
82
+ raise "Unknown code from OD: #{res.status} #{res.reason_phrase} #{res.body}"
73
83
  end
74
84
 
75
85
  def get_entity(sub_url)
@@ -79,7 +89,7 @@ module OrangeData
79
89
  when 200
80
90
  return res.body
81
91
  when 400
82
- raise "Cannot get doc: #{res.body}"
92
+ raise "Cannot get doc: #{res.body["errors"] || res.body}"
83
93
  when 401
84
94
  raise 'Unauthorized'
85
95
  end
@@ -95,15 +105,13 @@ module OrangeData
95
105
  end
96
106
 
97
107
  def post_document_validate(data)
98
- res = raw_post 'validateDocument', data
108
+ res = post_request 'validateDocument', data
99
109
 
100
110
  case res.status
101
111
  when 200
102
112
  return true
103
113
  when 400
104
- return res.body
105
- when 401
106
- raise 'Unauthorized'
114
+ return res.body["errors"]
107
115
  else
108
116
  raise "Unexpected response: #{res.status} #{res.reason_phrase}"
109
117
  end
@@ -114,7 +122,7 @@ module OrangeData
114
122
  end
115
123
 
116
124
  def get_document(inn, document_id)
117
- get_entity "documents/#{inn}/status/#{document_id}"
125
+ ReceiptResult.from_hash(get_entity("documents/#{inn}/status/#{document_id}"))
118
126
  end
119
127
 
120
128
  def post_correction(data)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OrangeData
4
4
 
5
- VERSION = "0.0.2"
5
+ VERSION = "0.0.3"
6
6
 
7
7
  end
data/lib/orange_data.rb CHANGED
@@ -3,19 +3,11 @@
3
3
  require "orange_data/version"
4
4
  require "orange_data/credentials"
5
5
  require "orange_data/transport"
6
+ require "orange_data/receipt"
6
7
 
7
8
  # top-level namespace
8
9
  module OrangeData
9
10
 
10
- # QR: t=20180518T220500&s=975.88&fn=8710000101125654&i=99456&fp=1250448795&n=1
11
- #
12
11
 
13
- # - t=<date/time - дата и время осуществления расчета в формате ГГГГММДДТЧЧММ>
14
- # - s=<сумма расчета в рублях и копейках, разделенных точкой>
15
- # - fn=<заводской номер фискального накопителя>
16
- # - i=<порядковый номер фискального документа, нулями не дополняется>
17
- # - fp=<фискальный признак документа, нулями не дополняется>
18
- # - n=<признак расчета>.
19
- # Пример строки QR-кода: t=20150720T1638&s=9999999.00&fn=000110000105&i=12345678&fp=123456&n=2
20
12
 
21
13
  end
data/orangedata.gemspec CHANGED
@@ -29,8 +29,10 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency "faraday_middleware"
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 1.16"
32
+ spec.add_development_dependency "json-schema", "~> 2.8"
32
33
  spec.add_development_dependency "rake", "~> 10.0"
33
34
  spec.add_development_dependency "rspec"
34
35
  spec.add_development_dependency "rubocop"
36
+ spec.add_development_dependency "simplecov"
35
37
  spec.add_development_dependency "webmock"
36
38
  end
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.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasily Fedoseyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-23 00:00:00.000000000 Z
11
+ date: 2018-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.16'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json-schema
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.8'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: webmock
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +158,7 @@ files:
130
158
  - lib/orange_data/credentials.rb
131
159
  - lib/orange_data/credentials_test.yml
132
160
  - lib/orange_data/receipt.rb
161
+ - lib/orange_data/schema_definitions.yml
133
162
  - lib/orange_data/transport.rb
134
163
  - lib/orange_data/version.rb
135
164
  - lib/orangedata.rb