httparty 0.20.0 → 0.22.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/.github/dependabot.yml +6 -0
 - data/.github/workflows/ci.yml +5 -5
 - data/.gitignore +2 -1
 - data/Changelog.md +388 -315
 - data/Gemfile +2 -0
 - data/Guardfile +3 -2
 - data/README.md +1 -1
 - data/docs/README.md +25 -5
 - data/httparty.gemspec +3 -2
 - data/lib/httparty/connection_adapter.rb +5 -24
 - data/lib/httparty/decompressor.rb +11 -1
 - data/lib/httparty/logger/curl_formatter.rb +1 -1
 - data/lib/httparty/logger/logstash_formatter.rb +1 -0
 - data/lib/httparty/module_inheritable_attributes.rb +3 -5
 - data/lib/httparty/parser.rb +3 -0
 - data/lib/httparty/request/body.rb +11 -3
 - data/lib/httparty/request.rb +41 -22
 - data/lib/httparty/response.rb +3 -3
 - data/lib/httparty/text_encoder.rb +1 -1
 - data/lib/httparty/version.rb +1 -1
 - data/lib/httparty.rb +13 -11
 - data/script/release +4 -4
 - metadata +26 -12
 - data/.simplecov +0 -1
 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -3,6 +3,7 @@ gemspec 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            gem 'rake'
         
     | 
| 
       5 
5 
     | 
    
         
             
            gem 'mongrel',  '1.2.0.pre2'
         
     | 
| 
      
 6 
     | 
    
         
            +
            gem 'json'
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            group :development do
         
     | 
| 
       8 
9 
     | 
    
         
             
              gem 'guard'
         
     | 
| 
         @@ -11,6 +12,7 @@ group :development do 
     | 
|
| 
       11 
12 
     | 
    
         
             
            end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
            group :test do
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'rexml'
         
     | 
| 
       14 
16 
     | 
    
         
             
              gem 'rspec',    '~> 3.4'
         
     | 
| 
       15 
17 
     | 
    
         
             
              gem 'simplecov', require: false
         
     | 
| 
       16 
