api_helper 0.0.6 → 0.0.9
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/api_helper.gemspec +2 -0
- data/examples/includable_childs.rabl +29 -0
- data/lib/api_helper/includable.rb +24 -1
- data/lib/api_helper/paginatable.rb +1 -1
- data/lib/api_helper/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c365d5a68f094eb8d390ae7b126f47ea8bc48c70
|
4
|
+
data.tar.gz: a450ec9db2270080b79d61a7d1d50af88be9ff10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04ea4c190caf03cb2eba99fb542d59ce56052d1b77cb0f5335428f617a097181530e4a0ec5207d777b114b12b8ccea7ebf5ab173cd055b68c88a4b1c54f93a70
|
7
|
+
data.tar.gz: 7e0bb35d2464dc17ca87d4e81857e8310d33146c917a94f8df0b05808ef2423e7f80f00f3b3793e0558ea22197821e6646aa32b5ea68246e8a50e97a505d2f08
|
data/api_helper.gemspec
CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "appraisal"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "simplecov"
|
26
|
+
spec.add_development_dependency "coveralls"
|
25
27
|
spec.add_development_dependency "byebug"
|
26
28
|
spec.add_development_dependency "activerecord"
|
27
29
|
spec.add_development_dependency "sqlite3"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
this = locals[:self_resource]
|
2
|
+
|
3
|
+
unless inclusion_field(this).blank?
|
4
|
+
inclusion_field(this).each_pair do |field_name, includable_field|
|
5
|
+
# use this if fieldset is used
|
6
|
+
# next if fieldset(this).present? && !fieldset(this).include?(field_name)
|
7
|
+
|
8
|
+
# include that child
|
9
|
+
if inclusion[this].include?(field_name)
|
10
|
+
|
11
|
+
child field_name.to_sym, root: field_name.to_sym, object_root: false do
|
12
|
+
template = (includable_field[:resource_name] || field_name).to_s.underscore.singularize
|
13
|
+
extends template
|
14
|
+
end
|
15
|
+
|
16
|
+
# not to include that child
|
17
|
+
else
|
18
|
+
|
19
|
+
node field_name do |obj|
|
20
|
+
if obj.try(includable_field[:id_field]).present?
|
21
|
+
obj.try(includable_field[:id_field])
|
22
|
+
else
|
23
|
+
foreign_key = obj.class.try("#{field_name}_foreign_key")
|
24
|
+
obj.try(foreign_key) if foreign_key.present?
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -269,9 +269,14 @@ module APIHelper::Includable
|
|
269
269
|
def set_inclusion(resource, default_includes: [], permitted_includes: [])
|
270
270
|
@inclusion ||= ActiveSupport::HashWithIndifferentAccess.new
|
271
271
|
@inclusion_field ||= ActiveSupport::HashWithIndifferentAccess.new
|
272
|
+
@inclusion_specified ||= ActiveSupport::HashWithIndifferentAccess.new
|
272
273
|
@inclusion[resource] = default_includes.map(&:to_s) if @inclusion[resource].blank? &&
|
273
274
|
!@inclusion_specified[resource]
|
274
275
|
@inclusion[resource] &= permitted_includes.map(&:to_s) if permitted_includes.present?
|
276
|
+
|
277
|
+
if @fieldset.is_a?(Hash) && @fieldset[resource].present?
|
278
|
+
@inclusion[resource] &= @fieldset[resource]
|
279
|
+
end
|
275
280
|
end
|
276
281
|
|
277
282
|
# View Helper to set the inclusion details
|
@@ -309,6 +314,24 @@ module APIHelper::Includable
|
|
309
314
|
}
|
310
315
|
end
|
311
316
|
|
317
|
+
# Getter for the data of includable fields
|
318
|
+
#
|
319
|
+
# Params:
|
320
|
+
#
|
321
|
+
# +resource+::
|
322
|
+
# +Symbol+ the resource name of inclusion data to retrieve
|
323
|
+
#
|
324
|
+
def inclusion_field(resource = nil)
|
325
|
+
# act as a traditional getter if no parameters specified
|
326
|
+
if resource.blank?
|
327
|
+
@inclusion_field ||= ActiveSupport::HashWithIndifferentAccess.new
|
328
|
+
|
329
|
+
# returns the inclusion array if an specific resource is passed in
|
330
|
+
else
|
331
|
+
inclusion_field[resource] || {}
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
312
335
|
# Returns the description of the 'include' URL parameter
|
313
336
|
def self.include_param_desc(example: nil, default: nil)
|
314
337
|
if default.present?
|
@@ -326,7 +349,7 @@ module APIHelper::Includable
|
|
326
349
|
|
327
350
|
included do
|
328
351
|
if defined? helper_method
|
329
|
-
helper_method :inclusion, :set_inclusion, :set_inclusion_field
|
352
|
+
helper_method :inclusion, :set_inclusion, :set_inclusion_field, :inclusion_field
|
330
353
|
end
|
331
354
|
end
|
332
355
|
end
|
@@ -62,7 +62,7 @@ require 'active_support'
|
|
62
62
|
# Then use the helper methods like this:
|
63
63
|
#
|
64
64
|
# # this example uses kaminari
|
65
|
-
# User.page(
|
65
|
+
# User.page(pagination_per_page).per(pagination_page)
|
66
66
|
#
|
67
67
|
# HTTP Link header will be automatically set by the way.
|
68
68
|
module APIHelper::Paginatable
|
data/lib/api_helper/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: coveralls
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: byebug
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|