Sha256: 5f26b4edcd3aad2efa2dc28974dabe8d76eb47abb1aca4b373f24f5c6114b2c9

Contents?: true

Size: 780 Bytes

Versions: 5

Compression:

Stored size: 780 Bytes

Contents

require 'faraday'
require 'zlib'
 
module Google
  class APIClient
    class Charset < Faraday::Middleware
      include Google::APIClient::Logging

      def charset_for_content_type(type)
        if type
          m = type.match(/(?:charset|encoding)="?([a-z0-9-]+)"?/i)
          if m
            return Encoding.find(m[1])
          end
        end
        nil
      end

      def adjust_encoding(env)
        charset = charset_for_content_type(env[:response_headers]['content-type'])
        if charset && env[:body].encoding != charset
          env[:body].force_encoding(charset)
        end
      end
      
      def on_complete(env)
        adjust_encoding(env)
      end
    end
  end
end
 
Faraday::Response.register_middleware :charset => Google::APIClient::Charset

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
arvados-google-api-client-0.8.7.9 lib/google/api_client/charset.rb
arvados-google-api-client-0.8.7.8 lib/google/api_client/charset.rb
arvados-google-api-client-0.8.7.7 lib/google/api_client/charset.rb
arvados-google-api-client-0.8.7.6 lib/google/api_client/charset.rb
arvados-google-api-client-0.8.7.5 lib/google/api_client/charset.rb