Sha256: 78e4f7e9cdd172e7f1c59e2a3dc59e87d3fa07358ba72e6df0e8707e5a5b58b2

Contents?: true

Size: 1.61 KB

Versions: 6759

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true
module Ethon
  class Easy
    # This module contains the logic around adding headers to libcurl.
    #
    # @api private
    module Header
      # Return headers, return empty hash if none.
      #
      # @example Return the headers.
      #   easy.headers
      #
      # @return [ Hash ] The headers.
      def headers
        @headers ||= {}
      end

      # Set the headers.
      #
      # @example Set the headers.
      #   easy.headers = {'User-Agent' => 'ethon'}
      #
      # @param [ Hash ] headers The headers.
      def headers=(headers)
        headers ||= {}
        header_list = nil
        headers.each do |k, v|
          header_list = Curl.slist_append(header_list, compose_header(k,v))
        end
        Curl.set_option(:httpheader, header_list, handle)

        @header_list = header_list && FFI::AutoPointer.new(header_list, Curl.method(:slist_free_all))
      end

      # Return header_list.
      #
      # @example Return header_list.
      #   easy.header_list
      #
      # @return [ FFI::Pointer ] The header list.
      def header_list
        @header_list
      end

      # Compose libcurl header string from key and value.
      # Also replaces null bytes, because libcurl will complain
      # otherwise.
      #
      # @example Compose header.
      #   easy.compose_header('User-Agent', 'Ethon')
      #
      # @param [ String ] key The header name.
      # @param [ String ] value The header value.
      #
      # @return [ String ] The composed header.
      def compose_header(key, value)
        Util.escape_zero_byte("#{key}: #{value}")
      end
    end
  end
end

Version data entries

6,759 entries across 6,757 versions & 23 rubygems

Version Path
ory-client-0.0.1.alpha93 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha92 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-oathkeeper-client-0.38.20.beta1 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha91 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha90 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha89 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha88 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha87 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha86 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha85 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha84 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha83 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha82 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha81 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha80 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha79 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha78 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha77 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha76 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb
ory-client-0.0.1.alpha75 vendor/bundle/ruby/2.5.0/gems/ethon-0.15.0/lib/ethon/easy/header.rb