grape-hypertext_application_language 0.0.0 → 0.1.0

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: 4b245bf5afb49fb907aad0b188ab89afee06abda
4
- data.tar.gz: dd47cc9a8a73b730f6ab26fcf07c3af905b51c65
3
+ metadata.gz: ffe1cef37af0bb17749a6a6a1a07e522560f61ce
4
+ data.tar.gz: 2673e37724c016727d7bb999c69df7e9c486060e
5
5
  SHA512:
6
- metadata.gz: 5145c5bb772a3a1d9067a8416c651b6e463249ee3a0170256642033a5917ade612b91f551b57c5785a064499d807dd3dcbb493742acb72d9f4d8df7f38b1514d
7
- data.tar.gz: 1635e2f63cb76132bed732fbd73e788d792063e381e0a840b27b45e8fcbd5fec0f7385e363ece17a63ad9020198e451156b2b2783c03d2ec5c1fd5a6f4eafed3
6
+ metadata.gz: 5ea3bc42966802ff300ce2ec91ca2d00125b66e2c12fcd697a5aa213a0f16aa666ca2fb16741ed75c98481d18a3fe41f20c8df333022824e56b8797a363b0384
7
+ data.tar.gz: 31c11910e5f8c6cecafff58591602e7d1894eb7d6eac1fa42f132f13525b7dd77ffd58740c0bb93342e8a63e6d3fa61fc0e5d970ffb37a848392cb44dad8456c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grape-hypertext_application_language (0.0.0)
4
+ grape-hypertext_application_language (0.1.0)
5
5
  addressable
6
6
  grape
7
7
  hypertext_application_language
@@ -9,7 +9,7 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (4.2.4)
12
+ activesupport (4.2.5)
13
13
  i18n (~> 0.7)
14
14
  json (~> 1.7, >= 1.7.7)
15
15
  minitest (~> 5.1)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'grape-hypertext_application_language'
3
- spec.version = '0.0.0'
3
+ spec.version = '0.1.0'
4
4
  spec.summary = %q{Grape extensions for Hypertext Application Language}
5
5
  spec.description = %q{}
6
6
  spec.homepage = 'http://stateless.co/hal_specification.html'
@@ -22,10 +22,33 @@ module Grape::Formatter::Hal
22
22
  # representation. Passes the Rack environment to the HAL
23
23
  # converter. Converters can use the environment to extract addressing
24
24
  # information for the representation's links, including the self link.
25
+ #
26
+ # Handles arrays of objects if, and only if, the elements themselves respond
27
+ # to +to_hal+. In such cases, it replaces the array body with a HAL
28
+ # representation conforming to a HAL collection where the collection
29
+ # representation includes links to the elements in the collection as well as
30
+ # embedding the nested resources. Uses the request path for the self link;
31
+ # and uses the path, less its leading slash, as the relation.
25
32
  def self.call(body, env)
26
33
  unless body.is_a?(HypertextApplicationLanguage::Representation)
27
- return body unless body.respond_to?(:to_hal)
28
- body = body.to_hal(env: env)
34
+ if body.respond_to?(:first) && body.first.respond_to?(:to_hal)
35
+ representation = HypertextApplicationLanguage::Representation.new
36
+
37
+ rel = env['PATH_INFO'][1..-1]
38
+ href = env['REQUEST_PATH']
39
+ representation.with_link(HypertextApplicationLanguage::Link::SELF_REL, href)
40
+
41
+ body.each do |resource|
42
+ resource_representation = resource.to_hal(env: env)
43
+ representation.with_link(rel, resource_representation.link.href)
44
+ representation.with_representation(rel, resource_representation)
45
+ end
46
+
47
+ body = representation
48
+ else
49
+ return body unless body.respond_to?(:to_hal)
50
+ body = body.to_hal(env: env)
51
+ end
29
52
  end
30
53
 
31
54
  endpoint = env['api.endpoint']
metadata CHANGED
@@ -1,80 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-hypertext_application_language
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roy Ratcliffe
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-03 00:00:00.000000000 Z
11
+ date: 2015-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: grape
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - ">="
17
18
  - !ruby/object:Gem::Version
18
19
  version: '0'
19
- name: grape
20
- prerelease: false
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: hypertext_application_language
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
- name: hypertext_application_language
34
- prerelease: false
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: addressable
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - ">="
45
46
  - !ruby/object:Gem::Version
46
47
  version: '0'
47
- name: addressable
48
- prerelease: false
49
48
  type: :runtime
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
+ name: bundler
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
59
  - - ">="
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- name: bundler
62
- prerelease: false
63
62
  type: :development
63
+ prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
+ name: rake
70
71
  requirement: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - ">="
73
74
  - !ruby/object:Gem::Version
74
75
  version: '0'
75
- name: rake
76
- prerelease: false
77
76
  type: :development
77
+ prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
@@ -100,7 +100,7 @@ homepage: http://stateless.co/hal_specification.html
100
100
  licenses:
101
101
  - MIT
102
102
  metadata: {}
103
- post_install_message:
103
+ post_install_message:
104
104
  rdoc_options: []
105
105
  require_paths:
106
106
  - lib
@@ -115,9 +115,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubyforge_project:
118
+ rubyforge_project:
119
119
  rubygems_version: 2.4.8
120
- signing_key:
120
+ signing_key:
121
121
  specification_version: 4
122
122
  summary: Grape extensions for Hypertext Application Language
123
123
  test_files: []