json_api_resource 0.4.0 → 0.4.8
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e3b2206af1a260afc2ef92679b96598f28ecea5
|
4
|
+
data.tar.gz: 34c28aac26ed5497995f59d3f4fdb24a41d1c079
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01fadb7785f52b4082dec41558ed850c88be616b968feaf2a024d047d77ebb158147f027d85804b6240ad38998b699dc35aca20d577bfb8349d21cef798eeb38
|
7
|
+
data.tar.gz: c72e307cd241889cd37ee040369f05aa7dec9b9a2bbc771e96220337c2bc9e6d38a8590fc3eed829ae68afd8b0ff3a2755e48c944fbee57ff74eae5018660fe5
|
@@ -6,6 +6,8 @@ module JsonApiResource
|
|
6
6
|
attr_accessor :linked_data
|
7
7
|
attr_accessor :errors
|
8
8
|
|
9
|
+
MAX_PAGES_FOR_ALL = 25
|
10
|
+
|
9
11
|
module ClassMethods
|
10
12
|
|
11
13
|
include JsonApiResource::Conversions
|
@@ -21,13 +23,11 @@ module JsonApiResource
|
|
21
23
|
end
|
22
24
|
|
23
25
|
def create(attr = {})
|
24
|
-
|
25
|
-
new(:client => self.client_klass.create(attr))
|
26
|
-
end
|
26
|
+
new(:client => self.client_klass.create(attr)).save
|
27
27
|
end
|
28
28
|
|
29
29
|
def where(opts = {})
|
30
|
-
opts[:per_page] = opts.fetch(:per_page, self.per_page)
|
30
|
+
opts[:per_page] = opts.fetch(:per_page, self.per_page) if self.per_page
|
31
31
|
(self.client_klass.where(opts).all).map! do |result|
|
32
32
|
self.new(:client => result)
|
33
33
|
end
|
@@ -35,6 +35,19 @@ module JsonApiResource
|
|
35
35
|
pretty_error e
|
36
36
|
end
|
37
37
|
|
38
|
+
def all_without_pagination(opts = {})
|
39
|
+
page_total = 1
|
40
|
+
current_page = 1
|
41
|
+
all_results = []
|
42
|
+
until (current_page > page_total) || (current_page > MAX_PAGES_FOR_ALL)
|
43
|
+
page_of_results = where({:page => current_page}.merge(opts))
|
44
|
+
all_results << page_of_results
|
45
|
+
page_total = page_of_results.meta[:total_pages] || 1
|
46
|
+
current_page = current_page + 1
|
47
|
+
end
|
48
|
+
JsonApiClient::ResultSet.new(all_results.flatten.compact)
|
49
|
+
end
|
50
|
+
|
38
51
|
private
|
39
52
|
|
40
53
|
# When we return a collection, these extra attributes on top of the result array from JsonApiClient are present.
|
@@ -12,11 +12,10 @@ module JsonApiResource
|
|
12
12
|
attr_accessor :client, :cache_expires_in
|
13
13
|
class_attribute :client_klass, :per_page
|
14
14
|
|
15
|
-
define_model_callbacks :save, :
|
15
|
+
define_model_callbacks :save, :update_attributes
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
around_update_attributes :catch_errors
|
17
|
+
around_save :update_meta
|
18
|
+
around_update_attributes :update_meta
|
20
19
|
|
21
20
|
def initialize(opts={})
|
22
21
|
self.client = self.client_klass.new(self.schema)
|
@@ -36,12 +35,16 @@ module JsonApiResource
|
|
36
35
|
run_callbacks :save do
|
37
36
|
self.client.save
|
38
37
|
end
|
38
|
+
rescue JsonApiClient::Errors::ServerError => e
|
39
|
+
pretty_error e
|
39
40
|
end
|
40
41
|
|
41
42
|
def update_attributes(attrs = {})
|
42
43
|
run_callbacks :update_attributes do
|
43
44
|
self.client.update_attributes(attrs)
|
44
45
|
end
|
46
|
+
rescue JsonApiClient::Errors::ServerError => e
|
47
|
+
pretty_error e
|
45
48
|
end
|
46
49
|
|
47
50
|
def attributes=(attr = {})
|
@@ -72,9 +75,12 @@ module JsonApiResource
|
|
72
75
|
else
|
73
76
|
super
|
74
77
|
end
|
78
|
+
|
79
|
+
rescue JsonApiClient::Errors::ServerError => e
|
80
|
+
pretty_error e
|
75
81
|
end
|
76
82
|
|
77
|
-
def
|
83
|
+
def update_meta
|
78
84
|
yield
|
79
85
|
|
80
86
|
self.errors ||= ActiveModel::Errors.new(self)
|
@@ -82,6 +88,8 @@ module JsonApiResource
|
|
82
88
|
self.errors.add(k.to_sym, Array(messages).join(', '))
|
83
89
|
end
|
84
90
|
self.errors
|
91
|
+
|
92
|
+
self.meta = self.client.last_request_meta
|
85
93
|
end
|
86
94
|
|
87
95
|
def self.method_missing(method, *args, &block)
|
@@ -104,5 +112,13 @@ module JsonApiResource
|
|
104
112
|
rescue JsonApiClient::Errors::ServerError => e
|
105
113
|
pretty_error e
|
106
114
|
end
|
115
|
+
|
116
|
+
def respond_to_missing?(method_name, include_private = false)
|
117
|
+
client.respond_to?(method_name.to_sym) || super
|
118
|
+
end
|
119
|
+
|
120
|
+
def self.respond_to_missing?(method_name, include_private = false)
|
121
|
+
client_klass.respond_to?(method_name.to_sym) || super
|
122
|
+
end
|
107
123
|
end
|
108
124
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_api_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Sislow
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_api_client
|
@@ -93,4 +93,3 @@ signing_key:
|
|
93
93
|
specification_version: 4
|
94
94
|
summary: Build wrapper/adapter objects around JsonApiClient instances
|
95
95
|
test_files: []
|
96
|
-
has_rdoc:
|