ree_lib 1.0.1 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b78b5d2573b0674dc4f2eae170e408ac3f2fe18bb735be4fdd5ba8bbb7950e6
4
- data.tar.gz: 253c3e28a517d3d14dd3110cd774f5ae4086c1ba5e0d19110de9f7d8c6f05bd8
3
+ metadata.gz: d39c69499684b2f63a3dfc5636265aceab2d0935cd4f6dfed10195cff8131989
4
+ data.tar.gz: 464e780303d9b8f1d1f8b786e507c87e708d5ba242520390fbf4f2643061d73d
5
5
  SHA512:
6
- metadata.gz: c083f3c6b152024b97e90af5294db3aa0703fa7b0c50747de9596cbe7b4da7c87d8e190e68c25acc4a039ad00a7be549b2d0ad61bb05efd7d94cd6528d3dfecd
7
- data.tar.gz: a337f004cc876ca1b1be5a0fb2187767d568a45a05b2e8926e4490acb34e7354b72f3c9ff453f9980043e38a56a09f8796da4ea0f92d938c762908370ba9438a
6
+ metadata.gz: ac7641c5e60d758ac4aa3e4fe6237c7758e5c6a53dd096acbf3bd5ca266aa48a5fffe0b0e5e50b0b2ad54493482365fdf3a6de2bf6b938abff626b7864b5016b
7
+ data.tar.gz: 329fb7390b7183e14ee2d1b52a2d236e3afdf45d7a65ad3fa31ec871c01c0637716b72479f9de6e90e5d1a1b5eb5b1fae5630747509875387f17274689bdf3fd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree_lib (1.0.1)
4
+ ree_lib (1.0.2)
5
5
  binding_of_caller (~> 1.0.0)
6
6
  i18n (~> 1.12.0)
7
7
  loofah (~> 2.18.0)
@@ -6,5 +6,4 @@ module ReeJson
6
6
  package do
7
7
  depends_on :ree_hash
8
8
  end
9
-
10
9
  end
@@ -83,7 +83,7 @@ class ReeLogger::MultiLogger < Logger
83
83
  end
84
84
 
85
85
  contract(String, Hash, Nilor[Exception], Bool => nil)
86
- def unknown(message, parameters = {}, exception =nil, log_args = true)
86
+ def unknown(message, parameters = {}, exception = nil, log_args = true)
87
87
  log(:unknown, message, parameters, exception, true)
88
88
  end
89
89
 
@@ -1,5 +1,8 @@
1
1
  class ReeSwagger::EndpointDto
2
2
  include ReeDto::EntityDSL
3
+ include Ree::LinkDSL
4
+
5
+ link 'ree_swagger/dto/error_dto', -> { ErrorDto }
3
6
 
4
7
  properties(
5
8
  method: Or[:get, :post, :put, :patch, :delete],
@@ -8,6 +11,7 @@ class ReeSwagger::EndpointDto
8
11
  serializer: Nilor[ReeMapper::Mapper],
9
12
  description: Nilor[String],
10
13
  response_status: Integer,
11
- response_description: Nilor[String]
14
+ response_description: Nilor[String],
15
+ errors: ArrayOf[ErrorDto]
12
16
  )
13
17
  end
@@ -0,0 +1,9 @@
1
+
2
+ class ReeSwagger::ErrorDto
3
+ include ReeDto::EntityDSL
4
+
5
+ properties(
6
+ status: Integer,
7
+ description: String,
8
+ )
9
+ end
@@ -88,6 +88,35 @@ class ReeSwagger::BuildEndpointSchema
88
88
  endpoint.response_status => response_schema
89
89
  }
90
90
 
