media_types-serialization 1.3.5 → 1.3.6
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 +4 -0
- data/Gemfile.lock +2 -2
- data/README.md +24 -16
- data/lib/media_types/problem.rb +1 -1
- data/lib/media_types/serialization/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d53689a0c81861b7305fc606a2b73b7866e4b46915284a716951735926b5bb73
|
4
|
+
data.tar.gz: 29add50810aa2bf8b3792d38eebd50eca96570c716a33be6ef58a2f64813be81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56db0c8b8f39b108e80d028459b0fc7e788bc9cbfd3b7a1e26dfbab993883d7b19735f2d638e8f17edfbcfb9837f610f30ea46ec61bf84c4c141f45000ae0c36
|
7
|
+
data.tar.gz: 2985c51bc0f5b59df56d11fe665dc5be479fa5cf494dbd8edf5e57961464bb5e413f82af8e9e867557bb15dd715542aa5f6f10cd9cd9fb12028899fa00d11bf8
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
media_types-serialization (1.3.
|
4
|
+
media_types-serialization (1.3.6)
|
5
5
|
actionpack (>= 4.0.0)
|
6
6
|
activesupport (>= 4.0.0)
|
7
7
|
media_types (>= 2.1.1, < 3.0.0)
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
racc (~> 1.4)
|
76
76
|
nokogiri (1.12.3-x86_64-linux)
|
77
77
|
racc (~> 1.4)
|
78
|
-
oj (3.13.
|
78
|
+
oj (3.13.4)
|
79
79
|
racc (1.5.2)
|
80
80
|
rack (2.2.3)
|
81
81
|
rack-test (1.1.0)
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# MediaTypes::Serialization
|
2
2
|
|
3
|
-
[](https://github.com/XPBytes/media_types-serialization/actions/workflows/ci.yml)
|
4
4
|
[](https://badge.fury.io/rb/media_types-serialization)
|
5
5
|
[](http://opensource.org/licenses/MIT)
|
6
6
|
|
@@ -16,11 +16,15 @@ gem 'media_types-serialization'
|
|
16
16
|
|
17
17
|
And then execute:
|
18
18
|
|
19
|
-
|
19
|
+
```shell
|
20
|
+
bundle
|
21
|
+
```
|
20
22
|
|
21
23
|
Or install it yourself as:
|
22
24
|
|
23
|
-
|
25
|
+
```shell
|
26
|
+
gem install media_types-serialization
|
27
|
+
```
|
24
28
|
|
25
29
|
## Usage
|
26
30
|
|
@@ -221,7 +225,7 @@ BookSerializer.serialize(book, BookValidator.version(3), context: controller)
|
|
221
225
|
|
222
226
|
There are convenience methods for serializing arrays of objects based on a template.
|
223
227
|
|
224
|
-
#### Indexes
|
228
|
+
#### Indexes (index based collections)
|
225
229
|
|
226
230
|
An index is a collection of urls that point to members of the array.
|
227
231
|
The index method automatically generates it based on the `self` links defined in the default view (`view: nil`) of the given version.
|
@@ -266,7 +270,8 @@ BookSerializer.serialize([book], BookValidator.view(:index).version(3), context:
|
|
266
270
|
|
267
271
|
##### How to validate?
|
268
272
|
|
269
|
-
The `index` dsl does _not_ exist in the validation gem.
|
273
|
+
The `index` dsl does _not_ exist in the validation gem.
|
274
|
+
This is how you validate indices:
|
270
275
|
|
271
276
|
```ruby
|
272
277
|
class BookValidator
|
@@ -283,7 +288,7 @@ class BookValidator
|
|
283
288
|
version 3 do
|
284
289
|
attribute :books do
|
285
290
|
link :self
|
286
|
-
|
291
|
+
|
287
292
|
collection :_index, allow_empty: true do
|
288
293
|
attribute :href, String
|
289
294
|
end
|
@@ -334,7 +339,7 @@ class BookValidator
|
|
334
339
|
version 3 do
|
335
340
|
attribute :books do
|
336
341
|
link :self
|
337
|
-
|
342
|
+
|
338
343
|
collection :_index, allow_empty: true do
|
339
344
|
attribute :href, String
|
340
345
|
attribute :isbn, AllowNil(String)
|
@@ -346,7 +351,7 @@ class BookValidator
|
|
346
351
|
end
|
347
352
|
```
|
348
353
|
|
349
|
-
#### Collections
|
354
|
+
#### Collections (embedding collections)
|
350
355
|
|
351
356
|
A collection inlines the member objects.
|
352
357
|
The collection method automatically generates it based on the default view of the same version.
|
@@ -403,7 +408,8 @@ BookSerializer.serialize([book], BookValidator.view(:collection).version(3), con
|
|
403
408
|
# }
|
404
409
|
```
|
405
410
|
|
406
|
-
The `collection` dsl is _not_ the same as the one in the validation gem.
|
411
|
+
The `collection` dsl is _not_ the same as the one in the validation gem.
|
412
|
+
This is how you could validate collections:
|
407
413
|
|
408
414
|
```ruby
|
409
415
|
class BookValidator
|
@@ -420,7 +426,7 @@ class BookValidator
|
|
420
426
|
version 3 do
|
421
427
|
attribute :books do
|
422
428
|
link :self
|
423
|
-
|
429
|
+
|
424
430
|
collection :_embedded, allow_empty: true do
|
425
431
|
link :self
|
426
432
|
|
@@ -567,7 +573,7 @@ end
|
|
567
573
|
### Remapping media type identifiers
|
568
574
|
|
569
575
|
Sometimes you already have old clients using an `application/json` media type identifier when they do requests.
|
570
|
-
While this is not a good
|
576
|
+
While this is not a good practice as this makes it hard to add new fields or remove old ones, this library has support for migrating away:
|
571
577
|
|
572
578
|
```ruby
|
573
579
|
class BookSerializer < MediaTypes::Serialization::Base
|
@@ -584,7 +590,7 @@ class BookSerializer < MediaTypes::Serialization::Base
|
|
584
590
|
attribute :description, obj.description if version >= 2
|
585
591
|
end
|
586
592
|
end
|
587
|
-
|
593
|
+
|
588
594
|
# applicaton/vnd.acme.book+json
|
589
595
|
output version: nil do |obj, version, context|
|
590
596
|
attribute :book do
|
@@ -605,7 +611,7 @@ class BookSerializer < MediaTypes::Serialization::Base
|
|
605
611
|
# Make sure not to save here but only save in the controller
|
606
612
|
book
|
607
613
|
end
|
608
|
-
|
614
|
+
|
609
615
|
# applicaton/vnd.acme.book.create+json
|
610
616
|
input view: :create, version: nil do |json, version, context|
|
611
617
|
book = Book.new
|
@@ -618,7 +624,8 @@ class BookSerializer < MediaTypes::Serialization::Base
|
|
618
624
|
input_alias 'application/json', view: :create # maps application/json to to applicaton/vnd.acme.book.create+json
|
619
625
|
```
|
620
626
|
|
621
|
-
Validation will be done using the remapped validator. Aliasses map to version `nil`.
|
627
|
+
Validation will be done using the remapped validator. Aliasses map to version `nil`.
|
628
|
+
It is not possible to configure this version.
|
622
629
|
|
623
630
|
### HTML
|
624
631
|
|
@@ -699,12 +706,13 @@ class BookController < ActionController::API
|
|
699
706
|
end
|
700
707
|
```
|
701
708
|
|
702
|
-
The exception you specified will be rescued by the controller and will be displayed to the user along with a link to the shared wiki page for that error type.
|
709
|
+
The exception you specified will be rescued by the controller and will be displayed to the user along with a link to the shared wiki page for that error type.
|
710
|
+
Feel free to add instructions there on how clients should solve this problem.
|
703
711
|
You can find more information at: [https://docs.delftsolutions.nl/wiki/Error](https://docs.delftsolutions.nl/wiki/Error)
|
704
712
|
If you want to override this url you can use the `problem_output.url(href)` function.
|
705
713
|
|
706
714
|
By default the `message` property of the error is used to fill the `details` field.
|
707
|
-
You can override this by using the `problem_output.
|
715
|
+
You can override this by using the `problem_output.override_detail(description, lang:)` function.
|
708
716
|
|
709
717
|
Custom attributes can be added using the `problem_output.attribute(name, value)` function.
|
710
718
|
|
data/lib/media_types/problem.rb
CHANGED
@@ -31,7 +31,7 @@ module MediaTypes
|
|
31
31
|
|
32
32
|
def override_detail(detail, lang:)
|
33
33
|
raise 'Unable to override detail message without having a title in the same language.' unless translations[lang]
|
34
|
-
translations[lang][:detail] =
|
34
|
+
translations[lang][:detail] = detail
|
35
35
|
end
|
36
36
|
|
37
37
|
def attribute(name, value)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: media_types-serialization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|