activeresource 5.1.1 → 6.0.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 +4 -4
- data/README.md +324 -0
- data/lib/active_resource/associations/builder/association.rb +1 -2
- data/lib/active_resource/associations.rb +2 -2
- data/lib/active_resource/base.rb +73 -36
- data/lib/active_resource/collection.rb +2 -2
- data/lib/active_resource/connection.rb +8 -5
- data/lib/active_resource/exceptions.rb +13 -3
- data/lib/active_resource/http_mock.rb +5 -7
- data/lib/active_resource/inheriting_hash.rb +15 -0
- data/lib/active_resource/railtie.rb +1 -1
- data/lib/active_resource/reflection.rb +2 -2
- data/lib/active_resource/schema.rb +1 -0
- data/lib/active_resource/singleton.rb +0 -2
- data/lib/active_resource/threadsafe_attributes.rb +0 -1
- data/lib/active_resource/validations.rb +5 -5
- data/lib/active_resource/version.rb +4 -4
- data/lib/active_resource.rb +1 -0
- metadata +32 -28
- data/README.rdoc +0 -285
- data/lib/active_resource/observing.rb +0 -0
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "active_support/core_ext/benchmark"
|
4
|
-
require "active_support/core_ext/uri"
|
5
4
|
require "active_support/core_ext/object/inclusion"
|
6
5
|
require "net/https"
|
7
6
|
require "date"
|
@@ -44,8 +43,8 @@ module ActiveResource
|
|
44
43
|
def site=(site)
|
45
44
|
@site = site.is_a?(URI) ? site : URI.parse(site)
|
46
45
|
@ssl_options ||= {} if @site.is_a?(URI::HTTPS)
|
47
|
-
@user = URI.
|
48
|
-
@password = URI.
|
46
|
+
@user = URI::DEFAULT_PARSER.unescape(@site.user) if @site.user
|
47
|
+
@password = URI::DEFAULT_PARSER.unescape(@site.password) if @site.password
|
49
48
|
end
|
50
49
|
|
51
50
|
# Set the proxy for remote service.
|
@@ -151,8 +150,12 @@ module ActiveResource
|
|
151
150
|
raise(ResourceConflict.new(response))
|
152
151
|
when 410
|
153
152
|
raise(ResourceGone.new(response))
|
153
|
+
when 412
|
154
|
+
raise(PreconditionFailed.new(response))
|
154
155
|
when 422
|
155
156
|
raise(ResourceInvalid.new(response))
|
157
|
+
when 429
|
158
|
+
raise(TooManyRequests.new(response))
|
156
159
|
when 401...500
|
157
160
|
raise(ClientError.new(response))
|
158
161
|
when 500...600
|
@@ -170,8 +173,8 @@ module ActiveResource
|
|
170
173
|
|
171
174
|
def new_http
|
172
175
|
if @proxy
|
173
|
-
user = URI.
|
174
|
-
password = URI.
|
176
|
+
user = URI::DEFAULT_PARSER.unescape(@proxy.user) if @proxy.user
|
177
|
+
password = URI::DEFAULT_PARSER.unescape(@proxy.password) if @proxy.password
|
175
178
|
Net::HTTP.new(@site.host, @site.port, @proxy.host, @proxy.port, user, password)
|
176
179
|
else
|
177
180
|
Net::HTTP.new(@site.host, @site.port)
|
@@ -10,7 +10,9 @@ module ActiveResource
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def to_s
|
13
|
-
message
|
13
|
+
return @message if @message
|
14
|
+
|
15
|
+
message = +"Failed."
|
14
16
|
message << " Response code = #{response.code}." if response.respond_to?(:code)
|
15
17
|
message << " Response message = #{response.message}." if response.respond_to?(:message)
|
16
18
|
message
|
@@ -22,7 +24,7 @@ module ActiveResource
|
|
22
24
|
def initialize(message)
|
23
25
|
@message = message
|
24
26
|
end
|
25
|
-
def to_s; @message ;end
|
27
|
+
def to_s; @message ; end
|
26
28
|
end
|
27
29
|
|
28
30
|
# Raised when a OpenSSL::SSL::SSLError occurs.
|
@@ -30,7 +32,7 @@ module ActiveResource
|
|
30
32
|
def initialize(message)
|
31
33
|
@message = message
|
32
34
|
end
|
33
|
-
def to_s; @message ;end
|
35
|
+
def to_s; @message ; end
|
34
36
|
end
|
35
37
|
|
36
38
|
# 3xx Redirection
|
@@ -71,6 +73,14 @@ module ActiveResource
|
|
71
73
|
class ResourceGone < ClientError # :nodoc:
|
72
74
|
end
|
73
75
|
|
76
|
+
# 412 Precondition Failed
|
77
|
+
class PreconditionFailed < ClientError # :nodoc:
|
78
|
+
end
|
79
|
+
|
80
|
+
# 429 Too Many Requests
|
81
|
+
class TooManyRequests < ClientError # :nodoc:
|
82
|
+
end
|
83
|
+
|
74
84
|
# 5xx Server Error
|
75
85
|
class ServerError < ConnectionError # :nodoc:
|
76
86
|
end
|
@@ -4,7 +4,7 @@ require "active_support/core_ext/kernel/reporting"
|
|
4
4
|
require "active_support/core_ext/object/inclusion"
|
5
5
|
|
6
6
|
module ActiveResource
|
7
|
-
class InvalidRequestError < StandardError; end
|
7
|
+
class InvalidRequestError < StandardError; end # :nodoc:
|
8
8
|
|
9
9
|
# One thing that has always been a pain with remote web services is testing. The HttpMock
|
10
10
|
# class makes it easy to test your Active Resource models by creating a set of mock responses to specific
|
@@ -52,7 +52,7 @@ module ActiveResource
|
|
52
52
|
# end
|
53
53
|
#
|
54
54
|
class HttpMock
|
55
|
-
class Responder
|
55
|
+
class Responder # :nodoc:
|
56
56
|
def initialize(responses)
|
57
57
|
@responses = responses
|
58
58
|
end
|
@@ -74,7 +74,6 @@ module ActiveResource
|
|
74
74
|
end
|
75
75
|
|
76
76
|
private
|
77
|
-
|
78
77
|
def delete_duplicate_responses(request)
|
79
78
|
@responses.delete_if { |r| r[0] == request }
|
80
79
|
end
|
@@ -190,7 +189,7 @@ module ActiveResource
|
|
190
189
|
# ActiveResource::HttpMock.respond_to(pairs, false)
|
191
190
|
# ActiveResource::HttpMock.responses.length #=> 2
|
192
191
|
#
|
193
|
-
def respond_to(*args)
|
192
|
+
def respond_to(*args) # :yields: mock
|
194
193
|
pairs = args.first || {}
|
195
194
|
reset! if args.last.class != FalseClass
|
196
195
|
|
@@ -268,11 +267,11 @@ module ActiveResource
|
|
268
267
|
end
|
269
268
|
end
|
270
269
|
|
271
|
-
def initialize(site)
|
270
|
+
def initialize(site) # :nodoc:
|
272
271
|
@site = site
|
273
272
|
end
|
274
273
|
|
275
|
-
def inspect_responses
|
274
|
+
def inspect_responses # :nodoc:
|
276
275
|
self.class.responses.map { |r| r[0].to_s }.inspect
|
277
276
|
end
|
278
277
|
end
|
@@ -293,7 +292,6 @@ module ActiveResource
|
|
293
292
|
end
|
294
293
|
|
295
294
|
private
|
296
|
-
|
297
295
|
def headers_match?(req)
|
298
296
|
# Ignore format header on equality if it's not defined
|
299
297
|
format_header = ActiveResource::Connection::HTTP_FORMAT_HEADER_NAMES[method]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveResource
|
4
|
+
class InheritingHash < Hash
|
5
|
+
def initialize(parent_hash = {})
|
6
|
+
# Default hash value must be nil, which allows fallback lookup on parent hash
|
7
|
+
super(nil)
|
8
|
+
@parent_hash = parent_hash
|
9
|
+
end
|
10
|
+
|
11
|
+
def [](key)
|
12
|
+
super || @parent_hash[key]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -16,7 +16,7 @@ module ActiveResource
|
|
16
16
|
end
|
17
17
|
|
18
18
|
initializer "active_resource.add_active_job_serializer" do |app|
|
19
|
-
if
|
19
|
+
if app.config.try(:active_job).try(:custom_serializers)
|
20
20
|
require "active_resource/active_job_serializer"
|
21
21
|
app.config.active_job.custom_serializers << ActiveResource::ActiveJobSerializer
|
22
22
|
end
|
@@ -62,12 +62,12 @@ module ActiveResource
|
|
62
62
|
|
63
63
|
# Returns the foreign_key for the macro.
|
64
64
|
def foreign_key
|
65
|
-
@foreign_key ||=
|
65
|
+
@foreign_key ||= derive_foreign_key
|
66
66
|
end
|
67
67
|
|
68
68
|
private
|
69
69
|
def derive_class_name
|
70
|
-
|
70
|
+
options[:class_name] ? options[:class_name].to_s.camelize : name.to_s.classify
|
71
71
|
end
|
72
72
|
|
73
73
|
def derive_foreign_key
|
@@ -47,6 +47,7 @@ module ActiveResource # :nodoc:
|
|
47
47
|
# attr_names.each { |name| attribute(name, 'string', options) }
|
48
48
|
# end
|
49
49
|
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
50
|
+
# frozen_string_literal: true
|
50
51
|
def #{attr_type}(*args)
|
51
52
|
options = args.extract_options!
|
52
53
|
attr_names = args
|
@@ -88,7 +88,6 @@ module ActiveResource
|
|
88
88
|
|
89
89
|
|
90
90
|
protected
|
91
|
-
|
92
91
|
# Update the resource on the remote service
|
93
92
|
def update
|
94
93
|
connection.put(singleton_path(prefix_options), encode, self.class.headers).tap do |response|
|
@@ -105,7 +104,6 @@ module ActiveResource
|
|
105
104
|
end
|
106
105
|
|
107
106
|
private
|
108
|
-
|
109
107
|
def singleton_path(options = nil)
|
110
108
|
self.class.singleton_path(options || prefix_options)
|
111
109
|
end
|
@@ -4,7 +4,7 @@ require "active_support/core_ext/array/wrap"
|
|
4
4
|
require "active_support/core_ext/object/blank"
|
5
5
|
|
6
6
|
module ActiveResource
|
7
|
-
class ResourceInvalid < ClientError
|
7
|
+
class ResourceInvalid < ClientError # :nodoc:
|
8
8
|
end
|
9
9
|
|
10
10
|
# Active Resource validation is reported to and from this object, which is used by Base#save
|
@@ -22,7 +22,7 @@ module ActiveResource
|
|
22
22
|
add humanized_attributes[attr_name], message[(attr_name.size + 1)..-1]
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
add(:base, message) if attr_message.nil?
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -40,11 +40,11 @@ module ActiveResource
|
|
40
40
|
if @base.known_attributes.include?(key)
|
41
41
|
add key, error
|
42
42
|
elsif key == "base"
|
43
|
-
|
43
|
+
add(:base, error)
|
44
44
|
else
|
45
45
|
# reporting an error on an attribute not in attributes
|
46
46
|
# format and add them to base
|
47
|
-
|
47
|
+
add(:base, "#{key.humanize} #{error}")
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -133,7 +133,7 @@ module ActiveResource
|
|
133
133
|
|
134
134
|
# Loads the set of remote errors into the object's Errors based on the
|
135
135
|
# content-type of the error-block received.
|
136
|
-
def load_remote_errors(remote_errors, save_cache = false)
|
136
|
+
def load_remote_errors(remote_errors, save_cache = false) # :nodoc:
|
137
137
|
case self.class.format
|
138
138
|
when ActiveResource::Formats[:xml]
|
139
139
|
errors.from_xml(remote_errors.response.body, save_cache)
|
data/lib/active_resource.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeresource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,40 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '7'
|
19
|
+
version: '6.0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '7'
|
26
|
+
version: '6.0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: activemodel
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - ">="
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '7'
|
33
|
+
version: '6.0'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
38
|
- - ">="
|
48
39
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '7'
|
40
|
+
version: '6.0'
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
42
|
name: activemodel-serializers-xml
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,16 +80,29 @@ dependencies:
|
|
92
80
|
- - ">="
|
93
81
|
- !ruby/object:Gem::Version
|
94
82
|
version: 0.13.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rexml
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
95
97
|
description: REST on Rails. Wrap your RESTful web app with Ruby classes and work with
|
96
98
|
them like Active Record models.
|
97
99
|
email: david@loudthinking.com
|
98
100
|
executables: []
|
99
101
|
extensions: []
|
100
|
-
extra_rdoc_files:
|
101
|
-
- README.rdoc
|
102
|
+
extra_rdoc_files: []
|
102
103
|
files:
|
103
104
|
- MIT-LICENSE
|
104
|
-
- README.
|
105
|
+
- README.md
|
105
106
|
- lib/active_resource.rb
|
106
107
|
- lib/active_resource/active_job_serializer.rb
|
107
108
|
- lib/active_resource/associations.rb
|
@@ -119,8 +120,8 @@ files:
|
|
119
120
|
- lib/active_resource/formats/json_format.rb
|
120
121
|
- lib/active_resource/formats/xml_format.rb
|
121
122
|
- lib/active_resource/http_mock.rb
|
123
|
+
- lib/active_resource/inheriting_hash.rb
|
122
124
|
- lib/active_resource/log_subscriber.rb
|
123
|
-
- lib/active_resource/observing.rb
|
124
125
|
- lib/active_resource/railtie.rb
|
125
126
|
- lib/active_resource/reflection.rb
|
126
127
|
- lib/active_resource/schema.rb
|
@@ -132,25 +133,28 @@ files:
|
|
132
133
|
homepage: http://www.rubyonrails.org
|
133
134
|
licenses:
|
134
135
|
- MIT
|
135
|
-
metadata:
|
136
|
+
metadata:
|
137
|
+
bug_tracker_uri: https://github.com/rails/activeresource/issues
|
138
|
+
changelog_uri: https://github.com/rails/activeresource/releases/tag/v6.0.0
|
139
|
+
documentation_uri: http://rubydoc.info/gems/activeresource
|
140
|
+
source_code_uri: https://github.com/rails/activeresource/tree/v6.0.0
|
141
|
+
rubygems_mfa_required: 'true'
|
136
142
|
post_install_message:
|
137
|
-
rdoc_options:
|
138
|
-
- "--main"
|
139
|
-
- README.rdoc
|
143
|
+
rdoc_options: []
|
140
144
|
require_paths:
|
141
145
|
- lib
|
142
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
143
147
|
requirements:
|
144
148
|
- - ">="
|
145
149
|
- !ruby/object:Gem::Version
|
146
|
-
version: 2.
|
150
|
+
version: 2.6.0
|
147
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
152
|
requirements:
|
149
153
|
- - ">="
|
150
154
|
- !ruby/object:Gem::Version
|
151
155
|
version: '0'
|
152
156
|
requirements: []
|
153
|
-
rubygems_version: 3.2.
|
157
|
+
rubygems_version: 3.2.32
|
154
158
|
signing_key:
|
155
159
|
specification_version: 4
|
156
160
|
summary: REST modeling framework (part of Rails).
|