media_types-serialization 1.3.5 → 1.3.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![Build Status
|
3
|
+
[![Build Status](https://github.com/XPBytes/media_types-serialization/actions/workflows/ci.yml/badge.svg)](https://github.com/XPBytes/media_types-serialization/actions/workflows/ci.yml)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/media_types-serialization.svg)](https://badge.fury.io/rb/media_types-serialization)
|
5
5
|
[![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](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
|