Module: Ethon::Curls::Infos

Included in:
Ethon::Curl
Defined in:
lib/ethon/curls/infos.rb

Overview

This module contains logic for the available informations on an easy, eg.: connect_time.

Instance Method Summary collapse

Instance Method Details

#debug_info_typesHash

Examples:

Return debug info types.

Ethon::Curl.debug_info_types

Returns:

  • (Hash)

    The info types available to curl_debug_callback.


30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ethon/curls/infos.rb', line 30

def debug_info_types
  [
    :text, 0,
    :header_in,
    :header_out,
    :data_in,
    :data_out,
    :ssl_data_in,
    :ssl_data_out
  ]
end

#get_info_double(option, handle) ⇒ Float

Return info as float

Examples:

Return info.

Curl.get_info_double(:response_code, easy)

Parameters:

  • option (Symbol)

    The option name.

  • handle (::FFI::Pointer)

    The easy handle.

Returns:

  • (Float)

    The info.


141
142
143
144
145
146
147
# File 'lib/ethon/curls/infos.rb', line 141

def get_info_double(option, handle)
  double_ptr = ::FFI::MemoryPointer.new(:double)

  if easy_getinfo(handle, option, double_ptr) == :ok
    double_ptr.read_double
  end
end

#get_info_long(option, handle) ⇒ Integer

Return info as integer.

Examples:

Return info.

Curl.get_info_long(:response_code, easy)

Parameters:

  • option (Symbol)

    The option name.

  • handle (::FFI::Pointer)

    The easy handle.

Returns:

  • (Integer)

    The info.


124
125
126
127
128
129
130
# File 'lib/ethon/curls/infos.rb', line 124

def get_info_long(option, handle)
  long_ptr = ::FFI::MemoryPointer.new(:long)

  if easy_getinfo(handle, option, long_ptr) == :ok
    long_ptr.read_long
  end
end

#get_info_string(option, handle) ⇒ String

Return info as string.

Examples:

Return info.

Curl.get_info_string(:primary_ip, easy)

Parameters:

  • option (Symbol)

    The option name.

  • handle (::FFI::Pointer)

    The easy handle.

Returns:

  • (String)

    The info.


106
107
108
109
110
111
112
113
# File 'lib/ethon/curls/infos.rb', line 106

def get_info_string(option, handle)
  string_ptr = ::FFI::MemoryPointer.new(:pointer)

  if easy_getinfo(handle, option, string_ptr) == :ok
    ptr=string_ptr.read_pointer
    ptr.null? ? nil : ptr.read_string
  end
end

#info_typesHash

Return info types.

Examples:

Return info types.

Ethon::Curl.info_types

Returns:

  • (Hash)

    The info types.


14
15
16
17
18
19
20
21
# File 'lib/ethon/curls/infos.rb', line 14

def info_types
  {
    :string =>0x100000,
    :long =>  0x200000,
    :double =>0x300000,
    :slist => 0x400000
  }
end

#infosHash

Return Info details, refer github.com/bagder/curl/blob/master/src/tool_writeout.c#L66 for details

Examples:

Return infos.

Ethon::Curl.infos

Returns:

  • (Hash)

    The infos.


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/ethon/curls/infos.rb', line 49

def infos
  {
    :effective_url =>          info_types[:string] + 1,
    :response_code =>          info_types[:long]   + 2,
    :total_time =>             info_types[:double] + 3,
    :namelookup_time =>        info_types[:double] + 4,
    :connect_time =>           info_types[:double] + 5,
    :pretransfer_time =>       info_types[:double] + 6,
    :size_upload =>            info_types[:double] + 7,
    :size_download =>          info_types[:double] + 8,
    :speed_download =>         info_types[:double] + 9,
    :speed_upload =>           info_types[:double] + 10,
    :header_size =>            info_types[:long]   + 11,
    :request_size =>           info_types[:long]   + 12,
    :ssl_verifyresult =>       info_types[:long]   + 13,
    :filetime =>               info_types[:long]   + 14,
    :content_length_download =>info_types[:double] + 15,
    :content_length_upload =>  info_types[:double] + 16,
    :starttransfer_time =>     info_types[:double] + 17,
    :content_type =>           info_types[:string] + 18,
    :redirect_time =>          info_types[:double] + 19,
    :redirect_count =>         info_types[:long]   + 20,
    :private =>                info_types[:string] + 21,
    :http_connectcode =>       info_types[:long]   + 22,
    :httpauth_avail =>         info_types[:long]   + 23,
    :proxyauth_avail =>        info_types[:long]   + 24,
    :os_errno =>               info_types[:long]   + 25,
    :num_connects =>           info_types[:long]   + 26,
    :ssl_engines =>            info_types[:slist]  + 27,
    :cookielist =>             info_types[:slist]  + 28,
    :lastsocket =>             info_types[:long]   + 29,
    :ftp_entry_path =>         info_types[:string] + 30,
    :redirect_url =>           info_types[:string] + 31,
    :primary_ip =>             info_types[:string] + 32,
    :appconnect_time =>        info_types[:double] + 33,
    :certinfo =>               info_types[:slist]  + 34,
    :condition_unmet =>        info_types[:long]   + 35,
    :rtsp_session_id =>        info_types[:string] + 36,
    :rtsp_client_cseq =>       info_types[:long]   + 37,
    :rtsp_server_cseq =>       info_types[:long]   + 38,
    :rtsp_cseq_recv =>         info_types[:long]   + 39,
    :primary_port =>           info_types[:long]   + 40,
    :local_ip =>               info_types[:string] + 41,
    :local_port =>             info_types[:long]   + 42,
    :last =>42
  }
end