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.
@@ -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.parser.unescape(@site.user) if @site.user
48
- @password = URI.parser.unescape(@site.password) if @site.password
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.parser.unescape(@proxy.user) if @proxy.user
174
- password = URI.parser.unescape(@proxy.password) if @proxy.password
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 = "Failed.".dup
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 #:nodoc:
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 #:nodoc:
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) #:yields: mock
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) #:nodoc:
270
+ def initialize(site) # :nodoc:
272
271
  @site = site
273
272
  end
274
273
 
275
- def inspect_responses #:nodoc:
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 defined? app.config.active_job.custom_serializers
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 ||= self.options[:foreign_key] || "#{self.name.to_s.downcase}_id"
65
+ @foreign_key ||= derive_foreign_key
66
66
  end
67
67
 
68
68
  private
69
69
  def derive_class_name
70
- (options[:class_name] ? options[:class_name].to_s.camelize : name.to_s.classify)
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
@@ -28,7 +28,6 @@ module ThreadsafeAttributes
28
28
  end
29
29
 
30
30
  private
31
-
32
31
  def get_threadsafe_attribute(name, main_thread)
33
32
  if threadsafe_attribute_defined_by_thread?(name, Thread.current)
34
33
  get_threadsafe_attribute_by_thread(name, Thread.current)
@@ -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 #:nodoc:
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
- self[:base] << message if attr_message.nil?
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
- self[:base] << error
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
- self[:base] << "#{key.humanize} #{error}"
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) #:nodoc:
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)
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveResource
4
- module VERSION #:nodoc:
5
- MAJOR = 5
6
- MINOR = 1
7
- TINY = 1
4
+ module VERSION # :nodoc:
5
+ MAJOR = 6
6
+ MINOR = 0
7
+ TINY = 0
8
8
  PRE = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
@@ -39,6 +39,7 @@ module ActiveResource
39
39
  autoload :HttpMock
40
40
  autoload :Schema
41
41
  autoload :Singleton
42
+ autoload :InheritingHash
42
43
  autoload :Validations
43
44
  autoload :Collection
44
45
  end
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: 5.1.1
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: 2020-05-05 00:00:00.000000000 Z
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: '5.0'
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: '5.0'
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: '5.0'
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: '5.0'
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.rdoc
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.2.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.0.pre1
157
+ rubygems_version: 3.2.32
154
158
  signing_key:
155
159
  specification_version: 4
156
160
  summary: REST modeling framework (part of Rails).