hal_api-rails 1.0.0 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 35f7ab8e051a6d7132ecf26800670c4e56489c7371539ac92fdcc6e88fb5d280
4
- data.tar.gz: 5fd5ecbdd0ba0287c0c01e1e5ed24cd23b5cb10aa157be28224b7ec6c6c25698
2
+ SHA1:
3
+ metadata.gz: 4d1af91c55bf42a53d4ecfe0c6ed673bd2856a57
4
+ data.tar.gz: 0f0dac6e3b4e33821d9c20b0efe5fa1ead07b30e
5
5
  SHA512:
6
- metadata.gz: 653ca1b7461fd1c3b598904e85e430c4632485f6c390192deaab63dc8e0a13c3970ed4d94486d1cf749d09966edf4055602b00a71e3f54c7b83a08bdc21a57b2
7
- data.tar.gz: 11ce89bb941bf1e9f83d377fe1bc7b0da9a6e94cd7d7e93fb8b516348ceb7550e37966c2cbb6b4357f90bed927130a5a44658de12572ac0a37e1a2f270890f05
6
+ metadata.gz: 9bdfb40d56cfac300c5b2263ab25eec3b6162420cb417897c558b3e4bdfbd556acefe32da9387939ced5cb35046ad9295a6c7889881f385d996621914c0f5f3a
7
+ data.tar.gz: 5c0745b9303bae2e66046fbda5ded266b0b642350968e5bbaf409a55d6c49186770217c22a2f80813e85f4f3e4b9e58b69c6a548689e44f55dba6c8def4b3e02
@@ -0,0 +1 @@
1
+ 2.4.9
@@ -71,7 +71,9 @@ module HalApi::Controller::Actions
71
71
 
72
72
  def valid_params_for_action(action)
73
73
  (params.permit(*self.class.valid_params_list(action)) || {}).tap do |p|
74
- p[:zoom] = zoom_param if zoom_param
74
+ if zoom_param
75
+ p[:user_options] = (p[:user_options] || {}).merge(zoom: zoom_param)
76
+ end
75
77
  end.
76
78
  to_h
77
79
  end
@@ -25,11 +25,12 @@ module HalApi::Controller::Exceptions
25
25
 
26
26
  notice_error(exception) if error.status >= 500
27
27
 
28
- json = {status: error.status, message: error.message}
29
- if Rails.configuration.try(:consider_all_requests_local)
30
- json[:backtrace] = error.backtrace
31
- end
32
- render status: error.status, json: json
28
+ respond_with(
29
+ error,
30
+ status: error.status,
31
+ location: nil, # for POST requests
32
+ represent_with: HalApi::Errors::Representer
33
+ )
33
34
  end
34
35
 
35
36
  def log_error(env, wrapper)
@@ -102,7 +102,11 @@ module HalApi::Controller::Resources
102
102
  end
103
103
 
104
104
  def paged(arel)
105
- arel.page(params[:page]).per(params[:per])
105
+ if params[:per].to_i <= 0
106
+ arel.page(params[:page]).per(Kaminari.config.default_per_page)
107
+ else
108
+ arel.page(params[:page]).per(params[:per])
109
+ end
106
110
  end
107
111
 
108
112
  def scoped(res)
@@ -48,4 +48,12 @@ module HalApi::Errors
48
48
  super(msg, 400, hint)
49
49
  end
50
50
  end
51
+
52
+ module Representer
53
+ include Roar::JSON::HAL
54
+
55
+ property :status
56
+ property :message
57
+ property :backtrace, if: -> (*) { Rails.configuration.try(:consider_all_requests_local) }
58
+ end
51
59
  end
@@ -1,5 +1,5 @@
1
1
  module HalApi
2
2
  module Rails
3
- VERSION = "1.0.0"
3
+ VERSION = '1.1.4'
4
4
  end
5
5
  end
@@ -12,11 +12,11 @@ module HalApi::Representer::CollectionPaging
12
12
  embeds :items, decorator: lambda{|*| item_decorator }, class: lambda{|*| item_class }, zoom: :always
13
13
 
14
14
  link :prev do
15
- href_url_helper(params.merge(page: represented.prev_page)) unless represented.first_page?
15
+ href_url_helper(params.merge(page: represented.prev_page)) if represented.prev_page
16
16
  end
17
17
 
18
18
  link :next do
19
- href_url_helper(params.merge(page: represented.next_page)) unless represented.last_page?
19
+ href_url_helper(params.merge(page: represented.next_page)) if represented.next_page
20
20
  end
21
21
 
22
22
  link :first do
@@ -10,15 +10,6 @@ module HalApi::Representer::Embeds
10
10
  Representable::Binding.send(:include, HalApiRailsRenderPipeline) if !Representable::Binding.include?(HalApiRailsRenderPipeline)
11
11
  end
12
12
 
13
- def normalize_options!(options)
14
- propagated_options, private_options = super(options)
15
-
16
- # we want this to propogate, and be available for `skip_property?`, so don't delete
17
- private_options[:zoom] = options[:zoom] if options.key?(:zoom)
18
-
19
- [propagated_options, private_options]
20
- end
21
-
22
13
  module HalApiRailsRenderPipeline
23
14
 
24
15
  def skip_property?(binding, private_options)
@@ -37,10 +28,11 @@ module HalApi::Representer::Embeds
37
28
 
38
29
  # embed if zoomed
39
30
  def suppress_embed?(input, options)
40
- user_options = options[:options]
41
-
42
31
  binding = options[:binding]
43
32
 
33
+ # guard against non-hal representers
34
+ return false unless binding[:as].present?
35
+
44
36
  name = binding.evaluate_option(:as, input, options)
45
37
 
46
38
  embedded = binding[:embedded]
@@ -48,7 +40,8 @@ module HalApi::Representer::Embeds
48
40
  return false if !embedded
49
41
 
50
42
  ## check if it should be zoomed, suppress if not
51
- !embed_zoomed?(name, binding[:zoom], user_options[:zoom])
43
+ user_zooms = options[:options].try(:[], :user_options).try(:[], :zoom)
44
+ !embed_zoomed?(name, binding[:zoom], user_zooms)
52
45
  end
53
46
 
54
47
  def embed_zoomed?(name, zoom_def = nil, zoom_param = nil)
@@ -92,7 +85,9 @@ module HalApi::Representer::Embeds
92
85
  options[:getter] ||= ->(*) do
93
86
  cnt = send(name).count
94
87
  per = getter_per == :all ? cnt : getter_per
95
- if cnt <= per
88
+ if cnt == 0
89
+ items = send(name).page(1).per(Kaminari.config.default_per_page)
90
+ elsif cnt <= per
96
91
  items = Kaminari.paginate_array(send(name)).page(1).per(per)
97
92
  else
98
93
  items = send(name).page(1).per(per)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hal_api-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Rhoden
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-01-08 00:00:00.000000000 Z
12
+ date: 2020-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -202,6 +202,7 @@ extensions: []
202
202
  extra_rdoc_files: []
203
203
  files:
204
204
  - ".gitignore"
205
+ - ".ruby-version"
205
206
  - ".travis.yml"
206
207
  - CODE_OF_CONDUCT.md
207
208
  - Gemfile
@@ -254,7 +255,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
255
  - !ruby/object:Gem::Version
255
256
  version: '0'
256
257
  requirements: []
257
- rubygems_version: 3.0.3
258
+ rubyforge_project:
259
+ rubygems_version: 2.6.14.4
258
260
  signing_key:
259
261
  specification_version: 4
260
262
  summary: JSON HAL APIs on Rails in the style of PRX