json_api_client 1.6.0 → 1.6.1
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/README.md +4 -4
- data/lib/json_api_client/resource.rb +16 -5
- data/lib/json_api_client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d4a8de0c8279d6ea5d6b7a3bf1d3da4af650d66
|
4
|
+
data.tar.gz: 84624c1a31f574187b0adb03f1db3800df2af6d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ea79d5d91d055556a3f26ca37d3d3447744b03858c668e676d11b787e5658bbf7b31965416c016ad46c4a42bff116df977876330852a8db48bb9f7eef477076
|
7
|
+
data.tar.gz: c7a70e2f4fb4a969e47a2dec2be67b77b682523ca4d5a1ccde554c855c632163582395af8951047044bba128c17d0270f0383e93f30341ca649477dd19a257c6
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# JsonApiClient [](https://travis-ci.org/JsonApiClient/json_api_client) [](https://codeclimate.com/github/JsonApiClient/json_api_client) [](https://codeclimate.com/github/JsonApiClient/json_api_client)
|
2
2
|
|
3
3
|
This gem is meant to help you build an API client for interacting with REST APIs as laid out by [http://jsonapi.org](http://jsonapi.org). It attempts to give you a query building framework that is easy to understand (it is similar to ActiveRecord scopes).
|
4
4
|
|
@@ -399,7 +399,7 @@ class NullConnection
|
|
399
399
|
def initialize(*args)
|
400
400
|
end
|
401
401
|
|
402
|
-
def run(request_method, path, params
|
402
|
+
def run(request_method, path, params: nil, headers: {}, body: nil)
|
403
403
|
end
|
404
404
|
|
405
405
|
def use(*args); end
|
@@ -493,8 +493,8 @@ You can customize how your resources find pagination information from the respon
|
|
493
493
|
If the [existing paginator](https://github.com/chingor13/json_api_client/blob/master/lib/json_api_client/paginating/paginator.rb) fits your requirements but you don't use the default `page` and `per_page` params for pagination, you can customise the param keys as follows:
|
494
494
|
|
495
495
|
```ruby
|
496
|
-
JsonApiClient::Paginating::Paginator.page_param = "
|
497
|
-
JsonApiClient::Paginating::Paginator.per_page_param = "
|
496
|
+
JsonApiClient::Paginating::Paginator.page_param = "number"
|
497
|
+
JsonApiClient::Paginating::Paginator.per_page_param = "size"
|
498
498
|
```
|
499
499
|
|
500
500
|
Please note that this is a global configuration, so library authors should create a custom paginator that inherits `JsonApiClient::Paginating::Paginator` and configure the custom paginator to avoid modifying global config.
|
@@ -35,6 +35,8 @@ module JsonApiClient
|
|
35
35
|
:request_params_class,
|
36
36
|
:keep_request_params,
|
37
37
|
instance_accessor: false
|
38
|
+
class_attribute :add_defaults_to_changes,
|
39
|
+
instance_writer: false
|
38
40
|
self.primary_key = :id
|
39
41
|
self.parser = Parsers::Parser
|
40
42
|
self.paginator = Paginating::Paginator
|
@@ -48,6 +50,7 @@ module JsonApiClient
|
|
48
50
|
self.associations = []
|
49
51
|
self.request_params_class = RequestParams
|
50
52
|
self.keep_request_params = false
|
53
|
+
self.add_defaults_to_changes = false
|
51
54
|
|
52
55
|
#:underscored_key, :camelized_key, :dasherized_key, or custom
|
53
56
|
self.json_key_format = :underscored_key
|
@@ -309,14 +312,13 @@ module JsonApiClient
|
|
309
312
|
#
|
310
313
|
# @param params [Hash] Attributes, links, and relationships
|
311
314
|
def initialize(params = {})
|
315
|
+
params = params.symbolize_keys
|
312
316
|
@persisted = nil
|
313
|
-
self.links = self.class.linker.new(params.delete(
|
314
|
-
self.relationships = self.class.relationship_linker.new(self.class, params.delete(
|
317
|
+
self.links = self.class.linker.new(params.delete(:links) || {})
|
318
|
+
self.relationships = self.class.relationship_linker.new(self.class, params.delete(:relationships) || {})
|
315
319
|
self.attributes = self.class.default_attributes.merge(params)
|
316
320
|
|
317
|
-
|
318
|
-
attributes[property.name] = property.default unless attributes.has_key?(property.name) || property.default.nil?
|
319
|
-
end
|
321
|
+
setup_default_properties
|
320
322
|
|
321
323
|
self.class.associations.each do |association|
|
322
324
|
if params.has_key?(association.attr_name.to_s)
|
@@ -480,6 +482,15 @@ module JsonApiClient
|
|
480
482
|
|
481
483
|
protected
|
482
484
|
|
485
|
+
def setup_default_properties
|
486
|
+
self.class.schema.each_property do |property|
|
487
|
+
unless attributes.has_key?(property.name) || property.default.nil?
|
488
|
+
attribute_will_change!(property.name) if add_defaults_to_changes
|
489
|
+
attributes[property.name] = property.default
|
490
|
+
end
|
491
|
+
end
|
492
|
+
end
|
493
|
+
|
483
494
|
def method_missing(method, *args)
|
484
495
|
association = association_for(method)
|
485
496
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Ching
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08
|
11
|
+
date: 2018-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|