18 
     | 
    
         
             
              gem 'aruba'
         
     | 
    
        data/Guardfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # httparty
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            [](https://github.com/jnunemaker/httparty/actions/workflows/ci.yml)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Makes http fun again!  Ain't no party like a httparty, because a httparty don't stop.
         
     | 
| 
       6 
6 
     | 
    
         | 
    
        data/docs/README.md
    CHANGED
    
    | 
         @@ -14,6 +14,20 @@ response = HTTParty.get('http://example.com', format: :plain) 
     | 
|
| 
       14 
14 
     | 
    
         
             
            JSON.parse response, symbolize_names: true
         
     | 
| 
       15 
15 
     | 
    
         
             
            ```
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
            ## Posting JSON
         
     | 
| 
      
 18 
     | 
    
         
            +
            When using Content Type `application/json` with `POST`, `PUT` or `PATCH` requests, the body should be a string of valid JSON:
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 21 
     | 
    
         
            +
            # With written JSON
         
     | 
| 
      
 22 
     | 
    
         
            +
            HTTParty.post('http://example.com', body: "{\"foo\":\"bar\"}", headers: { 'Content-Type' => 'application/json' })
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # Using JSON.generate
         
     | 
| 
      
 25 
     | 
    
         
            +
            HTTParty.post('http://example.com', body: JSON.generate({ foo: 'bar' }), headers: { 'Content-Type' => 'application/json' })
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # Using object.to_json
         
     | 
| 
      
 28 
     | 
    
         
            +
            HTTParty.post('http://example.com', body: { foo: 'bar' }.to_json, headers: { 'Content-Type' => 'application/json' })
         
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       17 
31 
     | 
    
         
             
            ## Working with SSL
         
     | 
| 
       18 
32 
     | 
    
         | 
| 
       19 
33 
     | 
    
         
             
            You can use this guide to work with SSL certificates.
         
     | 
| 
         @@ -123,11 +137,16 @@ If you explicitly set `Accept-Encoding`, there be dragons: 
     | 
|
| 
       123 
137 
     | 
    
         
             
              `Net::HTTP` will automatically decompress it, and will omit `Content-Encoding`
         
     | 
| 
       124 
138 
     | 
    
         
             
              from your `HTTParty::Response` headers.
         
     | 
| 
       125 
139 
     | 
    
         | 
| 
       126 
     | 
    
         
            -
            * For encodings  
     | 
| 
       127 
     | 
    
         
            -
               
     | 
| 
      
 140 
     | 
    
         
            +
            * For the following encodings, HTTParty will automatically decompress them if you include
         
     | 
| 
      
 141 
     | 
    
         
            +
              the required gem into your project. Similar to above, if decompression succeeds,
         
     | 
| 
      
 142 
     | 
    
         
            +
              `Content-Encoding` will be omitted from your `HTTParty::Response` headers.
         
     | 
| 
       128 
143 
     | 
    
         
             
              **Warning:** Support for these encodings is experimental and not fully battle-tested.
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
               
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
              | Content-Encoding | Required Gem |
         
     | 
| 
      
 146 
     | 
    
         
            +
              | --- | --- |
         
     | 
| 
      
 147 
     | 
    
         
            +
              | `br` (Brotli)      | [brotli](https://rubygems.org/gems/brotli) |
         
     | 
| 
      
 148 
     | 
    
         
            +
              | `compress` (LZW)   | [ruby-lzws](https://rubygems.org/gems/ruby-lzws) |
         
     | 
| 
      
 149 
     | 
    
         
            +
              | `zstd` (Zstandard) | [zstd-ruby](https://rubygems.org/gems/zstd-ruby) |
         
     | 
| 
       131 
150 
     | 
    
         | 
| 
       132 
151 
     | 
    
         
             
            * For other encodings, `HTTParty::Response#body` will return the raw uncompressed byte string,
         
     | 
| 
       133 
152 
     | 
    
         
             
              and you'll need to inspect the `Content-Encoding` response header and decompress it yourself.
         
     | 
| 
         @@ -147,7 +166,8 @@ JSON.parse(res.body) # safe 
     | 
|
| 
       147 
166 
     | 
    
         | 
| 
       148 
167 
     | 
    
         
             
            require 'brotli'
         
     | 
| 
       149 
168 
     | 
    
         
             
            require 'lzws'
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
      
 169 
     | 
    
         
            +
            require 'zstd-ruby'
         
     | 
| 
      
 170 
     | 
    
         
            +
            res = HTTParty.get('https://example.com/test.json', headers: { 'Accept-Encoding' => 'br,compress,zstd' })
         
     | 
| 
       151 
171 
     | 
    
         
             
            JSON.parse(res.body)
         
     | 
| 
       152 
172 
     | 
    
         | 
| 
       153 
173 
     | 
    
         | 
    
        data/httparty.gemspec
    CHANGED
    
    | 
         @@ -13,10 +13,11 @@ Gem::Specification.new do |s| 
     | 
|
| 
       13 
13 
     | 
    
         
             
              s.summary     = 'Makes http fun! Also, makes consuming restful web services dead easy.'
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.description = 'Makes http fun! Also, makes consuming restful web services dead easy.'
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              s.required_ruby_version     = '>= 2. 
     | 
| 
      
 16 
     | 
    
         
            +
              s.required_ruby_version     = '>= 2.7.0'
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
              s.add_dependency 'csv'
         
     | 
| 
       18 
19 
     | 
    
         
             
              s.add_dependency 'multi_xml', ">= 0.5.2"
         
     | 
| 
       19 
     | 
    
         
            -
              s.add_dependency 
     | 
| 
      
 20 
     | 
    
         
            +
              s.add_dependency 'mini_mime', ">= 1.0.0"
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
              # If this line is removed, all hard partying will cease.
         
     | 
| 
       22 
23 
     | 
    
         
             
              s.post_install_message = "When you HTTParty, you must party hard!"
         
     | 
| 
         @@ -119,10 +119,7 @@ module HTTParty 
     | 
|
| 
       119 
119 
     | 
    
         
             
                  if add_timeout?(options[:timeout])
         
     | 
| 
       120 
120 
     | 
    
         
             
                    http.open_timeout = options[:timeout]
         
     | 
| 
       121 
121 
     | 
    
         
             
                    http.read_timeout = options[:timeout]
         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
                    from_ruby_version('2.6.0', option: :write_timeout, warn: false) do
         
     | 
| 
       124 
     | 
    
         
            -
                      http.write_timeout = options[:timeout]
         
     | 
| 
       125 
     | 
    
         
            -
                    end
         
     | 
| 
      
 122 
     | 
    
         
            +
                    http.write_timeout = options[:timeout]
         
     | 
| 
       126 
123 
     | 
    
         
             
                  end
         
     | 
| 
       127 
124 
     | 
    
         | 
| 
       128 
125 
     | 
    
         
             
                  if add_timeout?(options[:read_timeout])
         
     | 
| 
         @@ -134,15 +131,11 @@ module HTTParty 
     | 
|
| 
       134 
131 
     | 
    
         
             
                  end
         
     | 
| 
       135 
132 
     | 
    
         | 
| 
       136 
133 
     | 
    
         
             
                  if add_timeout?(options[:write_timeout])
         
     | 
| 
       137 
     | 
    
         
            -
                     
     | 
| 
       138 
     | 
    
         
            -
                      http.write_timeout = options[:write_timeout]
         
     | 
| 
       139 
     | 
    
         
            -
                    end
         
     | 
| 
      
 134 
     | 
    
         
            +
                    http.write_timeout = options[:write_timeout]
         
     | 
| 
       140 
135 
     | 
    
         
             
                  end
         
     | 
| 
       141 
136 
     | 
    
         | 
| 
       142 
137 
     | 
    
         
             
                  if add_max_retries?(options[:max_retries])
         
     | 
| 
       143 
     | 
    
         
            -
                     
     | 
| 
       144 
     | 
    
         
            -
                      http.max_retries = options[:max_retries]
         
     | 
| 
       145 
     | 
    
         
            -
                    end
         
     | 
| 
      
 138 
     | 
    
         
            +
                    http.max_retries = options[:max_retries]
         
     | 
| 
       146 
139 
     | 
    
         
             
                  end
         
     | 
| 
       147 
140 
     | 
    
         | 
| 
       148 
141 
     | 
    
         
             
                  if options[:debug_output]
         
     | 
| 
         @@ -157,15 +150,11 @@ module HTTParty 
     | 
|
| 
       157 
150 
     | 
    
         
             
                  #
         
     | 
| 
       158 
151 
     | 
    
         
             
                  # @see https://bugs.ruby-lang.org/issues/6617
         
     | 
| 
       159 
152 
     | 
    
         
             
                  if options[:local_host]
         
     | 
| 
       160 
     | 
    
         
            -
                     
     | 
| 
       161 
     | 
    
         
            -
                      http.local_host = options[:local_host]
         
     | 
| 
       162 
     | 
    
         
            -
                    end
         
     | 
| 
      
 153 
     | 
    
         
            +
                    http.local_host = options[:local_host]
         
     | 
| 
       163 
154 
     | 
    
         
             
                  end
         
     | 
| 
       164 
155 
     | 
    
         | 
| 
       165 
156 
     | 
    
         
             
                  if options[:local_port]
         
     | 
| 
       166 
     | 
    
         
            -
                     
     | 
| 
       167 
     | 
    
         
            -
                      http.local_port = options[:local_port]
         
     | 
| 
       168 
     | 
    
         
            -
                    end
         
     | 
| 
      
 157 
     | 
    
         
            +
                    http.local_port = options[:local_port]
         
     | 
| 
       169 
158 
     | 
    
         
             
                  end
         
     | 
| 
       170 
159 
     | 
    
         | 
| 
       171 
160 
     | 
    
         
             
                  http
         
     | 
| 
         @@ -173,14 +162,6 @@ module HTTParty 
     | 
|
| 
       173 
162 
     | 
    
         | 
| 
       174 
163 
     | 
    
         
             
                private
         
     | 
| 
       175 
164 
     | 
    
         | 
| 
       176 
     | 
    
         
            -
                def from_ruby_version(ruby_version, option: nil, warn: true)
         
     | 
| 
       177 
     | 
    
         
            -
                  if RUBY_VERSION >= ruby_version
         
     | 
| 
       178 
     | 
    
         
            -
                    yield
         
     | 
| 
       179 
     | 
    
         
            -
                  elsif warn
         
     | 
| 
       180 
     | 
    
         
            -
                    Kernel.warn("Warning: option #{ option } requires Ruby version #{ ruby_version } or later")
         
     | 
| 
       181 
     | 
    
         
            -
                  end
         
     | 
| 
       182 
     | 
    
         
            -
                end
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
165 
     | 
    
         
             
                def add_timeout?(timeout)
         
     | 
| 
       185 
166 
     | 
    
         
             
                  timeout && (timeout.is_a?(Integer) || timeout.is_a?(Float))
         
     | 
| 
       186 
167 
     | 
    
         
             
                end
         
     | 
| 
         @@ -17,7 +17,8 @@ module HTTParty 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  'none'     => :none,
         
     | 
| 
       18 
18 
     | 
    
         
             
                  'identity' => :none,
         
     | 
| 
       19 
19 
     | 
    
         
             
                  'br'       => :brotli,
         
     | 
| 
       20 
     | 
    
         
            -
                  'compress' => :lzw
         
     | 
| 
      
 20 
     | 
    
         
            +
                  'compress' => :lzw,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  'zstd'     => :zstd
         
     | 
| 
       21 
22 
     | 
    
         
             
                }.freeze
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
       23 
