swagger-serializer 0.6.2 → 0.8.3
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/.github/workflows/ruby.yml +0 -0
- data/.gitignore +0 -0
- data/.prettierrc +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +0 -0
- data/.rubocop_airbnb.yml +0 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +43 -6
- data/Rakefile +0 -0
- data/bin/console +0 -0
- data/bin/fmt +0 -0
- data/bin/setup +0 -0
- data/lib/swagger/schema.rb +2 -0
- data/lib/swagger/schema/component.rb +3 -2
- data/lib/swagger/schema/content.rb +0 -0
- data/lib/swagger/schema/handle_servers.rb +0 -0
- data/lib/swagger/schema/header.rb +0 -0
- data/lib/swagger/schema/headers.rb +0 -0
- data/lib/swagger/schema/media_type.rb +6 -4
- data/lib/swagger/schema/media_type/deserializer.rb +0 -0
- data/lib/swagger/schema/media_type/validator.rb +0 -0
- data/lib/swagger/schema/operation.rb +0 -0
- data/lib/swagger/schema/parameter.rb +0 -0
- data/lib/swagger/schema/parameter_base.rb +11 -11
- data/lib/swagger/schema/parameters.rb +6 -4
- data/lib/swagger/schema/parameters/deserializer.rb +0 -0
- data/lib/swagger/schema/parameters/validator.rb +0 -0
- data/lib/swagger/schema/path_item.rb +0 -0
- data/lib/swagger/schema/request_body.rb +0 -0
- data/lib/swagger/schema/response.rb +0 -0
- data/lib/swagger/schema/responses.rb +0 -0
- data/lib/swagger/schema/schema_accessor.rb +0 -0
- data/lib/swagger/schema/server.rb +0 -0
- data/lib/swagger/schema/util.rb +0 -0
- data/lib/swagger/serializer.rb +4 -3
- data/lib/swagger/serializer/model.rb +0 -0
- data/lib/swagger/serializer/rails_controller.rb +6 -8
- data/lib/swagger/serializer/store.rb +0 -0
- data/lib/swagger/serializer/version.rb +1 -1
- data/swagger-serializer.gemspec +1 -1
- metadata +18 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64f8aa131df07ce9de11beb3384f3c8bd94431136b0fd0032b05bc1a102a06cd
|
4
|
+
data.tar.gz: 56b1e7f8f3364a3df476bd12b4e08760c8dd5e8f39ebb079b15bc798a3a64d8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8c0b337e81158f0384139aca9be740108567bb6c8d3e94ac7d4d6d404a0353bec53505938771a1bd4fab010e7170dcf8659e35d20fe14113b59267477923cd2
|
7
|
+
data.tar.gz: 97c6fc013f5e9339d23f38a1850fe20c4b5b21c0de715d7a5e0f1e019e33a6e95b52372b96503e00f411e194b376491656a0e0e5d5cf41237270c0dbc928b65f
|
data/.github/workflows/ruby.yml
CHANGED
File without changes
|
data/.gitignore
CHANGED
File without changes
|
data/.prettierrc
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.rubocop.yml
CHANGED
File without changes
|
data/.rubocop_airbnb.yml
CHANGED
File without changes
|
data/CHANGELOG.md
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -54,12 +54,12 @@ class ApplicationController < ActionController::Base
|
|
54
54
|
include Swagger::Serializer::RailsController
|
55
55
|
extend Swagger::DSL::RailsController
|
56
56
|
|
57
|
-
def render_ok(data)
|
58
|
-
render_as_schema 200, :json, data
|
57
|
+
def render_ok(data, context = nil)
|
58
|
+
render_as_schema 200, :json, data, context
|
59
59
|
end
|
60
60
|
|
61
|
-
def render_bad(data)
|
62
|
-
render_as_schema 400, :json, data
|
61
|
+
def render_bad(data, context = nil)
|
62
|
+
render_as_schema 400, :json, data, context
|
63
63
|
end
|
64
64
|
end
|
65
65
|
```
|
@@ -265,8 +265,8 @@ Use it in controllers.
|
|
265
265
|
class ApplicationController < ActionController::Base
|
266
266
|
include Swagger::Serializer::RailsController
|
267
267
|
|
268
|
-
def render_ok(data)
|
269
|
-
render_as_schema 200, :json, data
|
268
|
+
def render_ok(data, context = nil)
|
269
|
+
render_as_schema 200, :json, data, context
|
270
270
|
end
|
271
271
|
end
|
272
272
|
```
|
@@ -317,6 +317,43 @@ end
|
|
317
317
|
|
318
318
|
Now you can get serialized result by `p User.first.serialize`.
|
319
319
|
|
320
|
+
### @context
|
321
|
+
|
322
|
+
Collection serialization sometimes needs context data for avoiding N+1 access or some other reason.
|
323
|
+
|
324
|
+
`render_as_schema`'s 4th parameter is the context that will be passed to serializers `@context`.
|
325
|
+
|
326
|
+
```ruby
|
327
|
+
# app/serializers/item_serializer.rb
|
328
|
+
class ItemSerializer < BaseSerializer
|
329
|
+
swagger do
|
330
|
+
id :integer
|
331
|
+
rate :integer
|
332
|
+
end
|
333
|
+
|
334
|
+
def rate
|
335
|
+
@context[:rates][id]
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
# app/controllers/items_controller.rb
|
340
|
+
class ItemsController < ApplicationController
|
341
|
+
swagger :index do
|
342
|
+
render 200 do
|
343
|
+
array! do
|
344
|
+
cref! ItemSerializer
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
def index
|
350
|
+
items = Item.all
|
351
|
+
rates = ItemRate.calc_item_rates(items)
|
352
|
+
render_ok items, { rates: rates }
|
353
|
+
end
|
354
|
+
end
|
355
|
+
```
|
356
|
+
|
320
357
|
## Development
|
321
358
|
|
322
359
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
File without changes
|
data/bin/console
CHANGED
File without changes
|
data/bin/fmt
CHANGED
File without changes
|
data/bin/setup
CHANGED
File without changes
|
data/lib/swagger/schema.rb
CHANGED
@@ -9,8 +9,9 @@ module Swagger
|
|
9
9
|
@schema = schema
|
10
10
|
end
|
11
11
|
|
12
|
-
def serializer(options = {})
|
13
|
-
|
12
|
+
def serializer(options = {}, store = true)
|
13
|
+
use_options = store ? Swagger::Serializer::Store.current.serialize_options.merge(options) : options
|
14
|
+
JSON::Schema::Serializer.new(@schema, use_options)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -14,12 +14,14 @@ module Swagger
|
|
14
14
|
|
15
15
|
define_schema_accessor :schema, :example, :examples, :encoding
|
16
16
|
|
17
|
-
def serializer(options = {})
|
18
|
-
|
17
|
+
def serializer(options = {}, store = true)
|
18
|
+
use_options = store ? Swagger::Serializer::Store.current.serialize_options.merge(options) : options
|
19
|
+
JSON::Schema::Serializer.new(schema, use_options)
|
19
20
|
end
|
20
21
|
|
21
|
-
def deserializer(options = {})
|
22
|
-
|
22
|
+
def deserializer(options = {}, store = true)
|
23
|
+
use_options = store ? Swagger::Serializer::Store.current.deserialize_options.merge(options) : options
|
24
|
+
Deserializer.new(schema, use_options)
|
23
25
|
end
|
24
26
|
|
25
27
|
def validator
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -11,17 +11,17 @@ module Swagger
|
|
11
11
|
end
|
12
12
|
|
13
13
|
define_schema_accessor %i[
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
14
|
+
description
|
15
|
+
required
|
16
|
+
deprecated
|
17
|
+
allowEmptyValue
|
18
|
+
style
|
19
|
+
explode
|
20
|
+
allowReserved
|
21
|
+
schema
|
22
|
+
example
|
23
|
+
examples
|
24
|
+
].freeze
|
25
25
|
|
26
26
|
def to_json_schema
|
27
27
|
schema
|
@@ -57,12 +57,14 @@ module Swagger
|
|
57
57
|
schema
|
58
58
|
end
|
59
59
|
|
60
|
-
def serializer(options = {})
|
61
|
-
|
60
|
+
def serializer(options = {}, store = true)
|
61
|
+
use_options = store ? Swagger::Serializer::Store.current.serialize_options.merge(options) : options
|
62
|
+
JSON::Schema::Serializer.new(to_json_schema, use_options)
|
62
63
|
end
|
63
64
|
|
64
|
-
def deserializer(options = {})
|
65
|
-
|
65
|
+
def deserializer(options = {}, store = true)
|
66
|
+
use_options = store ? Swagger::Serializer::Store.current.deserialize_options.merge(options) : options
|
67
|
+
Deserializer.new(self, use_options)
|
66
68
|
end
|
67
69
|
|
68
70
|
def validator
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/swagger/schema/util.rb
CHANGED
File without changes
|
data/lib/swagger/serializer.rb
CHANGED
@@ -7,8 +7,9 @@ require "yaml"
|
|
7
7
|
|
8
8
|
module Swagger
|
9
9
|
module Serializer
|
10
|
-
def initialize(model)
|
10
|
+
def initialize(model, context = nil)
|
11
11
|
@model = model
|
12
|
+
@context = context
|
12
13
|
end
|
13
14
|
|
14
15
|
def respond_to_missing?(name, include_private)
|
@@ -21,8 +22,8 @@ module Swagger
|
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
|
-
def method_missing(name, *args)
|
25
|
-
@model.public_send(name, *args)
|
25
|
+
def method_missing(name, *args, &block)
|
26
|
+
@model.public_send(name, *args, &block)
|
26
27
|
end
|
27
28
|
|
28
29
|
def nil?
|
File without changes
|
@@ -3,13 +3,13 @@ module Swagger::Serializer::RailsController
|
|
3
3
|
|
4
4
|
# render
|
5
5
|
|
6
|
-
def render_as_schema(code, format, data)
|
7
|
-
render format => render_serializer(code, format).serialize(data)
|
6
|
+
def render_as_schema(code, format, data, context = nil)
|
7
|
+
render format => render_serializer(code, format, context).serialize(data)
|
8
8
|
end
|
9
9
|
|
10
|
-
def render_serializer(code, format)
|
10
|
+
def render_serializer(code, format, context = nil)
|
11
11
|
response_obj = swagger_operation.responses[code]
|
12
|
-
response_obj.content.send(format).serializer(
|
12
|
+
response_obj.content.send(format).serializer(inject_context: context)
|
13
13
|
end
|
14
14
|
|
15
15
|
def swagger_operation
|
@@ -37,7 +37,7 @@ module Swagger::Serializer::RailsController
|
|
37
37
|
|
38
38
|
def parameter_deserializer
|
39
39
|
@parameter_deserializer ||=
|
40
|
-
swagger_operation.parameters.deserializer
|
40
|
+
swagger_operation.parameters.deserializer
|
41
41
|
end
|
42
42
|
|
43
43
|
def body_params
|
@@ -47,9 +47,7 @@ module Swagger::Serializer::RailsController
|
|
47
47
|
def body_deserializer
|
48
48
|
@body_deserializer ||=
|
49
49
|
if request.content_type
|
50
|
-
swagger_operation.request_body.content[request.content_type]&.deserializer
|
51
|
-
Swagger::Serializer::Store.current.deserialize_options,
|
52
|
-
)
|
50
|
+
swagger_operation.request_body.content[request.content_type]&.deserializer
|
53
51
|
end
|
54
52
|
end
|
55
53
|
|
File without changes
|
data/swagger-serializer.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = %w[lib]
|
29
29
|
|
30
|
-
spec.add_dependency "json-schema-serializer", "
|
30
|
+
spec.add_dependency "json-schema-serializer", [">= 1.6", "< 3"]
|
31
31
|
spec.add_dependency "snake_camel", "~> 1.1"
|
32
32
|
spec.add_development_dependency "bundler", "~> 2"
|
33
33
|
spec.add_development_dependency "rake", "~> 13.0"
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swagger-serializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Narazaka
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json-schema-serializer
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.6'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
29
|
+
version: '1.6'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: snake_camel
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,7 +184,7 @@ dependencies:
|
|
178
184
|
- - "~>"
|
179
185
|
- !ruby/object:Gem::Version
|
180
186
|
version: '0.9'
|
181
|
-
description:
|
187
|
+
description:
|
182
188
|
email:
|
183
189
|
- info@narazaka.net
|
184
190
|
executables: []
|
@@ -234,8 +240,8 @@ metadata:
|
|
234
240
|
homepage_uri: https://github.com/Narazaka/swagger-serializer
|
235
241
|
source_code_uri: https://github.com/Narazaka/swagger-serializer.git
|
236
242
|
changelog_uri: https://github.com/Narazaka/swagger-serializer/blob/master/CHANGELOG.md
|
237
|
-
documentation_uri: https://www.rubydoc.info/gems/swagger-serializer/0.
|
238
|
-
post_install_message:
|
243
|
+
documentation_uri: https://www.rubydoc.info/gems/swagger-serializer/0.8.3
|
244
|
+
post_install_message:
|
239
245
|
rdoc_options: []
|
240
246
|
require_paths:
|
241
247
|
- lib
|
@@ -250,9 +256,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
250
256
|
- !ruby/object:Gem::Version
|
251
257
|
version: '0'
|
252
258
|
requirements: []
|
253
|
-
|
254
|
-
|
255
|
-
signing_key:
|
259
|
+
rubygems_version: 3.2.3
|
260
|
+
signing_key:
|
256
261
|
specification_version: 4
|
257
262
|
summary: Swagger (OpenAPI 3) schema based Serializer
|
258
263
|
test_files: []
|