spyke 5.4.1 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/lib/spyke/http.rb +25 -12
- data/lib/spyke/relation.rb +5 -1
- data/lib/spyke/version.rb +1 -1
- data/spyke.gemspec +1 -1
- data/test/associations_test.rb +9 -0
- data/test/path_test.rb +2 -2
- data/test/scopes_test.rb +8 -0
- data/test/support/fixtures.rb +3 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0503658448e2cd567bfa85ec96f1a339dbb7c59690bff9b3cda1c2a0d727bab7'
|
4
|
+
data.tar.gz: 4ecd65b52680c1dce5f30eddad68fa544a781ea5f30984c55804aa839d93fe91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b143845d229f8b712b2d6f1d5d14ba36939a2bab6b90e835f35e5a499a1b06ee93087ecce81f46b9ebc9e7a4c92b9988d53c1ff2798f378e4e76fd9b12ceeb88
|
7
|
+
data.tar.gz: 22b3baeeac2cbaa4c0667c805eb4a33f011e6d0c333777b89766ba857e19f322374e215412d42b92c993b6f64ca80b2fb9cd89d14efaa42279d50ce3bdd2d68b
|
data/.travis.yml
CHANGED
data/lib/spyke/http.rb
CHANGED
@@ -41,20 +41,28 @@ module Spyke
|
|
41
41
|
@uri ||= uri_template || default_uri
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
44
|
+
private
|
45
|
+
|
46
|
+
def send_request(method, path, params)
|
47
|
+
connection.send(method) do |request|
|
48
|
+
if method == :get
|
49
|
+
path, params = merge_query_params(path, params)
|
50
|
+
request.url path, params
|
51
|
+
else
|
52
|
+
request.url path.to_s
|
53
|
+
request.body = params
|
54
|
+
end
|
51
55
|
end
|
56
|
+
rescue Faraday::ConnectionFailed, Faraday::TimeoutError
|
57
|
+
raise ConnectionError
|
52
58
|
end
|
53
|
-
rescue Faraday::ConnectionFailed, Faraday::TimeoutError
|
54
|
-
raise ConnectionError
|
55
|
-
end
|
56
59
|
|
57
|
-
|
60
|
+
def merge_query_params(path, params)
|
61
|
+
parsed_uri = Addressable::URI.parse(path.to_s)
|
62
|
+
path = parsed_uri.path
|
63
|
+
params = params.merge(parsed_uri.query_values || {})
|
64
|
+
[path, params]
|
65
|
+
end
|
58
66
|
|
59
67
|
def scoped_request(method)
|
60
68
|
uri = new.uri
|
@@ -105,7 +113,12 @@ module Spyke
|
|
105
113
|
errors_hash.each do |field, field_errors|
|
106
114
|
field_errors.each do |error_attributes|
|
107
115
|
error = NormalizedValidationError.new(error_attributes)
|
108
|
-
|
116
|
+
|
117
|
+
if errors.method(:add).arity == -2
|
118
|
+
errors.add(field.to_sym, error.message, **error.options)
|
119
|
+
else
|
120
|
+
errors.add(field.to_sym, error.message, error.options)
|
121
|
+
end
|
109
122
|
end
|
110
123
|
end
|
111
124
|
end
|
data/lib/spyke/relation.rb
CHANGED
@@ -5,7 +5,7 @@ module Spyke
|
|
5
5
|
include Enumerable
|
6
6
|
|
7
7
|
attr_reader :klass
|
8
|
-
|
8
|
+
attr_reader :params
|
9
9
|
delegate :to_ary, :[], :any?, :empty?, :last, :size, :metadata, to: :find_some
|
10
10
|
|
11
11
|
def initialize(klass, options = {})
|
@@ -21,6 +21,10 @@ module Spyke
|
|
21
21
|
relation
|
22
22
|
end
|
23
23
|
|
24
|
+
def params=(params)
|
25
|
+
@params = params.symbolize_keys
|
26
|
+
end
|
27
|
+
|
24
28
|
def with(uri)
|
25
29
|
if uri.is_a? Symbol
|
26
30
|
@options[:uri] = File.join @options[:uri], uri.to_s
|
data/lib/spyke/version.rb
CHANGED
data/spyke.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency 'addressable', '>= 2.5.2'
|
26
26
|
|
27
27
|
spec.add_development_dependency 'actionpack', '>= 4.0.0'
|
28
|
-
spec.add_development_dependency 'bundler', '
|
28
|
+
spec.add_development_dependency 'bundler', '>= 1.6'
|
29
29
|
spec.add_development_dependency 'coveralls', '~> 0.7'
|
30
30
|
spec.add_development_dependency 'minitest'
|
31
31
|
spec.add_development_dependency 'minitest-line'
|
data/test/associations_test.rb
CHANGED
@@ -241,6 +241,15 @@ module Spyke
|
|
241
241
|
assert_requested endpoint
|
242
242
|
end
|
243
243
|
|
244
|
+
|
245
|
+
def test_using_where_with_custom_uri_including_query_params
|
246
|
+
endpoint = stub_request(:get, 'http://sushi.com/featured_ingredients?filter[group_id]=1&filter[status]=published')
|
247
|
+
|
248
|
+
Group.new(id: 1).featured_ingredients.where(filter: { status: 'published' }).to_a
|
249
|
+
|
250
|
+
assert_requested endpoint
|
251
|
+
end
|
252
|
+
|
244
253
|
def test_path_inferred_from_name
|
245
254
|
endpoint = stub_request(:get, 'http://sushi.com/recipes/1/gallery_images')
|
246
255
|
Recipe.new(id: 1).gallery_images.to_a
|
data/test/path_test.rb
CHANGED
@@ -21,13 +21,13 @@ module Spyke
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_required_variables
|
24
|
-
assert_raises
|
24
|
+
assert_raises InvalidPathError, 'Missing required variables: user_id in /users/:user_id/recipes/(:id)' do
|
25
25
|
Path.new('/users/:user_id/recipes/(:id)', id: 2).to_s
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_mix_of_required_and_unrequired_variables
|
30
|
-
assert_raises
|
30
|
+
assert_raises InvalidPathError, 'Missing required variables: part2, part4' do
|
31
31
|
Path.new('/1/profiles(/:part1)/:part2(/:part3)/:part4.xml').to_s
|
32
32
|
end
|
33
33
|
end
|
data/test/scopes_test.rb
CHANGED
@@ -61,6 +61,14 @@ module Spyke
|
|
61
61
|
assert_requested endpoint
|
62
62
|
end
|
63
63
|
|
64
|
+
def test_where_with_stringified_keys
|
65
|
+
endpoint = stub_request(:get, 'http://sushi.com/recipes/1/image')
|
66
|
+
|
67
|
+
RecipeImage.where("recipe_id" => 1).to_a
|
68
|
+
|
69
|
+
assert_requested endpoint
|
70
|
+
end
|
71
|
+
|
64
72
|
def test_chainable_class_method
|
65
73
|
endpoint = stub_request(:get, 'http://sushi.com/recipes?status=published&per_page=3')
|
66
74
|
|
data/test/support/fixtures.rb
CHANGED
@@ -79,6 +79,7 @@ end
|
|
79
79
|
|
80
80
|
class Group < Spyke::Base
|
81
81
|
has_many :ingredients, uri: nil
|
82
|
+
has_many :featured_ingredients, uri: 'featured_ingredients?filter[group_id]=:group_id', class_name: "Ingredient"
|
82
83
|
accepts_nested_attributes_for :ingredients
|
83
84
|
|
84
85
|
def self.build_default
|
@@ -119,10 +120,10 @@ end
|
|
119
120
|
class OtherRecipe < OtherApi
|
120
121
|
uri 'recipes/(:id)'
|
121
122
|
|
122
|
-
def self.
|
123
|
+
def self.request(method, path, params)
|
123
124
|
super
|
124
125
|
rescue Spyke::ConnectionError
|
125
|
-
Recipe.
|
126
|
+
Recipe.request(method, path, params)
|
126
127
|
end
|
127
128
|
end
|
128
129
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spyke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Balvig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -110,14 +110,14 @@ dependencies:
|
|
110
110
|
name: bundler
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- - "
|
113
|
+
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '1.6'
|
116
116
|
type: :development
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
|
-
- - "
|
120
|
+
- - ">="
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '1.6'
|
123
123
|
- !ruby/object:Gem::Dependency
|