24 
     | 
    
         
             
                # The response body of the request
         
     | 
| 
         @@ -88,5 +89,14 @@ module HTTParty 
     | 
|
| 
       88 
89 
     | 
    
         
             
                    nil
         
     | 
| 
       89 
90 
     | 
    
         
             
                  end
         
     | 
| 
       90 
91 
     | 
    
         
             
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def zstd
         
     | 
| 
      
 94 
     | 
    
         
            +
                  return nil unless defined?(::Zstd)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 96 
     | 
    
         
            +
                    ::Zstd.decompress(body)
         
     | 
| 
      
 97 
     | 
    
         
            +
                  rescue StandardError
         
     | 
| 
      
 98 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
       91 
101 
     | 
    
         
             
              end
         
     | 
| 
       92 
102 
     | 
    
         
             
            end
         
     | 
| 
         @@ -29,7 +29,7 @@ module HTTParty 
     | 
|
| 
       29 
29 
     | 
    
         
             
                    @mattr_inheritable_attrs += args
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
                    args.each do |arg|
         
     | 
| 
       32 
     | 
    
         
            -
                       
     | 
| 
      
 32 
     | 
    
         
            +
                      singleton_class.attr_accessor(arg)
         
     | 
| 
       33 
33 
     | 
    
         
             
                    end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                    @mattr_inheritable_attrs
         
     | 
| 
         @@ -42,14 +42,12 @@ module HTTParty 
     | 
|
| 
       42 
42 
     | 
    
         
             
                      subclass.instance_variable_set(ivar, instance_variable_get(ivar).clone)
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                      if instance_variable_get(ivar).respond_to?(:merge)
         
     | 
| 
       45 
     | 
    
         
            -
                         
     | 
| 
      
 45 
     | 
    
         
            +
                        subclass.class_eval <<~RUBY, __FILE__, __LINE__ + 1
         
     | 
| 
       46 
46 
     | 
    
         
             
                          def self.#{inheritable_attribute}
         
     | 
| 
       47 
