hyperclient 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -1
- data/.rubocop_todo.yml +12 -10
- data/.travis.yml +6 -7
- data/CHANGELOG.md +31 -20
- data/Dangerfile +2 -2
- data/Gemfile +3 -4
- data/Rakefile +1 -0
- data/hyperclient.gemspec +4 -5
- data/lib/hyperclient/curie.rb +2 -1
- data/lib/hyperclient/entry_point.rb +5 -0
- data/lib/hyperclient/link.rb +7 -4
- data/lib/hyperclient/resource.rb +3 -3
- data/lib/hyperclient/version.rb +1 -1
- data/test/fixtures/element.json +15 -15
- data/test/hyperclient/link_collection_test.rb +4 -4
- data/test/hyperclient/link_test.rb +2 -2
- data/test/hyperclient/resource_test.rb +10 -0
- data/test/test_helper.rb +2 -3
- metadata +13 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 494b4be638b3b6d76edd4d07e5b12e36433dfd84c9a756dec34a278fd9ea2faa
|
4
|
+
data.tar.gz: 1d9e97e2a76cdf4a991a5803bd14eadf40ae300e4065cbacdedee64b66f19a3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd401bb429c28fb75af0c95908deaa43f91a67923c47ba17ba369eb238252add1657ea1aa2b57f9721c59113c06d394274268ade288618314b93c7d4e0c11b31
|
7
|
+
data.tar.gz: 5892d3cabd8bad2e6bd5c6e9a5c6ef7f3fa9f7376c6aa39e9225acf8c37160da3550b66ff420440a9565d29ea898784bd3093bd36b09cbf1302f45aaa7d0a5a6
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2019-08-25 11:12:51 -0400 using RuboCop version 0.74.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -11,14 +11,8 @@
|
|
11
11
|
Metrics/ClassLength:
|
12
12
|
Max: 103
|
13
13
|
|
14
|
-
# Offense count: 94
|
15
|
-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
16
|
-
# URISchemes: http, https
|
17
|
-
Metrics/LineLength:
|
18
|
-
Max: 142
|
19
|
-
|
20
14
|
# Offense count: 3
|
21
|
-
# Configuration parameters: CountComments.
|
15
|
+
# Configuration parameters: CountComments, ExcludedMethods.
|
22
16
|
Metrics/MethodLength:
|
23
17
|
Max: 25
|
24
18
|
|
@@ -28,7 +22,8 @@ Metrics/ModuleLength:
|
|
28
22
|
Max: 265
|
29
23
|
|
30
24
|
# Offense count: 2
|
31
|
-
#
|
25
|
+
# Cop supports --auto-correct.
|
26
|
+
# Configuration parameters: AutoCorrect, EnforcedStyle.
|
32
27
|
# SupportedStyles: nested, compact
|
33
28
|
Style/ClassAndModuleChildren:
|
34
29
|
Exclude:
|
@@ -52,6 +47,13 @@ Style/DoubleNegation:
|
|
52
47
|
- 'lib/hyperclient/link.rb'
|
53
48
|
|
54
49
|
# Offense count: 1
|
55
|
-
Style/
|
50
|
+
Style/MethodMissingSuper:
|
56
51
|
Exclude:
|
57
52
|
- 'lib/hyperclient/collection.rb'
|
53
|
+
|
54
|
+
# Offense count: 93
|
55
|
+
# Cop supports --auto-correct.
|
56
|
+
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
57
|
+
# URISchemes: http, https
|
58
|
+
Metrics/LineLength:
|
59
|
+
Max: 142
|
data/.travis.yml
CHANGED
@@ -4,20 +4,19 @@ sudo: false
|
|
4
4
|
|
5
5
|
matrix:
|
6
6
|
include:
|
7
|
-
- rvm: 2.
|
8
|
-
- rvm: 2.
|
7
|
+
- rvm: 2.6.3
|
8
|
+
- rvm: 2.5.5
|
9
|
+
- rvm: 2.4.6
|
10
|
+
- rvm: 2.4.6
|
9
11
|
script:
|
10
12
|
- bundle exec danger
|
11
|
-
- rvm: jruby-9.
|
13
|
+
- rvm: jruby-9.2.7.0
|
12
14
|
- rvm: jruby-head
|
13
|
-
- rvm: 2.
|
14
|
-
- rvm: 2.3.4
|
15
|
-
- rvm: rbx-2
|
15
|
+
- rvm: 2.3.8
|
16
16
|
- rvm: ruby-head
|
17
17
|
allow_failures:
|
18
18
|
- rvm: ruby-head
|
19
19
|
- rvm: jruby-head
|
20
|
-
- rvm: rbx-2
|
21
20
|
|
22
21
|
before_install:
|
23
22
|
- gem update --system
|
data/CHANGELOG.md
CHANGED
@@ -1,69 +1,80 @@
|
|
1
|
-
|
1
|
+
## Changelog
|
2
|
+
|
3
|
+
### 0.9.1 (2019/08/25)
|
4
|
+
|
5
|
+
* NOTE: **⚠ This version is no longer tested with Ruby < 2.3 ⚠** - [@ivoanjo](https://github.com/ivoanjo).
|
6
|
+
|
7
|
+
* [#135](https://github.com/codegram/hyperclient/pull/135): Fix validation for empty body responses - [@paulocdf](https://github.com/paulocdf).
|
8
|
+
* [#139](https://github.com/codegram/hyperclient/pull/139): Test `hyperclient` against newer versions of MRI Ruby, up until 2.6.x - [@mrcasals](https://github.com/mrcasals).
|
9
|
+
* [#141](https://github.com/codegram/hyperclient/pull/141): Replace `uri_template` with `addressable` library - [@mrcasals](https://github.com/mrcasals).
|
10
|
+
* [#136](https://github.com/codegram/hyperclient/pull/136), [#146](https://github.com/codegram/hyperclient/pull/146): Upgraded Danger plugins - [@dblock](https://github.com/dblock), [@ivoanjo](https://github.com/ivoanjo).
|
11
|
+
|
12
|
+
### 0.9.0 (2018/01/10)
|
2
13
|
|
3
14
|
* [#133](https://github.com/codegram/hyperclient/pull/133): Removed futuroscope - [@dblock](https://github.com/dblock).
|
4
15
|
* [#131](https://github.com/codegram/hyperclient/pull/131): Upgrade to Rubocop 0.50.0, fix Bundler's insecure git source warning - [@nebolsin](https://github.com/nebolsin).
|
5
16
|
* [#132](https://github.com/codegram/hyperclient/pull/132): Swapped yard dependency for danger-toc - [@dblock](https://github.com/dblock).
|
6
17
|
|
7
|
-
### 0.8.6 (
|
18
|
+
### 0.8.6 (2017/08/27)
|
8
19
|
|
9
20
|
* [#122](https://github.com/codegram/hyperclient/pull/122): Improve error message when server returns invalid data - [@ivoanjo](https://github.com/ivoanjo).
|
10
21
|
* [#125](https://github.com/codegram/hyperclient/pull/125): Add table of contents to readme and add note asking users to add their projects to the wiki - [@ivoanjo](https://github.com/ivoanjo).
|
11
22
|
* [#127](https://github.com/codegram/hyperclient/pull/127): Minor fixes: Fix warnings, and pry-byebug to dev Gemfile and tweak rubocop execution - [@ivoanjo](https://github.com/ivoanjo).
|
12
23
|
* [#128](https://github.com/codegram/hyperclient/pull/128): Fix link delegation returning nil for field with value false - [@ivoanjo](https://github.com/ivoanjo).
|
13
24
|
|
14
|
-
### 0.8.5 (
|
25
|
+
### 0.8.5 (2017/07/05)
|
15
26
|
|
16
27
|
* [#120](https://github.com/codegram/hyperclient/pull/120): Replace non-working homepage link in gemspec - [@ivoanjo](https://github.com/ivoanjo).
|
17
28
|
|
18
|
-
### 0.8.4 (
|
29
|
+
### 0.8.4 (2017/05/16)
|
19
30
|
|
20
31
|
* [#117](https://github.com/codegram/hyperclient/issues/117): Require Faraday >= 0.9.0 in gemspec - [@ivoanjo](https://github.com/ivoanjo).
|
21
32
|
|
22
|
-
### 0.8.3 (
|
33
|
+
### 0.8.3 (2017/03/30)
|
23
34
|
|
24
35
|
* [#115](https://github.com/codegram/hyperclient/pull/115): Fix dropped values from queries by using FlatParamsEncoder - [@ivoanjo](https://github.com/ivoanjo).
|
25
36
|
|
26
|
-
### 0.8.2 (
|
37
|
+
### 0.8.2 (2016/12/31)
|
27
38
|
|
28
|
-
|
39
|
+
* NOTE: **⚠ This version is no longer tested with Ruby < 2.2 ⚠** - [@dblock](https://github.com/dblock).
|
29
40
|
|
30
41
|
* [#105](https://github.com/codegram/hyperclient/pull/105), [#108](https://github.com/codegram/hyperclient/pull/108): Added Danger, PR linter - [@dblock](https://github.com/dblock).
|
31
42
|
* [#109](https://github.com/codegram/hyperclient/pull/109): Allow disabling asynchronous behavior per-instance - [@Talkdesk](https://github.com/Talkdesk).
|
32
43
|
* [#110](https://github.com/codegram/hyperclient/pull/110): Fixed ruby warnings - [@ivoanjo](https://github.com/ivoanjo).
|
33
44
|
|
34
|
-
### 0.8.1 (
|
45
|
+
### 0.8.1 (2016/03/15)
|
35
46
|
|
36
47
|
* [#97](https://github.com/codegram/hyperclient/issues/97): Fix: curies are no longer used as link shorteners - [@joshco](https://github.com/joshco), [@dblock](https://github.com/dblock).
|
37
48
|
* [#95](https://github.com/codegram/hyperclient/issues/95): Fix: re-add eager delegation for `resource.each` - [@dblock](https://github.com/dblock).
|
38
49
|
|
39
|
-
### 0.7.2 (
|
50
|
+
### 0.7.2 (2015/08/23)
|
40
51
|
|
41
52
|
* [#95](https://github.com/codegram/hyperclient/issues/95): Fix: re-add eager delegation for `resource.x._embeddded.x` - [@dblock](https://github.com/dblock).
|
42
53
|
|
43
|
-
### 0.7.1 (
|
54
|
+
### 0.7.1 (2015/08/15)
|
44
55
|
|
45
56
|
* [#89](https://github.com/codegram/hyperclient/issues/89): Added `Hyperclient::Resource#fetch` - [@alabeduarte](https://github.com/alabeduarte).
|
46
57
|
* [#87](https://github.com/codegram/hyperclient/pull/87): Fix: eager delegation causes link skipping - [@dblock](https://github.com/dblock).
|
47
58
|
|
48
|
-
### 0.7.0 (
|
59
|
+
### 0.7.0 (2015/02/23)
|
49
60
|
|
50
|
-
|
61
|
+
* NOTE: **⚠ This version introduces several backwards incompatible changes. See [UPGRADING](UPGRADING.md) for details ⚠** - [@dblock](https://github.com/dblock).
|
51
62
|
|
52
63
|
* [#80](https://github.com/codegram/hyperclient/pull/80): Faraday options can be passed to the connection on initialization - [@koenpunt](https://github.com/koenpunt).
|
53
64
|
* [#81](https://github.com/codegram/hyperclient/pull/81): The default Content-Type is now `application/hal+json` - [@koenpunt](https://github.com/koenpunt).
|
54
65
|
|
55
|
-
### 0.6.1 (
|
66
|
+
### 0.6.1 (2014/10/17)
|
56
67
|
|
57
|
-
|
68
|
+
* NOTE: **⚠ This version introduces several backwards incompatible changes. See [UPGRADING](UPGRADING.md) for details ⚠** - [@dblock](https://github.com/dblock).
|
58
69
|
|
59
70
|
* [#51](https://github.com/codegram/hyperclient/issues/51), [#75](https://github.com/codegram/hyperclient/pull/75): Added support for setting headers and overriding or extending the default Faraday connection block before a connection is constructed - [@dblock](https://github.com/dblock).
|
60
71
|
* [#41](https://github.com/codegram/hyperclient/issues/41), [#73](https://github.com/codegram/hyperclient/pull/73): All Link HTTP methods now return a Resource, including `_get`, which has been aliased to `_resource`, `_post`, `_put`, `_patch`, `_head` and `_options` - [@dblock](https://github.com/dblock).
|
61
72
|
* [#72](https://github.com/codegram/hyperclient/pull/72): The default Faraday block now uses `Faraday::Response::RaiseError` and will cause HTTP errors to be raised as exceptions - [@dblock](https://github.com/dblock).
|
62
73
|
* [#77](https://github.com/codegram/hyperclient/pull/77): Added support for templated links with all optional arguments - [@dblock](https://github.com/dblock).
|
63
74
|
|
64
|
-
### 0.5.0 (
|
75
|
+
### 0.5.0 (2014/10/01)
|
65
76
|
|
66
|
-
|
77
|
+
* NOTE: **⚠ This version introduces several backwards incompatible changes. See [UPGRADING](UPGRADING.md) for details ⚠** - [@dblock](https://github.com/dblock).
|
67
78
|
|
68
79
|
* [#63](https://github.com/codegram/hyperclient/pull/63): Navigational methods, including `links`, `get` or `post`, have been renamed to `_links`, `_get`, or `_post` respectively - [@dblock](https://github.com/dblock).
|
69
80
|
* [#64](https://github.com/codegram/hyperclient/issues/64): Added support for curies - [@dblock](https://github.com/dblock).
|
@@ -71,12 +82,12 @@
|
|
71
82
|
* [#63](https://github.com/codegram/hyperclient/pull/63): You can omit the navigational elements, `api.links.products` is now equivalent to `api.products` - [@dblock](https://github.com/dblock).
|
72
83
|
* [#61](https://github.com/codegram/hyperclient/pull/61): Implemented Rubocop, Ruby-style linter - [@dblock](https://github.com/dblock).
|
73
84
|
|
74
|
-
### 0.4.0 (
|
85
|
+
### 0.4.0 (2014/05/05)
|
75
86
|
|
76
87
|
* [#54](https://github.com/codegram/hyperclient/pull/54): Support Faraday 0.9.0 - [@lucianapazos](https://github.com/lucianapazos).
|
77
88
|
* [#30](https://github.com/codegram/hyperclient/pull/30): Use futuroscope to run API calls in the background - [@josepjaume](https://github.com/josepjaume).
|
78
89
|
|
79
|
-
### 0.3.2 (
|
90
|
+
### 0.3.2 (2013/12/20)
|
80
91
|
|
81
92
|
* [#48](https://github.com/codegram/hyperclient/pull/48): Added support for fetch on the collection class - [@col](https://github.com/col).
|
82
93
|
* [#50](https://github.com/codegram/hyperclient/pull/50): Fixed Resource/Attributes mutating the response body - [@col](https://github.com/col).
|
@@ -90,10 +101,10 @@
|
|
90
101
|
* [#31](https://github.com/codegram/hyperclient/pull/31): Allowed underscored attribute names other than the ones reserved by the HAL spec - [@karlin](https://github.com/karlin).
|
91
102
|
* [#29](https://github.com/codegram/hyperclient/pull/29): Handled JSON that includes a link with a null value - [@arbylee](https://github.com/arbylee).
|
92
103
|
|
93
|
-
### 0.3.1 (
|
104
|
+
### 0.3.1 (2013/04/03)
|
94
105
|
|
95
106
|
* [#27](https://github.com/codegram/hyperclient/pull/27): Added support for collections of links - [@rehevkor5](https://github.com/rehevkor5).
|
96
107
|
|
97
|
-
### 0.3.0 (
|
108
|
+
### 0.3.0 (2013/02/03)
|
98
109
|
|
99
110
|
* Initial public release - [@oriolgual](https://github.com/oriolgual).
|
data/Dangerfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
changelog.check
|
2
|
-
toc.check
|
1
|
+
changelog.check!
|
2
|
+
toc.check!
|
data/Gemfile
CHANGED
@@ -16,17 +16,16 @@ end
|
|
16
16
|
|
17
17
|
group :development, :test do
|
18
18
|
gem 'rake'
|
19
|
-
gem 'rubocop', '~> 0.
|
19
|
+
gem 'rubocop', '~> 0.74.0', require: false
|
20
20
|
gem 'simplecov', require: false
|
21
21
|
end
|
22
22
|
|
23
23
|
group :test do
|
24
|
-
gem 'danger-changelog', '~> 0.
|
25
|
-
gem 'danger-toc', '~> 0.
|
24
|
+
gem 'danger-changelog', '~> 0.6.0'
|
25
|
+
gem 'danger-toc', '~> 0.2.0'
|
26
26
|
gem 'minitest'
|
27
27
|
gem 'mocha'
|
28
28
|
gem 'rack-test'
|
29
29
|
gem 'spinach'
|
30
|
-
gem 'turn'
|
31
30
|
gem 'webmock'
|
32
31
|
end
|
data/Rakefile
CHANGED
data/hyperclient.gemspec
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require File.expand_path('../lib/hyperclient/version', __FILE__)
|
1
|
+
require File.expand_path('lib/hyperclient/version', __dir__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |gem|
|
5
4
|
gem.authors = ['Oriol Gual']
|
@@ -14,10 +13,10 @@ Gem::Specification.new do |gem|
|
|
14
13
|
gem.require_paths = ['lib']
|
15
14
|
gem.version = Hyperclient::VERSION
|
16
15
|
|
16
|
+
gem.add_dependency 'addressable'
|
17
17
|
gem.add_dependency 'faraday', '>= 0.9.0'
|
18
|
-
gem.add_dependency '
|
18
|
+
gem.add_dependency 'faraday-digestauth'
|
19
19
|
gem.add_dependency 'faraday_hal_middleware'
|
20
|
-
gem.add_dependency '
|
20
|
+
gem.add_dependency 'faraday_middleware'
|
21
21
|
gem.add_dependency 'net-http-digest_auth'
|
22
|
-
gem.add_dependency 'faraday-digestauth'
|
23
22
|
end
|
data/lib/hyperclient/curie.rb
CHANGED
@@ -57,6 +57,7 @@ module Hyperclient
|
|
57
57
|
@faraday_options ||= options.dup
|
58
58
|
if block_given?
|
59
59
|
raise ConnectionAlreadyInitializedError if @connection
|
60
|
+
|
60
61
|
@faraday_block = if @faraday_options.delete(:default) == false
|
61
62
|
block
|
62
63
|
else
|
@@ -75,6 +76,7 @@ module Hyperclient
|
|
75
76
|
# Returns a Hash.
|
76
77
|
def headers
|
77
78
|
return @connection.headers if @connection
|
79
|
+
|
78
80
|
@headers ||= default_headers
|
79
81
|
end
|
80
82
|
|
@@ -83,6 +85,7 @@ module Hyperclient
|
|
83
85
|
# value - A Hash containing headers to include with every API request.
|
84
86
|
def headers=(value)
|
85
87
|
raise ConnectionAlreadyInitializedError if @connection
|
88
|
+
|
86
89
|
@headers = value
|
87
90
|
end
|
88
91
|
|
@@ -98,6 +101,7 @@ module Hyperclient
|
|
98
101
|
# value - A Hash containing options to pass to Faraday
|
99
102
|
def faraday_options=(value)
|
100
103
|
raise ConnectionAlreadyInitializedError if @connection
|
104
|
+
|
101
105
|
@faraday_options = value
|
102
106
|
end
|
103
107
|
|
@@ -113,6 +117,7 @@ module Hyperclient
|
|
113
117
|
# value - A Proc accepting a Faraday::Connection.
|
114
118
|
def faraday_block=(value)
|
115
119
|
raise ConnectionAlreadyInitializedError if @connection
|
120
|
+
|
116
121
|
@faraday_block = value
|
117
122
|
end
|
118
123
|
|
data/lib/hyperclient/link.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'addressable'
|
2
2
|
|
3
3
|
module Hyperclient
|
4
4
|
# Internal: The Link is used to let a Resource interact with the API.
|
@@ -39,7 +39,8 @@ module Hyperclient
|
|
39
39
|
# Public: Returns the url of the Link.
|
40
40
|
def _url
|
41
41
|
return @link['href'] unless _templated?
|
42
|
-
|
42
|
+
|
43
|
+
@url ||= _uri_template.expand(@uri_variables || {}).to_s
|
43
44
|
end
|
44
45
|
|
45
46
|
# Public: Returns an array of variables from the URITemplate.
|
@@ -137,8 +138,10 @@ module Hyperclient
|
|
137
138
|
# This allows `api.posts` instead of `api._links.posts.embedded.posts`
|
138
139
|
def delegate_method(method, *args, &block)
|
139
140
|
return unless @key && _resource.respond_to?(@key)
|
141
|
+
|
140
142
|
@delegate ||= _resource.send(@key)
|
141
|
-
return unless @delegate
|
143
|
+
return unless @delegate&.respond_to?(method.to_s)
|
144
|
+
|
142
145
|
@delegate.send(method, *args, &block)
|
143
146
|
end
|
144
147
|
|
@@ -162,7 +165,7 @@ module Hyperclient
|
|
162
165
|
|
163
166
|
# Internal: Memoization for a URITemplate instance
|
164
167
|
def _uri_template
|
165
|
-
@uri_template ||=
|
168
|
+
@uri_template ||= Addressable::Template.new(@link['href'])
|
166
169
|
end
|
167
170
|
|
168
171
|
def http_method(method, body = nil)
|
data/lib/hyperclient/resource.rb
CHANGED
@@ -55,11 +55,11 @@ module Hyperclient
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def _success?
|
58
|
-
_response
|
58
|
+
_response&.success?
|
59
59
|
end
|
60
60
|
|
61
61
|
def _status
|
62
|
-
_response
|
62
|
+
_response&.status
|
63
63
|
end
|
64
64
|
|
65
65
|
def [](name)
|
@@ -82,7 +82,7 @@ module Hyperclient
|
|
82
82
|
|
83
83
|
# Internal: Ensures the received representation is a valid Hash-lookalike.
|
84
84
|
def validate(representation)
|
85
|
-
return {}
|
85
|
+
return {} if representation.nil? || representation.empty?
|
86
86
|
|
87
87
|
if representation.respond_to?(:to_hash)
|
88
88
|
representation.to_hash.dup
|
data/lib/hyperclient/version.rb
CHANGED
data/test/fixtures/element.json
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
"self": {
|
4
4
|
"href": "/productions/1"
|
5
5
|
},
|
6
|
-
"
|
7
|
-
"href": "/productions/1?categories={
|
6
|
+
"search": {
|
7
|
+
"href": "/productions/1?categories={search}",
|
8
8
|
"templated": true
|
9
9
|
},
|
10
10
|
"gizmos": [
|
@@ -15,17 +15,17 @@
|
|
15
15
|
"href": "/gizmos/2"
|
16
16
|
}
|
17
17
|
],
|
18
|
-
"curies"
|
18
|
+
"curies": [
|
19
19
|
{
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
"name": "image",
|
21
|
+
"href": "/docs/images/{rel}",
|
22
|
+
"templated": true
|
23
23
|
}
|
24
24
|
],
|
25
25
|
"null_link": null,
|
26
26
|
"image:thumbnail": {
|
27
|
-
|
28
|
-
|
27
|
+
"href": "/images/thumbnails/{version}.jpg",
|
28
|
+
"templated": true
|
29
29
|
}
|
30
30
|
},
|
31
31
|
"title": "Real World ASP.NET MVC3",
|
@@ -48,9 +48,9 @@
|
|
48
48
|
"href": "/episodes/1"
|
49
49
|
},
|
50
50
|
"media": {
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
"type": "video/webm; codecs='vp8.0, vorbis'",
|
52
|
+
"href": "/media/1"
|
53
|
+
}
|
54
54
|
},
|
55
55
|
"title": "Foundations",
|
56
56
|
"description": "In this episode we talk about what it is we're doing: building our startup and getting ourselves off the ground. We take..",
|
@@ -62,9 +62,9 @@
|
|
62
62
|
"href": "/episodes/2"
|
63
63
|
},
|
64
64
|
"media": {
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
"type": "video/ogg; codecs='theora, vorbis'",
|
66
|
+
"href": "/media/4"
|
67
|
+
}
|
68
68
|
},
|
69
69
|
"title": "Membership",
|
70
70
|
"description": "In this episode Rob hooks up testing in an effort to deal with ASP.NET Membership. The team has decided..",
|
@@ -72,4 +72,4 @@
|
|
72
72
|
}
|
73
73
|
]
|
74
74
|
}
|
75
|
-
}
|
75
|
+
}
|
@@ -18,12 +18,12 @@ module Hyperclient
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'initializes the collection with links' do
|
21
|
-
links.must_respond_to :
|
21
|
+
links.must_respond_to :search
|
22
22
|
links.must_respond_to :gizmos
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'returns link objects for each link' do
|
26
|
-
links.
|
26
|
+
links.search.must_be_kind_of Link
|
27
27
|
links['self'].must_be_kind_of Link
|
28
28
|
|
29
29
|
links.gizmos.must_be_kind_of Array
|
@@ -38,9 +38,9 @@ module Hyperclient
|
|
38
38
|
end
|
39
39
|
|
40
40
|
describe 'templated link' do
|
41
|
-
let(:templated_link) { links.
|
41
|
+
let(:templated_link) { links.search }
|
42
42
|
it 'must expand' do
|
43
|
-
templated_link._expand(
|
43
|
+
templated_link._expand(search: 'gizmos')._url.must_equal '/productions/1?categories=gizmos'
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -16,7 +16,7 @@ module Hyperclient
|
|
16
16
|
|
17
17
|
it 'returns nil if the property is not present' do
|
18
18
|
link = Link.new('key', {}, entry_point)
|
19
|
-
link.send("_#{prop}").
|
19
|
+
link.send("_#{prop}").must_be_nil
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -301,7 +301,7 @@ module Hyperclient
|
|
301
301
|
end
|
302
302
|
|
303
303
|
resource.foos._embedded.orders.first.id.must_equal 1
|
304
|
-
resource.foos.first.
|
304
|
+
resource.foos.first.must_be_nil
|
305
305
|
end
|
306
306
|
|
307
307
|
it 'backtracks when navigating links' do
|
@@ -41,6 +41,16 @@ module Hyperclient
|
|
41
41
|
resource._response.body.must_equal body
|
42
42
|
end
|
43
43
|
|
44
|
+
describe 'with an empty body in response' do
|
45
|
+
it 'initializes the response' do
|
46
|
+
mock_response = mock(body: '')
|
47
|
+
|
48
|
+
resource = Resource.new(mock_response.body, entry_point, mock_response)
|
49
|
+
|
50
|
+
resource._response.must_equal mock_response
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
44
54
|
describe 'with an invalid representation' do
|
45
55
|
it 'raises an InvalidRepresentationError' do
|
46
56
|
proc { Resource.new('invalid representation data', entry_point) }.must_raise InvalidRepresentationError
|
data/test/test_helper.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
$LOAD_PATH << 'lib'
|
2
2
|
|
3
|
-
require 'minitest/spec'
|
4
3
|
require 'minitest/autorun'
|
4
|
+
require 'minitest/pride'
|
5
5
|
require 'mocha/setup'
|
6
|
-
require 'turn'
|
7
6
|
require 'json'
|
8
7
|
|
9
|
-
MiniTest::
|
8
|
+
MiniTest::Test.class_eval do
|
10
9
|
def stub_request(conn, adapter_class = Faraday::Adapter::Test, &stubs_block)
|
11
10
|
adapter_handler = conn.builder.handlers.find { |h| h.klass < Faraday::Adapter }
|
12
11
|
conn.builder.swap(adapter_handler, adapter_class, &stubs_block)
|
metadata
CHANGED
@@ -1,45 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oriol Gual
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: addressable
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.9.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.9.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: faraday-digestauth
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: faraday_hal_middleware
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: faraday_middleware
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: net-http-digest_auth
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -168,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
- !ruby/object:Gem::Version
|
169
169
|
version: '0'
|
170
170
|
requirements: []
|
171
|
-
|
172
|
-
rubygems_version: 2.7.3
|
171
|
+
rubygems_version: 3.0.3
|
173
172
|
signing_key:
|
174
173
|
specification_version: 4
|
175
174
|
summary: ''
|