httparty 0.15.6 → 0.21.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 +5 -5
- data/.editorconfig +18 -0
- data/.github/workflows/ci.yml +26 -0
- data/.gitignore +2 -0
- data/.rubocop_todo.yml +1 -1
- data/Changelog.md +105 -0
- data/Gemfile +7 -0
- data/Guardfile +3 -2
- data/README.md +6 -6
- data/docs/README.md +90 -5
- data/examples/README.md +28 -11
- data/examples/aaws.rb +6 -2
- data/examples/body_stream.rb +14 -0
- data/examples/custom_parsers.rb +4 -0
- data/examples/headers_and_user_agents.rb +7 -3
- data/examples/idn.rb +10 -0
- data/examples/logging.rb +3 -3
- data/examples/microsoft_graph.rb +52 -0
- data/examples/multipart.rb +22 -0
- data/examples/peer_cert.rb +9 -0
- data/examples/stream_download.rb +8 -2
- data/httparty.gemspec +3 -3
- data/lib/httparty/connection_adapter.rb +59 -16
- data/lib/httparty/cookie_hash.rb +10 -8
- data/lib/httparty/decompressor.rb +102 -0
- data/lib/httparty/exceptions.rb +3 -1
- data/lib/httparty/hash_conversions.rb +28 -12
- data/lib/httparty/headers_processor.rb +32 -0
- data/lib/httparty/logger/apache_formatter.rb +31 -6
- data/lib/httparty/logger/curl_formatter.rb +9 -7
- data/lib/httparty/logger/logger.rb +5 -1
- data/lib/httparty/logger/logstash_formatter.rb +61 -0
- data/lib/httparty/module_inheritable_attributes.rb +6 -4
- data/lib/httparty/net_digest_auth.rb +15 -15
- data/lib/httparty/parser.rb +21 -15
- data/lib/httparty/request/body.rb +105 -0
- data/lib/httparty/request/multipart_boundary.rb +13 -0
- data/lib/httparty/request.rb +86 -94
- data/lib/httparty/response/headers.rb +4 -2
- data/lib/httparty/response.rb +59 -8
- data/lib/httparty/response_fragment.rb +21 -0
- data/lib/httparty/text_encoder.rb +72 -0
- data/lib/httparty/utils.rb +13 -0
- data/lib/httparty/version.rb +3 -1
- data/lib/httparty.rb +70 -25
- data/website/css/common.css +1 -1
- metadata +37 -103
- data/.simplecov +0 -1
- data/.travis.yml +0 -9
- data/features/basic_authentication.feature +0 -20
- data/features/command_line.feature +0 -95
- data/features/deals_with_http_error_codes.feature +0 -26
- data/features/digest_authentication.feature +0 -30
- data/features/handles_compressed_responses.feature +0 -27
- data/features/handles_multiple_formats.feature +0 -57
- data/features/steps/env.rb +0 -27
- data/features/steps/httparty_response_steps.rb +0 -56
- data/features/steps/httparty_steps.rb +0 -43
- data/features/steps/mongrel_helper.rb +0 -127
- data/features/steps/remote_service_steps.rb +0 -92
- data/features/supports_read_timeout_option.feature +0 -13
- data/features/supports_redirection.feature +0 -22
- data/features/supports_timeout_option.feature +0 -13
- data/spec/fixtures/delicious.xml +0 -23
- data/spec/fixtures/empty.xml +0 -0
- data/spec/fixtures/google.html +0 -3
- data/spec/fixtures/ssl/generate.sh +0 -29
- data/spec/fixtures/ssl/generated/bogushost.crt +0 -13
- data/spec/fixtures/ssl/generated/ca.crt +0 -16
- data/spec/fixtures/ssl/generated/ca.key +0 -15
- data/spec/fixtures/ssl/generated/selfsigned.crt +0 -14
- data/spec/fixtures/ssl/generated/server.crt +0 -13
- data/spec/fixtures/ssl/generated/server.key +0 -15
- data/spec/fixtures/ssl/openssl-exts.cnf +0 -9
- data/spec/fixtures/twitter.csv +0 -2
- data/spec/fixtures/twitter.json +0 -1
- data/spec/fixtures/twitter.xml +0 -403
- data/spec/fixtures/undefined_method_add_node_for_nil.xml +0 -2
- data/spec/httparty/connection_adapter_spec.rb +0 -495
- data/spec/httparty/cookie_hash_spec.rb +0 -100
- data/spec/httparty/exception_spec.rb +0 -45
- data/spec/httparty/hash_conversions_spec.rb +0 -49
- data/spec/httparty/logger/apache_formatter_spec.rb +0 -41
- data/spec/httparty/logger/curl_formatter_spec.rb +0 -119
- data/spec/httparty/logger/logger_spec.rb +0 -38
- data/spec/httparty/net_digest_auth_spec.rb +0 -268
- data/spec/httparty/parser_spec.rb +0 -190
- data/spec/httparty/request_spec.rb +0 -1279
- data/spec/httparty/response_spec.rb +0 -347
- data/spec/httparty/ssl_spec.rb +0 -74
- data/spec/httparty_spec.rb +0 -878
- data/spec/spec_helper.rb +0 -51
- data/spec/support/ssl_test_helper.rb +0 -47
- data/spec/support/ssl_test_server.rb +0 -80
- data/spec/support/stub_response.rb +0 -49
data/lib/httparty/response.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module HTTParty
|
2
4
|
class Response < Object
|
3
5
|
def self.underscore(string)
|
4
6
|
string.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z])([A-Z])/, '\1_\2').downcase
|
5
7
|
end
|
6
8
|
|
9
|
+
def self._load(data)
|
10
|
+
req, resp, parsed_resp, resp_body = Marshal.load(data)
|
11
|
+
|
12
|
+
new(req, resp, -> { parsed_resp }, body: resp_body)
|
13
|
+
end
|
14
|
+
|
7
15
|
attr_reader :request, :response, :body, :headers
|
8
16
|
|
9
17
|
def initialize(request, response, parsed_block, options = {})
|
@@ -14,7 +22,11 @@ module HTTParty
|
|
14
22
|
@headers = Headers.new(response.to_hash)
|
15
23
|
|
16
24
|
if request.options[:logger]
|
17
|
-
logger = ::HTTParty::Logger.build(
|
25
|
+
logger = ::HTTParty::Logger.build(
|
26
|
+
request.options[:logger],
|
27
|
+
request.options[:log_level],
|
28
|
+
request.options[:log_format]
|
29
|
+
)
|
18
30
|
logger.format(request, self)
|
19
31
|
end
|
20
32
|
|
@@ -29,20 +41,24 @@ module HTTParty
|
|
29
41
|
response.code.to_i
|
30
42
|
end
|
31
43
|
|
44
|
+
def http_version
|
45
|
+
response.http_version
|
46
|
+
end
|
47
|
+
|
32
48
|
def tap
|
33
49
|
yield self
|
34
50
|
self
|
35
51
|
end
|
36
52
|
|
37
53
|
def inspect
|
38
|
-
inspect_id = ::Kernel::format
|
54
|
+
inspect_id = ::Kernel::format '%x', (object_id * 2)
|
39
55
|
%(#<#{self.class}:0x#{inspect_id} parsed_response=#{parsed_response.inspect}, @response=#{response.inspect}, @headers=#{headers.inspect}>)
|
40
56
|
end
|
41
57
|
|
42
58
|
CODES_TO_OBJ = ::Net::HTTPResponse::CODE_CLASS_TO_OBJ.merge ::Net::HTTPResponse::CODE_TO_OBJ
|
43
59
|
|
44
60
|
CODES_TO_OBJ.each do |response_code, klass|
|
45
|
-
name = klass.name.sub(
|
61
|
+
name = klass.name.sub('Net::HTTP', '')
|
46
62
|
name = "#{underscore(name)}?".to_sym
|
47
63
|
|
48
64
|
define_method(name) do
|
@@ -51,28 +67,46 @@ module HTTParty
|
|
51
67
|
end
|
52
68
|
|
53
69
|
# Support old multiple_choice? method from pre 2.0.0 era.
|
54
|
-
if ::RUBY_VERSION >=
|
70
|
+
if ::RUBY_VERSION >= '2.0.0' && ::RUBY_PLATFORM != 'java'
|
55
71
|
alias_method :multiple_choice?, :multiple_choices?
|
56
72
|
end
|
57
73
|
|
74
|
+
# Support old status codes method from pre 2.6.0 era.
|
75
|
+
if ::RUBY_VERSION >= '2.6.0' && ::RUBY_PLATFORM != 'java'
|
76
|
+
alias_method :gateway_time_out?, :gateway_timeout?
|
77
|
+
alias_method :request_entity_too_large?, :payload_too_large?
|
78
|
+
alias_method :request_time_out?, :request_timeout?
|
79
|
+
alias_method :request_uri_too_long?, :uri_too_long?
|
80
|
+
alias_method :requested_range_not_satisfiable?, :range_not_satisfiable?
|
81
|
+
end
|
82
|
+
|
58
83
|
def nil?
|
84
|
+
warn_about_nil_deprecation
|
59
85
|
response.nil? || response.body.nil? || response.body.empty?
|
60
86
|
end
|
61
87
|
|
62
|
-
def to_s
|
88
|
+
def to_s
|
63
89
|
if !response.nil? && !response.body.nil? && response.body.respond_to?(:to_s)
|
64
90
|
response.body.to_s
|
65
|
-
else
|
91
|
+
else
|
66
92
|
inspect
|
67
93
|
end
|
68
94
|
end
|
69
95
|
|
96
|
+
def pretty_print(pp)
|
97
|
+
if !parsed_response.nil? && parsed_response.respond_to?(:pretty_print)
|
98
|
+
parsed_response.pretty_print(pp)
|
99
|
+
else
|
100
|
+
super
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
70
104
|
def display(port=$>)
|
71
105
|
if !parsed_response.nil? && parsed_response.respond_to?(:display)
|
72
106
|
parsed_response.display(port)
|
73
107
|
elsif !response.nil? && !response.body.nil? && response.body.respond_to?(:display)
|
74
108
|
response.body.display(port)
|
75
|
-
else
|
109
|
+
else
|
76
110
|
port.write(inspect)
|
77
111
|
end
|
78
112
|
end
|
@@ -81,7 +115,11 @@ module HTTParty
|
|
81
115
|
return true if super
|
82
116
|
parsed_response.respond_to?(name) || response.respond_to?(name)
|
83
117
|
end
|
84
|
-
|
118
|
+
|
119
|
+
def _dump(_level)
|
120
|
+
Marshal.dump([request, response, parsed_response, body])
|
121
|
+
end
|
122
|
+
|
85
123
|
protected
|
86
124
|
|
87
125
|
def method_missing(name, *args, &block)
|
@@ -99,6 +137,19 @@ module HTTParty
|
|
99
137
|
::Kernel.raise ::HTTParty::ResponseError.new(@response), "Code #{code} - #{body}"
|
100
138
|
end
|
101
139
|
end
|
140
|
+
|
141
|
+
private
|
142
|
+
|
143
|
+
def warn_about_nil_deprecation
|
144
|
+
trace_line = caller.reject { |line| line.include?('httparty') }.first
|
145
|
+
warning = "[DEPRECATION] HTTParty will no longer override `response#nil?`. " \
|
146
|
+
"This functionality will be removed in future versions. " \
|
147
|
+
"Please, add explicit check `response.body.nil? || response.body.empty?`. " \
|
148
|
+
"For more info refer to: https://github.com/jnunemaker/httparty/issues/568\n" \
|
149
|
+
"#{trace_line}"
|
150
|
+
|
151
|
+
warn(warning)
|
152
|
+
end
|
102
153
|
end
|
103
154
|
end
|
104
155
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'delegate'
|
4
|
+
|
5
|
+
module HTTParty
|
6
|
+
# Allow access to http_response and code by delegation on fragment
|
7
|
+
class ResponseFragment < SimpleDelegator
|
8
|
+
attr_reader :http_response, :connection
|
9
|
+
|
10
|
+
def code
|
11
|
+
@http_response.code.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(fragment, http_response, connection)
|
15
|
+
@fragment = fragment
|
16
|
+
@http_response = http_response
|
17
|
+
@connection = connection
|
18
|
+
super fragment
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module HTTParty
|
4
|
+
class TextEncoder
|
5
|
+
attr_reader :text, :content_type, :assume_utf16_is_big_endian
|
6
|
+
|
7
|
+
def initialize(text, assume_utf16_is_big_endian: true, content_type: nil)
|
8
|
+
@text = +text
|
9
|
+
@content_type = content_type
|
10
|
+
@assume_utf16_is_big_endian = assume_utf16_is_big_endian
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
if can_encode?
|
15
|
+
encoded_text
|
16
|
+
else
|
17
|
+
text
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def can_encode?
|
24
|
+
''.respond_to?(:encoding) && charset
|
25
|
+
end
|
26
|
+
|
27
|
+
def encoded_text
|
28
|
+
if 'utf-16'.casecmp(charset) == 0
|
29
|
+
encode_utf_16
|
30
|
+
else
|
31
|
+
encode_with_ruby_encoding
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def encode_utf_16
|
36
|
+
if text.bytesize >= 2
|
37
|
+
if text.getbyte(0) == 0xFF && text.getbyte(1) == 0xFE
|
38
|
+
return text.force_encoding('UTF-16LE')
|
39
|
+
elsif text.getbyte(0) == 0xFE && text.getbyte(1) == 0xFF
|
40
|
+
return text.force_encoding('UTF-16BE')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
if assume_utf16_is_big_endian # option
|
45
|
+
text.force_encoding('UTF-16BE')
|
46
|
+
else
|
47
|
+
text.force_encoding('UTF-16LE')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def encode_with_ruby_encoding
|
52
|
+
# NOTE: This will raise an argument error if the
|
53
|
+
# charset does not exist
|
54
|
+
encoding = Encoding.find(charset)
|
55
|
+
text.force_encoding(encoding.to_s)
|
56
|
+
rescue ArgumentError
|
57
|
+
text
|
58
|
+
end
|
59
|
+
|
60
|
+
def charset
|
61
|
+
return nil if content_type.nil?
|
62
|
+
|
63
|
+
if (matchdata = content_type.match(/;\s*charset\s*=\s*([^=,;"\s]+)/i))
|
64
|
+
return matchdata.captures.first
|
65
|
+
end
|
66
|
+
|
67
|
+
if (matchdata = content_type.match(/;\s*charset\s*=\s*"((\\.|[^\\"])+)"/i))
|
68
|
+
return matchdata.captures.first.gsub(/\\(.)/, '\1')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module HTTParty
|
4
|
+
module Utils
|
5
|
+
def self.stringify_keys(hash)
|
6
|
+
return hash.transform_keys(&:to_s) if hash.respond_to?(:transform_keys)
|
7
|
+
|
8
|
+
hash.each_with_object({}) do |(key, value), new_hash|
|
9
|
+
new_hash[key.to_s] = value
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/httparty/version.rb
CHANGED
data/lib/httparty.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
require 'net/http'
|
3
|
-
require 'net/https'
|
4
5
|
require 'uri'
|
5
6
|
require 'zlib'
|
6
7
|
require 'multi_xml'
|
8
|
+
require 'mini_mime'
|
7
9
|
require 'json'
|
8
10
|
require 'csv'
|
9
11
|
|
@@ -13,6 +15,11 @@ require 'httparty/net_digest_auth'
|
|
13
15
|
require 'httparty/version'
|
14
16
|
require 'httparty/connection_adapter'
|
15
17
|
require 'httparty/logger/logger'
|
18
|
+
require 'httparty/request/body'
|
19
|
+
require 'httparty/response_fragment'
|
20
|
+
require 'httparty/decompressor'
|
21
|
+
require 'httparty/text_encoder'
|
22
|
+
require 'httparty/headers_processor'
|
16
23
|
|
17
24
|
# @see HTTParty::ClassMethods
|
18
25
|
module HTTParty
|
@@ -21,8 +28,8 @@ module HTTParty
|
|
21
28
|
base.send :include, ModuleInheritableAttributes
|
22
29
|
base.send(:mattr_inheritable, :default_options)
|
23
30
|
base.send(:mattr_inheritable, :default_cookies)
|
24
|
-
base.instance_variable_set(
|
25
|
-
base.instance_variable_set(
|
31
|
+
base.instance_variable_set(:@default_options, {})
|
32
|
+
base.instance_variable_set(:@default_cookies, CookieHash.new)
|
26
33
|
end
|
27
34
|
|
28
35
|
# == Common Request Options
|
@@ -36,10 +43,11 @@ module HTTParty
|
|
36
43
|
# [:+limit+:] Maximum number of redirects to follow. Takes precedences over :+no_follow+.
|
37
44
|
# [:+query+:] Query string, or an object that responds to #to_hash representing it. Normalized according to the same rules as :+body+. If you specify this on a POST, you must use an object which responds to #to_hash. See also HTTParty::ClassMethods.default_params.
|
38
45
|
# [:+timeout+:] Timeout for opening connection and reading data.
|
39
|
-
# [:+local_host
|
40
|
-
# [:+local_port
|
41
|
-
# [:+body_stream
|
42
|
-
# [:+stream_body
|
46
|
+
# [:+local_host+:] Local address to bind to before connecting.
|
47
|
+
# [:+local_port+:] Local port to bind to before connecting.
|
48
|
+
# [:+body_stream+:] Allow streaming to a REST server to specify a body_stream.
|
49
|
+
# [:+stream_body+:] Allow for streaming large files without loading them into memory.
|
50
|
+
# [:+multipart+:] Force content-type to be multipart
|
43
51
|
#
|
44
52
|
# There are also another set of options with names corresponding to various class methods. The methods in question are those that let you set a class-wide default, and the options override the defaults on a request-by-request basis. Those options are:
|
45
53
|
# * :+base_uri+: see HTTParty::ClassMethods.base_uri.
|
@@ -168,9 +176,9 @@ module HTTParty
|
|
168
176
|
# include HTTParty
|
169
177
|
# default_timeout 10
|
170
178
|
# end
|
171
|
-
def default_timeout(
|
172
|
-
|
173
|
-
default_options[:timeout] =
|
179
|
+
def default_timeout(value)
|
180
|
+
validate_timeout_argument(__method__, value)
|
181
|
+
default_options[:timeout] = value
|
174
182
|
end
|
175
183
|
|
176
184
|
# Allows setting a default open_timeout for all HTTP calls in seconds
|
@@ -179,9 +187,9 @@ module HTTParty
|
|
179
187
|
# include HTTParty
|
180
188
|
# open_timeout 10
|
181
189
|
# end
|
182
|
-
def open_timeout(
|
183
|
-
|
184
|
-
default_options[:open_timeout] =
|
190
|
+
def open_timeout(value)
|
191
|
+
validate_timeout_argument(__method__, value)
|
192
|
+
default_options[:open_timeout] = value
|
185
193
|
end
|
186
194
|
|
187
195
|
# Allows setting a default read_timeout for all HTTP calls in seconds
|
@@ -190,11 +198,24 @@ module HTTParty
|
|
190
198
|
# include HTTParty
|
191
199
|
# read_timeout 10
|
192
200
|
# end
|
193
|
-
def read_timeout(
|
194
|
-
|
195
|
-
default_options[:read_timeout] =
|
201
|
+
def read_timeout(value)
|
202
|
+
validate_timeout_argument(__method__, value)
|
203
|
+
default_options[:read_timeout] = value
|
204
|
+
end
|
205
|
+
|
206
|
+
# Allows setting a default write_timeout for all HTTP calls in seconds
|
207
|
+
# Supported by Ruby > 2.6.0
|
208
|
+
#
|
209
|
+
# class Foo
|
210
|
+
# include HTTParty
|
211
|
+
# write_timeout 10
|
212
|
+
# end
|
213
|
+
def write_timeout(value)
|
214
|
+
validate_timeout_argument(__method__, value)
|
215
|
+
default_options[:write_timeout] = value
|
196
216
|
end
|
197
217
|
|
218
|
+
|
198
219
|
# Set an output stream for debugging, defaults to $stderr.
|
199
220
|
# The output stream is passed on to Net::HTTP#set_debug_output.
|
200
221
|
#
|
@@ -380,6 +401,22 @@ module HTTParty
|
|
380
401
|
default_options[:ssl_version] = version
|
381
402
|
end
|
382
403
|
|
404
|
+
# Deactivate automatic decompression of the response body.
|
405
|
+
# This will require you to explicitly handle body decompression
|
406
|
+
# by inspecting the Content-Encoding response header.
|
407
|
+
#
|
408
|
+
# Refer to docs/README.md "HTTP Compression" section for
|
409
|
+
# further details.
|
410
|
+
#
|
411
|
+
# @example
|
412
|
+
# class Foo
|
413
|
+
# include HTTParty
|
414
|
+
# skip_decompression
|
415
|
+
# end
|
416
|
+
def skip_decompression(value = true)
|
417
|
+
default_options[:skip_decompression] = !!value
|
418
|
+
end
|
419
|
+
|
383
420
|
# Allows setting of SSL ciphers to use. This only works in Ruby 1.9+.
|
384
421
|
# You can get a list of valid specific ciphers from OpenSSL::Cipher.ciphers.
|
385
422
|
# You also can specify a cipher suite here, listed here at openssl.org:
|
@@ -546,10 +583,22 @@ module HTTParty
|
|
546
583
|
perform_request Net::HTTP::Mkcol, path, options, &block
|
547
584
|
end
|
548
585
|
|
586
|
+
def lock(path, options = {}, &block)
|
587
|
+
perform_request Net::HTTP::Lock, path, options, &block
|
588
|
+
end
|
589
|
+
|
590
|
+
def unlock(path, options = {}, &block)
|
591
|
+
perform_request Net::HTTP::Unlock, path, options, &block
|
592
|
+
end
|
593
|
+
|
549
594
|
attr_reader :default_options
|
550
595
|
|
551
596
|
private
|
552
597
|
|
598
|
+
def validate_timeout_argument(timeout_type, value)
|
599
|
+
raise ArgumentError, "#{ timeout_type } must be an integer or float" unless value && (value.is_a?(Integer) || value.is_a?(Float))
|
600
|
+
end
|
601
|
+
|
553
602
|
def ensure_method_maintained_across_redirects(options)
|
554
603
|
unless options.key?(:maintain_method_across_redirects)
|
555
604
|
options[:maintain_method_across_redirects] = true
|
@@ -558,26 +607,21 @@ module HTTParty
|
|
558
607
|
|
559
608
|
def perform_request(http_method, path, options, &block) #:nodoc:
|
560
609
|
options = ModuleInheritableAttributes.hash_deep_dup(default_options).merge(options)
|
561
|
-
|
610
|
+
HeadersProcessor.new(headers, options).call
|
562
611
|
process_cookies(options)
|
563
612
|
Request.new(http_method, path, options).perform(&block)
|
564
613
|
end
|
565
614
|
|
566
|
-
def process_headers(options)
|
567
|
-
if options[:headers] && headers.any?
|
568
|
-
options[:headers] = headers.merge(options[:headers])
|
569
|
-
end
|
570
|
-
end
|
571
|
-
|
572
615
|
def process_cookies(options) #:nodoc:
|
573
616
|
return unless options[:cookies] || default_cookies.any?
|
574
617
|
options[:headers] ||= headers.dup
|
575
|
-
options[:headers][
|
618
|
+
options[:headers]['cookie'] = cookies.merge(options.delete(:cookies) || {}).to_cookie_string
|
576
619
|
end
|
577
620
|
|
578
621
|
def validate_format
|
579
622
|
if format && parser.respond_to?(:supports_format?) && !parser.supports_format?(format)
|
580
|
-
|
623
|
+
supported_format_names = parser.supported_formats.map(&:to_s).sort.join(', ')
|
624
|
+
raise UnsupportedFormat, "'#{format.inspect}' Must be one of: #{supported_format_names}"
|
581
625
|
end
|
582
626
|
end
|
583
627
|
end
|
@@ -635,6 +679,7 @@ module HTTParty
|
|
635
679
|
end
|
636
680
|
|
637
681
|
require 'httparty/hash_conversions'
|
682
|
+
require 'httparty/utils'
|
638
683
|
require 'httparty/exceptions'
|
639
684
|
require 'httparty/parser'
|
640
685
|
require 'httparty/request'
|
data/website/css/common.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
|
9
9
|
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}/*ol,ul {list-style:none;}*/caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
|
10
10
|
/* end of yahoo reset and fonts */
|
11
|
-
|
11
|
+
|
12
12
|
body {color:#333; background:#4b1a1a; line-height:1.3;}
|
13
13
|
p {margin:0 0 20px;}
|
14
14
|
a {color:#4b1a1a;}
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httparty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
- Sandro Turriate
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-12-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_xml
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 0.5.2
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: mini_mime
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.0.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.0.0
|
28
42
|
description: Makes http fun! Also, makes consuming restful web services dead easy.
|
29
43
|
email:
|
30
44
|
- nunemaker@gmail.com
|
@@ -33,11 +47,11 @@ executables:
|
|
33
47
|
extensions: []
|
34
48
|
extra_rdoc_files: []
|
35
49
|
files:
|
50
|
+
- ".editorconfig"
|
51
|
+
- ".github/workflows/ci.yml"
|
36
52
|
- ".gitignore"
|
37
53
|
- ".rubocop.yml"
|
38
54
|
- ".rubocop_todo.yml"
|
39
|
-
- ".simplecov"
|
40
|
-
- ".travis.yml"
|
41
55
|
- CONTRIBUTING.md
|
42
56
|
- Changelog.md
|
43
57
|
- Gemfile
|
@@ -51,13 +65,18 @@ files:
|
|
51
65
|
- examples/README.md
|
52
66
|
- examples/aaws.rb
|
53
67
|
- examples/basic.rb
|
68
|
+
- examples/body_stream.rb
|
54
69
|
- examples/crack.rb
|
55
70
|
- examples/custom_parsers.rb
|
56
71
|
- examples/delicious.rb
|
57
72
|
- examples/google.rb
|
58
73
|
- examples/headers_and_user_agents.rb
|
74
|
+
- examples/idn.rb
|
59
75
|
- examples/logging.rb
|
76
|
+
- examples/microsoft_graph.rb
|
77
|
+
- examples/multipart.rb
|
60
78
|
- examples/nokogiri_html_parser.rb
|
79
|
+
- examples/peer_cert.rb
|
61
80
|
- examples/rescue_json.rb
|
62
81
|
- examples/rubyurl.rb
|
63
82
|
- examples/stackexchange.rb
|
@@ -65,72 +84,34 @@ files:
|
|
65
84
|
- examples/tripit_sign_in.rb
|
66
85
|
- examples/twitter.rb
|
67
86
|
- examples/whoismyrep.rb
|
68
|
-
- features/basic_authentication.feature
|
69
|
-
- features/command_line.feature
|
70
|
-
- features/deals_with_http_error_codes.feature
|
71
|
-
- features/digest_authentication.feature
|
72
|
-
- features/handles_compressed_responses.feature
|
73
|
-
- features/handles_multiple_formats.feature
|
74
|
-
- features/steps/env.rb
|
75
|
-
- features/steps/httparty_response_steps.rb
|
76
|
-
- features/steps/httparty_steps.rb
|
77
|
-
- features/steps/mongrel_helper.rb
|
78
|
-
- features/steps/remote_service_steps.rb
|
79
|
-
- features/supports_read_timeout_option.feature
|
80
|
-
- features/supports_redirection.feature
|
81
|
-
- features/supports_timeout_option.feature
|
82
87
|
- httparty.gemspec
|
83
88
|
- lib/httparty.rb
|
84
89
|
- lib/httparty/connection_adapter.rb
|
85
90
|
- lib/httparty/cookie_hash.rb
|
91
|
+
- lib/httparty/decompressor.rb
|
86
92
|
- lib/httparty/exceptions.rb
|
87
93
|
- lib/httparty/hash_conversions.rb
|
94
|
+
- lib/httparty/headers_processor.rb
|
88
95
|
- lib/httparty/logger/apache_formatter.rb
|
89
96
|
- lib/httparty/logger/curl_formatter.rb
|
90
97
|
- lib/httparty/logger/logger.rb
|
98
|
+
- lib/httparty/logger/logstash_formatter.rb
|
91
99
|
- lib/httparty/module_inheritable_attributes.rb
|
92
100
|
- lib/httparty/net_digest_auth.rb
|
93
101
|
- lib/httparty/parser.rb
|
94
102
|
- lib/httparty/request.rb
|
103
|
+
- lib/httparty/request/body.rb
|
104
|
+
- lib/httparty/request/multipart_boundary.rb
|
95
105
|
- lib/httparty/response.rb
|
96
106
|
- lib/httparty/response/headers.rb
|
107
|
+
- lib/httparty/response_fragment.rb
|
108
|
+
- lib/httparty/text_encoder.rb
|
109
|
+
- lib/httparty/utils.rb
|
97
110
|
- lib/httparty/version.rb
|
98
111
|
- script/release
|
99
|
-
- spec/fixtures/delicious.xml
|
100
|
-
- spec/fixtures/empty.xml
|
101
|
-
- spec/fixtures/google.html
|
102
|
-
- spec/fixtures/ssl/generate.sh
|
103
|
-
- spec/fixtures/ssl/generated/bogushost.crt
|
104
|
-
- spec/fixtures/ssl/generated/ca.crt
|
105
|
-
- spec/fixtures/ssl/generated/ca.key
|
106
|
-
- spec/fixtures/ssl/generated/selfsigned.crt
|
107
|
-
- spec/fixtures/ssl/generated/server.crt
|
108
|
-
- spec/fixtures/ssl/generated/server.key
|
109
|
-
- spec/fixtures/ssl/openssl-exts.cnf
|
110
|
-
- spec/fixtures/twitter.csv
|
111
|
-
- spec/fixtures/twitter.json
|
112
|
-
- spec/fixtures/twitter.xml
|
113
|
-
- spec/fixtures/undefined_method_add_node_for_nil.xml
|
114
|
-
- spec/httparty/connection_adapter_spec.rb
|
115
|
-
- spec/httparty/cookie_hash_spec.rb
|
116
|
-
- spec/httparty/exception_spec.rb
|
117
|
-
- spec/httparty/hash_conversions_spec.rb
|
118
|
-
- spec/httparty/logger/apache_formatter_spec.rb
|
119
|
-
- spec/httparty/logger/curl_formatter_spec.rb
|
120
|
-
- spec/httparty/logger/logger_spec.rb
|
121
|
-
- spec/httparty/net_digest_auth_spec.rb
|
122
|
-
- spec/httparty/parser_spec.rb
|
123
|
-
- spec/httparty/request_spec.rb
|
124
|
-
- spec/httparty/response_spec.rb
|
125
|
-
- spec/httparty/ssl_spec.rb
|
126
|
-
- spec/httparty_spec.rb
|
127
|
-
- spec/spec_helper.rb
|
128
|
-
- spec/support/ssl_test_helper.rb
|
129
|
-
- spec/support/ssl_test_server.rb
|
130
|
-
- spec/support/stub_response.rb
|
131
112
|
- website/css/common.css
|
132
113
|
- website/index.html
|
133
|
-
homepage:
|
114
|
+
homepage: https://github.com/jnunemaker/httparty
|
134
115
|
licenses:
|
135
116
|
- MIT
|
136
117
|
metadata: {}
|
@@ -142,62 +123,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
123
|
requirements:
|
143
124
|
- - ">="
|
144
125
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.
|
126
|
+
version: 2.3.0
|
146
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
128
|
requirements:
|
148
129
|
- - ">="
|
149
130
|
- !ruby/object:Gem::Version
|
150
131
|
version: '0'
|
151
132
|
requirements: []
|
152
|
-
|
153
|
-
|
154
|
-
signing_key:
|
133
|
+
rubygems_version: 3.3.7
|
134
|
+
signing_key:
|
155
135
|
specification_version: 4
|
156
136
|
summary: Makes http fun! Also, makes consuming restful web services dead easy.
|
157
|
-
test_files:
|
158
|
-
- features/basic_authentication.feature
|
159
|
-
- features/command_line.feature
|
160
|
-
- features/deals_with_http_error_codes.feature
|
161
|
-
- features/digest_authentication.feature
|
162
|
-
- features/handles_compressed_responses.feature
|
163
|
-
- features/handles_multiple_formats.feature
|
164
|
-
- features/steps/env.rb
|
165
|
-
- features/steps/httparty_response_steps.rb
|
166
|
-
- features/steps/httparty_steps.rb
|
167
|
-
- features/steps/mongrel_helper.rb
|
168
|
-
- features/steps/remote_service_steps.rb
|
169
|
-
- features/supports_read_timeout_option.feature
|
170
|
-
- features/supports_redirection.feature
|
171
|
-
- features/supports_timeout_option.feature
|
172
|
-
- spec/fixtures/delicious.xml
|
173
|
-
- spec/fixtures/empty.xml
|
174
|
-
- spec/fixtures/google.html
|
175
|
-
- spec/fixtures/ssl/generate.sh
|
176
|
-
- spec/fixtures/ssl/generated/bogushost.crt
|
177
|
-
- spec/fixtures/ssl/generated/ca.crt
|
178
|
-
- spec/fixtures/ssl/generated/ca.key
|
179
|
-
- spec/fixtures/ssl/generated/selfsigned.crt
|
180
|
-
- spec/fixtures/ssl/generated/server.crt
|
181
|
-
- spec/fixtures/ssl/generated/server.key
|
182
|
-
- spec/fixtures/ssl/openssl-exts.cnf
|
183
|
-
- spec/fixtures/twitter.csv
|
184
|
-
- spec/fixtures/twitter.json
|
185
|
-
- spec/fixtures/twitter.xml
|
186
|
-
- spec/fixtures/undefined_method_add_node_for_nil.xml
|
187
|
-
- spec/httparty/connection_adapter_spec.rb
|
188
|
-
- spec/httparty/cookie_hash_spec.rb
|
189
|
-
- spec/httparty/exception_spec.rb
|
190
|
-
- spec/httparty/hash_conversions_spec.rb
|
191
|
-
- spec/httparty/logger/apache_formatter_spec.rb
|
192
|
-
- spec/httparty/logger/curl_formatter_spec.rb
|
193
|
-
- spec/httparty/logger/logger_spec.rb
|
194
|
-
- spec/httparty/net_digest_auth_spec.rb
|
195
|
-
- spec/httparty/parser_spec.rb
|
196
|
-
- spec/httparty/request_spec.rb
|
197
|
-
- spec/httparty/response_spec.rb
|
198
|
-
- spec/httparty/ssl_spec.rb
|
199
|
-
- spec/httparty_spec.rb
|
200
|
-
- spec/spec_helper.rb
|
201
|
-
- spec/support/ssl_test_helper.rb
|
202
|
-
- spec/support/ssl_test_server.rb
|
203
|
-
- spec/support/stub_response.rb
|
137
|
+
test_files: []
|
data/.simplecov
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
SimpleCov.start "test_frameworks"
|