47 
     | 
    
         
             
                            duplicate = ModuleInheritableAttributes.hash_deep_dup(#{ivar})
         
     | 
| 
       48 
48 
     | 
    
         
             
                            #{ivar} = superclass.#{inheritable_attribute}.merge(duplicate)
         
     | 
| 
       49 
49 
     | 
    
         
             
                          end
         
     | 
| 
       50 
     | 
    
         
            -
                         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                        subclass.class_eval method
         
     | 
| 
      
 50 
     | 
    
         
            +
                        RUBY
         
     | 
| 
       53 
51 
     | 
    
         
             
                      end
         
     | 
| 
       54 
52 
     | 
    
         
             
                    end
         
     | 
| 
       55 
53 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/httparty/parser.rb
    CHANGED
    
    | 
         @@ -118,16 +118,19 @@ module HTTParty 
     | 
|
| 
       118 
118 
     | 
    
         
             
                protected
         
     | 
| 
       119 
119 
     | 
    
         | 
| 
       120 
120 
     | 
    
         
             
                def xml
         
     | 
| 
      
 121 
     | 
    
         
            +
                  require 'multi_xml'
         
     | 
| 
       121 
122 
     | 
    
         
             
                  MultiXml.parse(body)
         
     | 
| 
       122 
123 
     | 
    
         
             
                end
         
     | 
| 
       123 
124 
     | 
    
         | 
| 
       124 
125 
     | 
    
         
             
                UTF8_BOM = "\xEF\xBB\xBF"
         
     | 
| 
       125 
126 
     | 
    
         | 
| 
       126 
127 
     | 
    
         
             
                def json
         
     | 
| 
      
 128 
     | 
    
         
            +
                  require 'json'
         
     | 
| 
       127 
129 
     | 
    
         
             
                  JSON.parse(body, :quirks_mode => true, :allow_nan => true)
         
     | 
| 
       128 
130 
     | 
    
         
             
                end
         
     | 
| 
       129 
131 
     | 
    
         | 
| 
       130 
132 
     | 
    
         
             
                def csv
         
     | 
| 
      
 133 
     | 
    
         
            +
                  require 'csv'
         
     | 
| 
       131 
134 
     | 
    
         
             
                  CSV.parse(body)
         
     | 
| 
       132 
135 
     | 
    
         
             
                end
         
     | 
| 
       133 
136 
     | 
    
         | 
| 
         @@ -32,6 +32,13 @@ module HTTParty 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                  private
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
      
 35 
     | 
    
         
            +
                  # https://html.spec.whatwg.org/#multipart-form-data
         
     | 
| 
      
 36 
     | 
    
         
            +
                  MULTIPART_FORM_DATA_REPLACEMENT_TABLE = {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    '"'  => '%22',
         
     | 
| 
      
 38 
     | 
    
         
            +
                    "\r" => '%0D',
         
     | 
| 
      
 39 
     | 
    
         
            +
                    "\n" => '%0A'
         
     | 
| 
      
 40 
     | 
    
         
            +
                  }.freeze
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       35 
42 
     | 
    
         
             
                  def generate_multipart
         
     | 
| 
       36 
43 
     | 
    
         
             
                    normalized_params = params.flat_map { |key, value| HashConversions.normalize_keys(key, value) }
         
     | 
| 
       37 
44 
     | 
    
         | 
| 
         @@ -40,7 +47,7 @@ module HTTParty 
     | 
|
| 
       40 
47 
     | 
    
         
             
                      memo << %(Content-Disposition: form-data; name="#{key}")
         
     | 
| 
       41 
48 
     | 
    
         
             
                      # value.path is used to support ActionDispatch::Http::UploadedFile
         
     | 
| 
       42 
49 
     | 
    
         
             
                      # https://github.com/jnunemaker/httparty/pull/585
         
     | 
| 
       43 
     | 
    
         
            -
                      memo << %(; filename="#{file_name(value)}") if file?(value)
         
     | 
| 
      
 50 
     | 
    
         
            +
                      memo << %(; filename="#{file_name(value).gsub(/["\r\n]/, MULTIPART_FORM_DATA_REPLACEMENT_TABLE)}") if file?(value)
         
     | 
| 
       44 
51 
     | 
    
         
             
                      memo << NEWLINE
         
     | 
| 
       45 
52 
     | 
    
         
             
                      memo << "Content-Type: #{content_type(value)}#{NEWLINE}" if file?(value)
         
     | 
| 
       46 
53 
     | 
    
         
             
                      memo << NEWLINE
         
     | 
| 
         @@ -84,8 +91,9 @@ module HTTParty 
     | 
|
| 
       84 
91 
     | 
    
         | 
| 
       85 
92 
     | 
    
         
             
                  def content_type(object)
         
     | 
| 
       86 
93 
     | 
    
         
             
                    return object.content_type if object.respond_to?(:content_type)
         
     | 
| 
       87 
     | 
    
         
            -
                     
     | 
| 
       88 
     | 
    
         
            -
                    mime 
     | 
| 
      
 94 
     | 
    
         
            +
                    require 'mini_mime'
         
     | 
| 
      
 95 
     | 
    
         
            +
                    mime = MiniMime.lookup_by_filename(object.path)
         
     | 
| 
      
 96 
     | 
    
         
            +
                    mime ? mime.content_type : 'application/octet-stream'
         
     | 
| 
       89 
97 
     | 
    
         
             
                  end
         
     | 
| 
       90 
98 
     | 
    
         | 
| 
       91 
99 
     | 
    
         
             
                  def file_name(object)
         
     | 
    
        data/lib/httparty/request.rb
    CHANGED
    
    | 
         @@ -47,8 +47,12 @@ module HTTParty 
     | 
|
| 
       47 
47 
     | 
    
         
             
                end
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
                def self._load(data)
         
     | 
| 
       50 
     | 
    
         
            -
                  http_method, path, options = Marshal.load(data)
         
     | 
| 
       51 
     | 
    
         
            -
                  new(http_method, path, options)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  http_method, path, options, last_response, last_uri, raw_request = Marshal.load(data)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  instance = new(http_method, path, options)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  instance.last_response = last_response
         
     | 
