Module: Ethon::Easy::Header

Included in:
Ethon::Easy
Defined in:
lib/ethon/easy/header.rb

Overview

This module contains the logic around adding headers to libcurl.

Instance Method Summary collapse

Instance Method Details

#compose_header(key, value) ⇒ String

Compose libcurl header string from key and value. Also replaces null bytes, because libcurl will complain about otherwise.

Examples:

Compose header.

easy.compose_header('User-Agent', 'Ethon')

Parameters:

  • key (String)

    The header name.

  • value (String)

    The header value.

Returns:

  • (String)

    The composed header.



60
61
62
# File 'lib/ethon/easy/header.rb', line 60

def compose_header(key, value)
  Util.escape_zero_byte("#{key}: #{value}")
end

#header_listFFI::Pointer

Return header_list.

Examples:

Return header_list.

easy.header_list

Returns:

  • (FFI::Pointer)

    The header list.



33
34
35
# File 'lib/ethon/easy/header.rb', line 33

def header_list
  @header_list ||= nil
end

#headersHash

Return headers, return empty hash if none.

Examples:

Return the headers.

easy.headers

Returns:

  • (Hash)

    The headers.



13
14
15
# File 'lib/ethon/easy/header.rb', line 13

def headers
  @headers ||= {}
end

#headers=(headers) ⇒ Object

Set the headers.

Examples:

Set the headers.

easy.headers = {'User-Agent' => 'ethon'}

Parameters:

  • headers (Hash)

    The headers.



23
24
25
# File 'lib/ethon/easy/header.rb', line 23

def headers=(headers)
  @headers = headers
end

#set_headersSymbol

Set previously defined headers in libcurl.

Examples:

Set headers in libcurl.

easy.set_headers

Returns:

  • (Symbol)

    The return value from Curl.set_option.



43
44
45
46
47
# File 'lib/ethon/easy/header.rb', line 43

def set_headers
  @header_list = nil
  headers.each {|k, v| @header_list = Curl.slist_append(@header_list, compose_header(k,v)) }
  Curl.set_option(:httpheader, @header_list, handle)
end