faraday 2.4.0 → 2.5.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/lib/faraday/adapter.rb +2 -2
- data/lib/faraday/options/env.rb +18 -0
- data/lib/faraday/version.rb +1 -1
- data/spec/support/shared_examples/request_method.rb +17 -3
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a991fd75b3b03d53636acde7819f2f2e4edd1ba9c43a2328083bfdc1a881e4b4
         | 
| 4 | 
            +
              data.tar.gz: 7b30cf69876f689e09ae2128724a59f3e653d9e4a5963c5d77f4da2b4b200cac
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f1f24cae3a79cc5db4d5ac1968d46904f32759b3a7dc00e4f920c648867631f53451c5ec30fbaf982d23c6a57b64169c966a35b7ffb3892df265ff626d67d870
         | 
| 7 | 
            +
              data.tar.gz: d07ec4f994e8440b4f762ff0e6d058508d891bca0bddf63f6270cc367b7b23d24c965c1c585be9d27687ef79df26d7688b484204db2b1ae8f8e555f364e5da45
         | 
    
        data/lib/faraday/adapter.rb
    CHANGED
    
    | @@ -59,7 +59,7 @@ module Faraday | |
| 59 59 |  | 
| 60 60 | 
             
                private
         | 
| 61 61 |  | 
| 62 | 
            -
                def save_response(env, status, body, headers = nil, reason_phrase = nil)
         | 
| 62 | 
            +
                def save_response(env, status, body, headers = nil, reason_phrase = nil, finished: true)
         | 
| 63 63 | 
             
                  env.status = status
         | 
| 64 64 | 
             
                  env.body = body
         | 
| 65 65 | 
             
                  env.reason_phrase = reason_phrase&.to_s&.strip
         | 
| @@ -68,7 +68,7 @@ module Faraday | |
| 68 68 | 
             
                    yield(response_headers) if block_given?
         | 
| 69 69 | 
             
                  end
         | 
| 70 70 |  | 
| 71 | 
            -
                  env.response.finish(env) unless env.parallel?
         | 
| 71 | 
            +
                  env.response.finish(env) unless env.parallel? || !finished
         | 
| 72 72 | 
             
                  env.response
         | 
| 73 73 | 
             
                end
         | 
| 74 74 |  | 
    
        data/lib/faraday/options/env.rb
    CHANGED
    
    | @@ -157,6 +157,24 @@ module Faraday | |
| 157 157 | 
             
                  %(#<#{self.class}#{attrs.join(' ')}>)
         | 
| 158 158 | 
             
                end
         | 
| 159 159 |  | 
| 160 | 
            +
                def stream_response?
         | 
| 161 | 
            +
                  request.stream_response?
         | 
| 162 | 
            +
                end
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                def stream_response(&block)
         | 
| 165 | 
            +
                  size = 0
         | 
| 166 | 
            +
                  yielded = false
         | 
| 167 | 
            +
                  block_result = block.call do |chunk| # rubocop:disable Performance/RedundantBlockCall
         | 
| 168 | 
            +
                    if chunk.bytesize.positive? || size.positive?
         | 
| 169 | 
            +
                      yielded = true
         | 
| 170 | 
            +
                      size += chunk.bytesize
         | 
| 171 | 
            +
                      request.on_data.call(chunk, size, self)
         | 
| 172 | 
            +
                    end
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
                  request.on_data.call(+'', 0, self) unless yielded
         | 
| 175 | 
            +
                  block_result
         | 
| 176 | 
            +
                end
         | 
| 177 | 
            +
             | 
| 160 178 | 
             
                # @private
         | 
| 161 179 | 
             
                def custom_members
         | 
| 162 180 | 
             
                  @custom_members ||= {}
         | 
    
        data/lib/faraday/version.rb
    CHANGED
    
    
| @@ -153,12 +153,19 @@ shared_examples 'a request method' do |http_method| | |
| 153 153 | 
             
                  let(:streamed) { [] }
         | 
| 154 154 |  | 
| 155 155 | 
             
                  context 'when response is empty' do
         | 
| 156 | 
            -
                    it do
         | 
| 156 | 
            +
                    it 'handles streaming' do
         | 
| 157 | 
            +
                      env = nil
         | 
| 157 158 | 
             
                      conn.public_send(http_method, '/') do |req|
         | 
| 158 | 
            -
                        req.options.on_data = proc  | 
| 159 | 
            +
                        req.options.on_data = proc do |chunk, size, block_env|
         | 
| 160 | 
            +
                          streamed << [chunk, size]
         | 
| 161 | 
            +
                          env ||= block_env
         | 
| 162 | 
            +
                        end
         | 
| 159 163 | 
             
                      end
         | 
| 160 164 |  | 
| 161 165 | 
             
                      expect(streamed).to eq([['', 0]])
         | 
| 166 | 
            +
                      # TODO: enable this after updating all existing adapters to the new streaming API
         | 
| 167 | 
            +
                      # expect(env).to be_a(Faraday::Env)
         | 
| 168 | 
            +
                      # expect(env.status).to eq(200)
         | 
| 162 169 | 
             
                    end
         | 
| 163 170 | 
             
                  end
         | 
| 164 171 |  | 
| @@ -166,12 +173,19 @@ shared_examples 'a request method' do |http_method| | |
| 166 173 | 
             
                    before { request_stub.to_return(body: big_string) }
         | 
| 167 174 |  | 
| 168 175 | 
             
                    it 'handles streaming' do
         | 
| 176 | 
            +
                      env = nil
         | 
| 169 177 | 
             
                      response = conn.public_send(http_method, '/') do |req|
         | 
| 170 | 
            -
                        req.options.on_data = proc  | 
| 178 | 
            +
                        req.options.on_data = proc do |chunk, size, block_env|
         | 
| 179 | 
            +
                          streamed << [chunk, size]
         | 
| 180 | 
            +
                          env ||= block_env
         | 
| 181 | 
            +
                        end
         | 
| 171 182 | 
             
                      end
         | 
| 172 183 |  | 
| 173 184 | 
             
                      expect(response.body).to eq('')
         | 
| 174 185 | 
             
                      check_streaming_response(streamed, chunk_size: 16 * 1024)
         | 
| 186 | 
            +
                      # TODO: enable this after updating all existing adapters to the new streaming API
         | 
| 187 | 
            +
                      # expect(env).to be_a(Faraday::Env)
         | 
| 188 | 
            +
                      # expect(env.status).to eq(200)
         | 
| 175 189 | 
             
                    end
         | 
| 176 190 | 
             
                  end
         | 
| 177 191 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: faraday
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - "@technoweenie"
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2022- | 
| 13 | 
            +
            date: 2022-08-08 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: faraday-net_http
         | 
| @@ -125,7 +125,7 @@ licenses: | |
| 125 125 | 
             
            - MIT
         | 
| 126 126 | 
             
            metadata:
         | 
| 127 127 | 
             
              homepage_uri: https://lostisland.github.io/faraday
         | 
| 128 | 
            -
              changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2. | 
| 128 | 
            +
              changelog_uri: https://github.com/lostisland/faraday/releases/tag/v2.5.0
         | 
| 129 129 | 
             
              source_code_uri: https://github.com/lostisland/faraday
         | 
| 130 130 | 
             
              bug_tracker_uri: https://github.com/lostisland/faraday/issues
         | 
| 131 131 | 
             
            post_install_message: 
         |