| 
      
 53 
     | 
    
         
            +
                  instance.last_uri = last_uri
         
     | 
| 
      
 54 
     | 
    
         
            +
                  instance.instance_variable_set("@raw_request", raw_request)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  instance
         
     | 
| 
       52 
56 
     | 
    
         
             
                end
         
     | 
| 
       53 
57 
     | 
    
         | 
| 
       54 
58 
     | 
    
         
             
                attr_accessor :http_method, :options, :last_response, :redirect, :last_uri
         
     | 
| 
         @@ -184,7 +188,7 @@ module HTTParty 
     | 
|
| 
       184 
188 
     | 
    
         
             
                  opts = options.dup
         
     | 
| 
       185 
189 
     | 
    
         
             
                  opts.delete(:logger)
         
     | 
| 
       186 
190 
     | 
    
         
             
                  opts.delete(:parser) if opts[:parser] && opts[:parser].is_a?(Proc)
         
     | 
| 
       187 
     | 
    
         
            -
                  Marshal.dump([http_method, path, opts])
         
     | 
| 
      
 191 
     | 
    
         
            +
                  Marshal.dump([http_method, path, opts, last_response, @last_uri, @raw_request])
         
     | 
| 
       188 
192 
     | 
    
         
             
                end
         
     | 
| 
       189 
193 
     | 
    
         | 
| 
       190 
194 
     | 
    
         
             
                private
         
     | 
| 
         @@ -291,24 +295,7 @@ module HTTParty 
     | 
|
| 
       291 
295 
     | 
    
         | 
| 
       292 
296 
     | 
    
         
             
                def handle_response(raw_body, &block)
         
     | 
| 
       293 
297 
     | 
    
         
             
                  if response_redirects?
         
     | 
| 
       294 
     | 
    
         
            -
                     
     | 
| 
       295 
     | 
    
         
            -
                    if options[:logger]
         
     | 
| 
       296 
     | 
    
         
            -
                      logger = HTTParty::Logger.build(options[:logger], options[:log_level], options[:log_format])
         
     | 
| 
       297 
     | 
    
         
            -
                      logger.format(self, last_response)
         
     | 
| 
       298 
     | 
    
         
            -
                    end
         
     | 
| 
       299 
     | 
    
         
            -
                    self.path = last_response['location']
         
     | 
| 
       300 
     | 
    
         
            -
                    self.redirect = true
         
     | 
| 
       301 
     | 
    
         
            -
                    if last_response.class == Net::HTTPSeeOther
         
     | 
| 
       302 
     | 
    
         
            -
                      unless options[:maintain_method_across_redirects] && options[:resend_on_redirect]
         
     | 
| 
       303 
     | 
    
         
            -
                        self.http_method = Net::HTTP::Get
         
     | 
| 
       304 
     | 
    
         
            -
                      end
         
     | 
| 
       305 
     | 
    
         
            -
                    elsif last_response.code != '307' && last_response.code != '308'
         
     | 
| 
       306 
     | 
    
         
            -
                      unless options[:maintain_method_across_redirects]
         
     | 
| 
       307 
     | 
    
         
            -
                        self.http_method = Net::HTTP::Get
         
     | 
| 
       308 
     | 
    
         
            -
                      end
         
     | 
| 
       309 
     | 
    
         
            -
                    end
         
     | 
| 
       310 
     | 
    
         
            -
                    capture_cookies(last_response)
         
     | 
| 
       311 
     | 
    
         
            -
                    perform(&block)
         
     | 
| 
      
 298 
     | 
    
         
            +
                    handle_redirection(&block)
         
     | 
| 
       312 
299 
     | 
    
         
             
                  else
         
     | 
| 
       313 
300 
     | 
    
         
             
                    raw_body ||= last_response.body
         
     | 
| 
       314 
301 
     | 
    
         | 
| 
         @@ -327,10 +314,34 @@ module HTTParty 
     | 
|
| 
       327 
314 
     | 
    
         
             
                  end
         
     | 
| 
       328 
315 
     | 
    
         
             
                end
         
     | 
| 
       329 
316 
     | 
    
         | 
| 
      
 317 
     | 
    
         
            +
                def handle_redirection(&block)
         
     | 
| 
      
 318 
     | 
    
         
            +
                  options[:limit] -= 1
         
     | 
| 
      
 319 
     | 
    
         
            +
                  if options[:logger]
         
     | 
| 
      
 320 
     | 
    
         
            +
                    logger = HTTParty::Logger.build(options[:logger], options[:log_level], options[:log_format])
         
     | 
| 
      
 321 
     | 
    
         
            +
                    logger.format(self, last_response)
         
     | 
| 
      
 322 
     | 
    
         
            +
                  end
         
     | 
| 
      
 323 
     | 
    
         
            +
                  self.path       = last_response['location']
         
     | 
| 
      
 324 
     | 
    
         
            +
                  self.redirect   = true
         
     | 
| 
      
 325 
     | 
    
         
            +
                  if last_response.class == Net::HTTPSeeOther
         
     | 
| 
      
 326 
     | 
    
         
            +
                    unless options[:maintain_method_across_redirects] && options[:resend_on_redirect]
         
     | 
| 
      
 327 
     | 
    
         
            +
                      self.http_method = Net::HTTP::Get
         
     | 
| 
      
 328 
     | 
    
         
            +
                    end
         
     | 