91
+ endpoint.errors.each do |error|
92
+ if responses.key?(error.status)
93
+ responses[error.status][:description] += "\n\n#{error.description}"
94
+ next
95
+ end
96
+
97
+ responses[error.status] = {
98
+ description: error.description,
99
+ content: {
100
+ :'application/json' => {
101
+ schema: {
102
+ type: 'object',
103
+ properties: {
104
+ code: {
105
+ type: "string"
106
+ },
107
+ message: {
108
+ type: "string"
109
+ },
110
+ type: {
111
+ type: "string"
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ end
119
+
91
120
  method_schema = {
92
121
  responses: responses
93
122
  }
@@ -36,7 +36,21 @@ RSpec.describe :build_endpoint_schema do
36
36
  caster: caster,
37
37
  serializer: serializer,
38
38
  response_status: 200,
39
- description: nil
39
+ description: nil,
40
+ errors: [
41
+ ReeSwagger::ErrorDto.new(
42
+ status: 400,
43
+ description: "1st 400 error"
44
+ ),
45
+ ReeSwagger::ErrorDto.new(
46
+ status: 400,
47
+ description: "2nd 400 error"
48
+ ),
49
+ ReeSwagger::ErrorDto.new(
50
+ status: 401,
51
+ description: "401 error"
52
+ )
53
+ ]
40
54
  ))
41
55
 
42
56
  expect(schema).to eq(ReeSwagger::PathDto.new(
@@ -83,6 +97,48 @@ RSpec.describe :build_endpoint_schema do
83
97
  }
84
98
  }
85
99
  }
100
+ },
101
+ 400 => {
102
+ description: "1st 400 error\n\n2nd 400 error",
103
+ content: {
104
+ :'application/json' => {
105
+ schema: {
106
+ type: 'object',
107
+ properties: {
108
+ code: {
109
+ type: "string"
110
+ },
111
+ message: {
112
+ type: "string"
113
+ },
114
+ type: {
115
+ type: "string"
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ },
122
+ 401 => {
123
+ description: "401 error",
124
+ content: {
125
+ :'application/json' => {
126
+ schema: {
127
+ type: 'object',
128
+ properties: {
129
+ code: {
130
+ type: "string"
131
+ },
132
+ message: {
133
+ type: "string"
134
+ },
135
+ type: {
136
+ type: "string"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
86
142
  }
87
143
  }
88
144
  }
@@ -109,7 +165,8 @@ RSpec.describe :build_endpoint_schema do
109
165
  caster: caster,
110
166
  serializer: nil,
111
167
  response_status: 200,
112
- description: nil
168
+ description: nil,
169
+ errors: []
113
170
  ))
114
171
 
115
172
  expect(schema).to eq(ReeSwagger::PathDto.new(
@@ -167,7 +224,8 @@ RSpec.describe :build_endpoint_schema do
167
224
  caster: nil,
168
225
  serializer: nil,
169
226
  response_status: 200,
170
- description: nil
227
+ description: nil,
228
+ errors: []
171
229
  ))
172
230
  }.to raise_error(
173
231
  ReeSwagger::BuildEndpointSchema::MissingCasterError,
@@ -187,7 +245,8 @@ RSpec.describe :build_endpoint_schema do
187
245
  caster: caster,
188
246
  serializer: nil,
189
247
  response_status: 200,
190
- description: nil
248
+ description: nil,
249
+ errors: []
191
250
  ))
192
251
  }.to raise_error(
193
252
  ReeSwagger::BuildEndpointSchema::MissingCasterError,
@@ -12,7 +12,8 @@ RSpec.describe :build_schema do
12
12
  caster: nil,
13
13
  serializer: nil,
14
14
  response_status: 200,
15
- description: nil
15
+ description: nil,
16
+ errors: []
16
17
  )]
17
18
  )
18
19
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReeLib
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-01 00:00:00.000000000 Z
11
+ date: 2022-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ree
@@ -1120,6 +1120,7 @@ files:
1120
1120
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger.rb
1121
1121
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger/beans/type_definitions_repo.rb
1122
1122
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/endpoint_dto.rb
1123
+ - lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/error_dto.rb
1123
1124
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger/dto/path_dto.rb
1124
1125
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_endpoint_schema.rb
1125
1126
  - lib/ree_lib/packages/ree_swagger/package/ree_swagger/functions/build_parameters.rb