hal_api-rails 0.3.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5fd9d4857d9ce82ac91cae49c2b239e1ed4ebac
4
- data.tar.gz: 9f19281381dbdfc58f76b942421c36a7531aacac
3
+ metadata.gz: 7b318397223e77cc82d2ab9164f9f9ec2dd9b127
4
+ data.tar.gz: 1a89f74d2c6685d025ddad7932957c591d7fda22
5
5
  SHA512:
6
- metadata.gz: c8f2041c5eceda12f490af0169b5058ea32b9f782fddeb0c1bbf15ad19973fe2a08dc38f90956accf7557160393a24709e20744ecf53dd4b7fb18d9aee5d60d7
7
- data.tar.gz: c6c89868387c3416b6ea2ca71114e46a13b33f9a20552a47fab404e31dac0bec96f8af99c97b0f02f4e59d1a072829e0541aa3acd17e0604ccd403a5e8124524
6
+ metadata.gz: bf12d6755045f0ba05b7620474d9d32e82aa0d85200a6ec42bede5e85bfeac03369b0f18c908ad1862f6dc29d061fba8821f87d7cc8ec233499f507ffe2ec09f
7
+ data.tar.gz: 6908296c63f9eda39063e3cc014718e25cdb16bad6bf5e72060714ebcbd621d13323f06513f6a5f48861dc3e58f6d431b8facc438ef770dbe35c6d4eb5d7f462
@@ -1,63 +1,5 @@
1
- require 'hal_api/representer'
1
+ require 'hal_api/representer/collection_paging'
2
2
 
3
3
  class HalApi::PagedCollectionRepresenter < HalApi::Representer
4
- property :count
5
- property :total
6
-
7
- embeds :items, decorator: lambda{|*| item_decorator }, class: lambda{|*| item_class }, zoom: :always
8
-
9
- link :prev do
10
- href_url_helper(params.merge(page: represented.prev_page)) unless represented.first_page?
11
- end
12
-
13
- link :next do
14
- href_url_helper(params.merge(page: represented.next_page)) unless represented.last_page?
15
- end
16
-
17
- link :first do
18
- href_url_helper(params.merge(page: nil)) if represented.total_pages > 1
19
- end
20
-
21
- link :last do
22
- href_url_helper(params.merge(page: represented.total_pages)) if represented.total_pages > 1
23
- end
24
-
25
- def params
26
- represented.params
27
- end
28
-
29
- def self_url(represented)
30
- href_url_helper(represented.params)
31
- end
32
-
33
- def profile_url(represented)
34
- model_uri(:collection, represented.item_class)
35
- end
36
-
37
- # refactor to use single property, :url, that can be a method name, a string, or a lambda
38
- # if it is a method name, execute against self - the representer - which has local url helpers methods
39
- # if it is a sym/string, but self does not respond to it, then just use that string
40
- # if it is a lambda, execute in the context against the represented.parent (if there is one) or represented
41
- def href_url_helper(options={})
42
- if represented_url.nil?
43
- result = url_for(options.merge(only_path: true)) rescue nil
44
- if represented.parent
45
- result ||= polymorphic_path([:api, represented.parent, represented.item_class], options) rescue nil
46
- end
47
- result ||= polymorphic_path([:api, represented.item_class], options) rescue nil
48
- return result
49
- end
50
-
51
- if represented_url.respond_to?(:call)
52
- self.instance_exec(options, &represented_url)
53
- elsif self.respond_to?(represented_url)
54
- self.send(represented_url, options)
55
- else
56
- represented_url.to_s
57
- end
58
- end
59
-
60
- def represented_url
61
- @represented_url ||= represented.try(:url)
62
- end
4
+ include HalApi::Representer::CollectionPaging
63
5
  end
@@ -1,5 +1,5 @@
1
1
  module HalApi
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -0,0 +1,69 @@
1
+ require 'hal_api/representer'
2
+
3
+ module HalApi::Representer::CollectionPaging
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ class_eval do
8
+ property :count
9
+ property :total
10
+
11
+ embeds :items, decorator: lambda{|*| item_decorator }, class: lambda{|*| item_class }, zoom: :always
12
+
13
+ link :prev do
14
+ href_url_helper(params.merge(page: represented.prev_page)) unless represented.first_page?
15
+ end
16
+
17
+ link :next do
18
+ href_url_helper(params.merge(page: represented.next_page)) unless represented.last_page?
19
+ end
20
+
21
+ link :first do
22
+ href_url_helper(params.merge(page: nil)) if represented.total_pages > 1
23
+ end
24
+
25
+ link :last do
26
+ href_url_helper(params.merge(page: represented.total_pages)) if represented.total_pages > 1
27
+ end
28
+ end
29
+ end
30
+
31
+ def params
32
+ represented.params
33
+ end
34
+
35
+ def self_url(represented)
36
+ href_url_helper(represented.params)
37
+ end
38
+
39
+ def profile_url(represented)
40
+ model_uri(:collection, represented.item_class)
41
+ end
42
+
43
+ # refactor to use single property, :url, that can be a method name, a string, or a lambda
44
+ # if it is a method name, execute against self - the representer - which has local url helpers methods
45
+ # if it is a sym/string, but self does not respond to it, then just use that string
46
+ # if it is a lambda, execute in the context against the represented.parent (if there is one) or represented
47
+ def href_url_helper(options={})
48
+ if represented_url.nil?
49
+ result = url_for(options.merge(only_path: true)) rescue nil
50
+ if represented.parent
51
+ result ||= polymorphic_path([:api, represented.parent, represented.item_class], options) rescue nil
52
+ end
53
+ result ||= polymorphic_path([:api, represented.item_class], options) rescue nil
54
+ return result
55
+ end
56
+
57
+ if represented_url.respond_to?(:call)
58
+ self.instance_exec(options, &represented_url)
59
+ elsif self.respond_to?(represented_url)
60
+ self.send(represented_url, options)
61
+ else
62
+ represented_url.to_s
63
+ end
64
+ end
65
+
66
+ def represented_url
67
+ @represented_url ||= represented.try(:url)
68
+ end
69
+ end
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: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Rhoden
@@ -226,6 +226,7 @@ files:
226
226
  - lib/hal_api/representer.rb
227
227
  - lib/hal_api/representer/caches.rb
228
228
  - lib/hal_api/representer/caches/serialized_json.rb
229
+ - lib/hal_api/representer/collection_paging.rb
229
230
  - lib/hal_api/representer/curies.rb
230
231
  - lib/hal_api/representer/embeds.rb
231
232
  - lib/hal_api/representer/format_keys.rb