| 
      
 329 
     | 
    
         
            +
                  elsif last_response.code != '307' && last_response.code != '308'
         
     | 
| 
      
 330 
     | 
    
         
            +
                    unless options[:maintain_method_across_redirects]
         
     | 
| 
      
 331 
     | 
    
         
            +
                      self.http_method = Net::HTTP::Get
         
     | 
| 
      
 332 
     | 
    
         
            +
                    end
         
     | 
| 
      
 333 
     | 
    
         
            +
                  end
         
     | 
| 
      
 334 
     | 
    
         
            +
                  if http_method == Net::HTTP::Get
         
     | 
| 
      
 335 
     | 
    
         
            +
                    clear_body
         
     | 
| 
      
 336 
     | 
    
         
            +
                  end
         
     | 
| 
      
 337 
     | 
    
         
            +
                  capture_cookies(last_response)
         
     | 
| 
      
 338 
     | 
    
         
            +
                  perform(&block)
         
     | 
| 
      
 339 
     | 
    
         
            +
                end
         
     | 
| 
      
 340 
     | 
    
         
            +
             
     | 
| 
       330 
341 
     | 
    
         
             
                def handle_host_redirection
         
     | 
| 
       331 
342 
     | 
    
         
             
                  check_duplicate_location_header
         
     | 
| 
       332 
343 
     | 
    
         
             
                  redirect_path = options[:uri_adapter].parse(last_response['location']).normalize
         
     | 
| 
       333 
     | 
    
         
            -
                  return if redirect_path.relative? || path.host == redirect_path.host
         
     | 
| 
      
 344 
     | 
    
         
            +
                  return if redirect_path.relative? || path.host == redirect_path.host || uri.host == redirect_path.host
         
     | 
| 
       334 
345 
     | 
    
         
             
                  @changed_hosts = true
         
     | 
| 
       335 
346 
     | 
    
         
             
                end
         
     | 
| 
       336 
347 
     | 
    
         | 
| 
         @@ -358,6 +369,14 @@ module HTTParty 
     | 
|
| 
       358 
369 
     | 
    
         
             
                  parser.call(body, format)
         
     | 
| 
       359 
370 
     | 
    
         
             
                end
         
     | 
| 
       360 
371 
     | 
    
         | 
| 
      
 372 
     | 
    
         
            +
                # Some Web Application Firewalls reject incoming GET requests that have a body
         
     | 
| 
      
 373 
     | 
    
         
            +
                # if we redirect, and the resulting verb is GET then we will clear the body that
         
     | 
| 
      
 374 
     | 
    
         
            +
                # may be left behind from the initiating request
         
     | 
| 
      
 375 
     | 
    
         
            +
                def clear_body
         
     | 
| 
      
 376 
     | 
    
         
            +
                  options[:body] = nil
         
     | 
| 
      
 377 
     | 
    
         
            +
                  @raw_request.body = nil
         
     | 
| 
      
 378 
     | 
    
         
            +
                end
         
     | 
| 
      
 379 
     | 
    
         
            +
             
     | 
| 
       361 
380 
     | 
    
         
             
                def capture_cookies(response)
         
     | 
| 
       362 
381 
     | 
    
         
             
                  return unless response['Set-Cookie']
         
     | 
| 
       363 
382 
     | 
    
         
             
                  cookies_hash = HTTParty::CookieHash.new
         
     | 
    
        data/lib/httparty/response.rb
    CHANGED
    
    | 
         @@ -67,12 +67,12 @@ module HTTParty 
     | 
|
| 
       67 
67 
     | 
    
         
             
                end
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
                # Support old multiple_choice? method from pre 2.0.0 era.
         
     | 
| 
       70 
     | 
    
         
            -
                if :: 
     | 
| 
      
 70 
     | 
    
         
            +
                if ::RUBY_PLATFORM != 'java'
         
     | 
| 
       71 
71 
     | 
    
         
             
                  alias_method :multiple_choice?, :multiple_choices?
         
     | 
| 
       72 
72 
     | 
    
         
             
                end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
74 
     | 
    
         
             
                # Support old status codes method from pre 2.6.0 era.
         
     | 
| 
       75 
     | 
    
         
            -
                if :: 
     | 
| 
      
 75 
     | 
    
         
            +
                if ::RUBY_PLATFORM != 'java'
         
     | 
| 
       76 
76 
     | 
    
         
             
                  alias_method :gateway_time_out?,                :gateway_timeout?
         
     | 
| 
       77 
77 
     | 
    
         
             
                  alias_method :request_entity_too_large?,        :payload_too_large?
         
     | 
| 
       78 
78 
     | 
    
         
             
                  alias_method :request_time_out?,                :request_timeout?
         
     | 
| 
         @@ -133,7 +133,7 @@ module HTTParty 
     | 
|
| 
       133 
133 
     | 
    
         
             
                end
         
     | 
| 
       134 
134 
     | 
    
         | 
| 
       135 
135 
     | 
    
         
             
                def throw_exception
         
     | 
| 
       136 
     | 
    
         
            -
                  if @request.options[:raise_on]  
     | 
| 
      
 136 
     | 
    
         
            +
                  if @request.options[:raise_on].to_a.detect { |c| code.to_s.match(/#{c.to_s}/) }
         
     | 
| 
       137 
137 
     | 
    
         
             
                    ::Kernel.raise ::HTTParty::ResponseError.new(@response), "Code #{code} - #{body}"
         
     | 
| 
       138 
138 
     | 
    
         
             
                  end
         
     | 
| 
       139 
139 
     | 
    
         
             
                end
         
     | 
| 
         @@ -5,7 +5,7 @@ module HTTParty 
     | 
|
| 
       5 
5 
     | 
    
         
             
                attr_reader :text, :content_type, :assume_utf16_is_big_endian
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                def initialize(text, assume_utf16_is_big_endian: true, content_type: nil)
         
     | 
| 
       8 
     | 
    
         
            -
                  @text = text 
     | 
| 
      
 8 
     | 
    
         
            +
                  @text = +text
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @content_type = content_type
         
     | 
| 
       10 
10 
     | 
    
         
             
                  @assume_utf16_is_big_endian = assume_utf16_is_big_endian
         
     | 
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
    
        data/lib/httparty/version.rb
    CHANGED
    
    
    
        data/lib/httparty.rb
    CHANGED
    
    | 
         @@ -2,13 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'pathname'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'net/http'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'net/https'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'uri'
         
     | 
| 
       7 
     | 
    
         
            -
            require 'zlib'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'multi_xml'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'mime/types'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'json'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'csv'
         
     | 
| 
       12 
6 
     | 
    
         | 
| 
       13 
7 
     | 
    
         
             
            require 'httparty/module_inheritable_attributes'
         
     | 
| 
       14 
8 
     | 
    
         
             
            require 'httparty/cookie_hash'
         
     | 
| 
         @@ -84,7 +78,7 @@ module HTTParty 
     | 
|
| 
       84 
78 
     | 
    
         
             
                #
         
     | 
| 
       85 
79 
     | 
    
         
             
                #   class Foo
         
     | 
| 
       86 
80 
     | 
    
         
             
                #     include HTTParty
         
     | 
| 
       87 
     | 
    
         
            -
                #     raise_on [404, 500]
         
     | 
| 
      
 81 
     | 
    
         
            +
                #     raise_on [404, 500, '5[0-9]*']
         
     | 
| 
       88 
82 
     | 
    
         
             
                #   end
         
     | 
| 
       89 
83 
     | 
    
         
             
                def raise_on(codes = [])
         
     | 
| 
       90 
84 
     | 
    
         
             
                  default_options[:raise_on] = *codes
         
     | 
| 
         @@ -592,6 +586,13 @@ module HTTParty 
     | 
|
| 
       592 
586 
     | 
    
         
             
                  perform_request Net::HTTP::Unlock, path, options, &block
         
     | 
| 
       593 
587 
     | 
    
         
             
                end
         
     | 
| 
       594 
588 
     | 
    
         | 
| 
      
 589 
     | 
    
         
            +
                def build_request(http_method, path, options = {})
         
     | 
| 
      
 590 
     | 
    
         
            +
                  options = ModuleInheritableAttributes.hash_deep_dup(default_options).merge(options)
         
     | 
| 
      
 591 
     | 
    
         
            +
                  HeadersProcessor.new(headers, options).call
         
     | 
| 
      
 592 
     | 
    
         
            +
                  process_cookies(options)
         
     | 
| 
      
 593 
     | 
    
         
            +
                  Request.new(http_method, path, options)
         
     | 
| 
      
 594 
     | 
    
         
            +
                end
         
     | 
| 
      
 595 
     | 
    
         
            +
             
     | 
| 
       595 
596 
     | 
    
         
             
                attr_reader :default_options
         
     | 
| 
       596 
597 
     | 
    
         | 
| 
       597 
598 
     | 
    
         
             
                private
         
     | 
| 
         @@ -607,10 +608,7 @@ module HTTParty 
     | 
|
| 
       607 
608 
     | 
    
         
             
                end
         
     | 
| 
       608 
609 
     | 
    
         | 
| 
       609 
610 
     | 
    
         
             
                def perform_request(http_method, path, options, &block) #:nodoc:
         
     | 
| 
       610 
     | 
    
         
            -
                   
     | 
| 
       611 
     | 
    
         
            -
                  HeadersProcessor.new(headers, options).call
         
     | 
| 
       612 
     | 
    
         
            -
                  process_cookies(options)
         
     | 
| 
       613 
     | 
    
         
            -
                  Request.new(http_method, path, options).perform(&block)
         
     | 
| 
      
 611 
     | 
    
         
            +
                  build_request(http_method, path, options).perform(&block)
         
     | 
| 
       614 
612 
     | 
    
         
             
                end
         
     | 
| 
       615 
613 
     | 
    
         | 
| 
       616 
614 
     | 
    
         
             
                def process_cookies(options) #:nodoc:
         
     | 
| 
         @@ -677,6 +675,10 @@ module HTTParty 
     | 
|
| 
       677 
675 
     | 
    
         
             
              def self.options(*args, &block)
         
     | 
| 
       678 
676 
     | 
    
         
             
                Basement.options(*args, &block)
         
     | 
| 
       679 
677 
     | 
    
         
             
              end
         
     | 
| 
      
 678 
     | 
    
         
            +
             
     | 
| 
      
 679 
     | 
    
         
            +
              def self.build_request(*args, &block)
         
     | 
| 
      
 680 
     | 
    
         
            +
                Basement.build_request(*args, &block)
         
     | 
| 
      
 681 
     | 
    
         
            +
              end
         
     | 
| 
       680 
682 
     | 
    
         
             
            end
         
     | 
| 
       681 
683 
     | 
    
         | 
| 
       682 
684 
     | 
    
         
             
            require 'httparty/hash_conversions'
         
     | 
    
        data/script/release
    CHANGED
    
    | 
         @@ -18,9 +18,9 @@ gem_name=httparty 
     | 
|
| 
       18 
18 
     | 
    
         
             
            rm -rf $gem_name-*.gem
         
     | 
| 
       19 
19 
     | 
    
         
             
            gem build -q $gem_name.gemspec
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            # Make sure we're on the  
     | 
| 
       22 
     | 
    
         
            -
            (git branch | grep -q '*  
     | 
| 
       23 
     | 
    
         
            -
              echo "Only release from the  
     | 
| 
      
 21 
     | 
    
         
            +
            # Make sure we're on the main branch.
         
     | 
| 
      
 22 
     | 
    
         
            +
            (git branch | grep -q '* main') || {
         
     | 
| 
      
 23 
     | 
    
         
            +
              echo "Only release from the main branch."
         
     | 
| 
       24 
24 
     | 
    
         
             
              exit 1
         
     | 
| 
       25 
25 
     | 
    
         
             
            }
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
         @@ -39,4 +39,4 @@ git fetch -t origin 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            # Tag it and bag it.
         
     | 
| 
       41 
41 
     | 
    
         
             
            gem push $gem_name-*.gem && git tag "$tag" &&
         
     | 
| 
       42 
     | 
    
         
            -
              git push origin  
     | 
| 
      
 42 
     | 
    
         
            +
              git push origin main && git push origin "$tag"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,16 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: httparty
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.22.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: 2024-04-29 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
      
 14 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 15 
     | 
    
         
            +
              name: csv
         
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 17 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 18 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 20 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 21 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 22 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 24 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 25 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 26 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 27 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       14 
28 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
29 
     | 
    
         
             
              name: multi_xml
         
     | 
| 
       16 
30 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -26,19 +40,19 @@ dependencies: 
     | 
|
| 
       26 
40 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       27 
41 
     | 
    
         
             
                    version: 0.5.2
         
     | 
| 
       28 
42 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       29 
     | 
    
         
            -
              name:  
     | 
| 
      
 43 
     | 
    
         
            +
              name: mini_mime
         
     | 
| 
       30 
44 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       31 
45 
     | 
    
         
             
                requirements:
         
     | 
| 
       32 
     | 
    
         
            -
                - - " 
     | 
| 
      
 46 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       33 
47 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       34 
     | 
    
         
            -
                    version:  
     | 
| 
      
 48 
     | 
    
         
            +
                    version: 1.0.0
         
     | 
| 
       35 
49 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       36 
50 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       37 
51 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       38 
52 
     | 
    
         
             
                requirements:
         
     | 
| 
       39 
     | 
    
         
            -
                - - " 
     | 
| 
      
 53 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       40 
54 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       41 
     | 
    
         
            -
                    version:  
     | 
| 
      
 55 
     | 
    
         
            +
                    version: 1.0.0
         
     | 
| 
       42 
56 
     | 
    
         
             
            description: Makes http fun! Also, makes consuming restful web services dead easy.
         
     | 
| 
       43 
57 
     | 
    
         
             
            email:
         
     | 
| 
       44 
58 
     | 
    
         
             
            - nunemaker@gmail.com
         
     | 
| 
         @@ -48,11 +62,11 @@ extensions: [] 
     | 
|
| 
       48 
62 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       49 
63 
     | 
    
         
             
            files:
         
     | 
| 
       50 
64 
     | 
    
         
             
            - ".editorconfig"
         
     | 
| 
      
 65 
     | 
    
         
            +
            - ".github/dependabot.yml"
         
     | 
| 
       51 
66 
     | 
    
         
             
            - ".github/workflows/ci.yml"
         
     | 
| 
       52 
67 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       53 
68 
     | 
    
         
             
            - ".rubocop.yml"
         
     | 
| 
       54 
69 
     | 
    
         
             
            - ".rubocop_todo.yml"
         
     | 
| 
       55 
     | 
    
         
            -
            - ".simplecov"
         
     | 
| 
       56 
70 
     | 
    
         
             
            - CONTRIBUTING.md
         
     | 
| 
       57 
71 
     | 
    
         
             
            - Changelog.md
         
     | 
| 
       58 
72 
     | 
    
         
             
            - Gemfile
         
     | 
| 
         @@ -124,15 +138,15 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       124 
138 
     | 
    
         
             
              requirements:
         
     | 
| 
       125 
139 
     | 
    
         
             
              - - ">="
         
     | 
| 
       126 
140 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       127 
     | 
    
         
            -
                  version: 2. 
     | 
| 
      
 141 
     | 
    
         
            +
                  version: 2.7.0
         
     | 
| 
       128 
142 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       129 
143 
     | 
    
         
             
              requirements:
         
     | 
| 
       130 
144 
     | 
    
         
             
              - - ">="
         
     | 
| 
       131 
145 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       132 
146 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       133 
147 
     | 
    
         
             
            requirements: []
         
     | 
| 
       134 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
       135 
     | 
    
         
            -
            signing_key: 
     | 
| 
      
 148 
     | 
    
         
            +
            rubygems_version: 3.3.7
         
     | 
| 
      
 149 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       136 
150 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       137 
151 
     | 
    
         
             
            summary: Makes http fun! Also, makes consuming restful web services dead easy.
         
     | 
| 
       138 
152 
     | 
    
         
             
            test_files: []
         
     | 
    
        data/.simplecov
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            SimpleCov.start "test_frameworks"
         
     |