httpx 0.18.7 → 0.19.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/doc/release_notes/0_19_0.md +39 -0
- data/lib/httpx/adapters/faraday.rb +7 -3
- data/lib/httpx/connection.rb +14 -10
- data/lib/httpx/extensions.rb +16 -0
- data/lib/httpx/headers.rb +0 -2
- data/lib/httpx/io/tcp.rb +24 -5
- data/lib/httpx/options.rb +44 -11
- data/lib/httpx/plugins/cookies.rb +5 -7
- data/lib/httpx/plugins/proxy.rb +2 -5
- data/lib/httpx/plugins/retries.rb +1 -1
- data/lib/httpx/pool.rb +40 -20
- data/lib/httpx/resolver/https.rb +32 -42
- data/lib/httpx/resolver/multi.rb +79 -0
- data/lib/httpx/resolver/native.rb +24 -39
- data/lib/httpx/resolver/resolver.rb +92 -0
- data/lib/httpx/resolver/system.rb +175 -19
- data/lib/httpx/resolver.rb +37 -11
- data/lib/httpx/response.rb +4 -2
- data/lib/httpx/session_extensions.rb +9 -2
- data/lib/httpx/timers.rb +1 -1
- data/lib/httpx/transcoder/chunker.rb +0 -1
- data/lib/httpx/version.rb +1 -1
- data/lib/httpx.rb +2 -0
- data/sig/errors.rbs +8 -0
- data/sig/headers.rbs +0 -2
- data/sig/httpx.rbs +4 -0
- data/sig/options.rbs +10 -7
- data/sig/parser/http1.rbs +14 -5
- data/sig/pool.rbs +17 -9
- data/sig/registry.rbs +3 -0
- data/sig/request.rbs +11 -0
- data/sig/resolver/https.rbs +15 -27
- data/sig/resolver/multi.rbs +7 -0
- data/sig/resolver/native.rbs +3 -12
- data/sig/resolver/resolver.rbs +36 -0
- data/sig/resolver/system.rbs +3 -9
- data/sig/resolver.rbs +12 -10
- data/sig/response.rbs +15 -5
- data/sig/selector.rbs +3 -3
- data/sig/timers.rbs +5 -2
- data/sig/transcoder/chunker.rbs +16 -5
- data/sig/transcoder/json.rbs +5 -0
- data/sig/transcoder.rbs +3 -1
- metadata +9 -5
- data/lib/httpx/resolver/resolver_mixin.rb +0 -75
- data/sig/resolver/resolver_mixin.rbs +0 -26
data/sig/resolver/native.rbs
CHANGED
|
@@ -1,33 +1,24 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
module Resolver
|
|
3
|
-
class Native
|
|
3
|
+
class Native < Resolver
|
|
4
4
|
extend Forwardable
|
|
5
|
-
include ResolverMixin
|
|
6
5
|
include _ToIO
|
|
7
6
|
|
|
8
7
|
DEFAULTS: Hash[Symbol, untyped]
|
|
9
8
|
DNS_PORT: Integer
|
|
10
9
|
|
|
10
|
+
@family: ip_family
|
|
11
11
|
@options: Options
|
|
12
12
|
@ns_index: Integer
|
|
13
|
-
@resolver_options: Hash[Symbol, untyped]
|
|
14
13
|
@nameserver: String
|
|
15
14
|
@_timeouts: Array[Numeric]
|
|
16
15
|
@timeouts: Hash[String, Array[Numeric]]
|
|
17
|
-
@_record_types: Hash[String, Hash["A" | "AAAA", dns_resource]]
|
|
18
16
|
@connections: Array[Connection]
|
|
19
|
-
@queries: Hash[String, Connection]
|
|
20
17
|
@read_buffer: String
|
|
21
18
|
@write_buffer: Buffer
|
|
22
19
|
|
|
23
20
|
attr_reader state: Symbol
|
|
24
21
|
|
|
25
|
-
def closed?: () -> bool
|
|
26
|
-
|
|
27
|
-
def empty?: () -> bool
|
|
28
|
-
|
|
29
|
-
def close: () -> void
|
|
30
|
-
|
|
31
22
|
def call: () -> void
|
|
32
23
|
|
|
33
24
|
def interests: () -> io_interests
|
|
@@ -38,7 +29,7 @@ module HTTPX
|
|
|
38
29
|
|
|
39
30
|
private
|
|
40
31
|
|
|
41
|
-
def initialize: (options) ->
|
|
32
|
+
def initialize: (ip_family family, options options) -> void
|
|
42
33
|
|
|
43
34
|
def calculate_interests: () -> (:r | :w)
|
|
44
35
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module HTTPX
|
|
2
|
+
module Resolver
|
|
3
|
+
class Resolver
|
|
4
|
+
include Callbacks
|
|
5
|
+
include Loggable
|
|
6
|
+
|
|
7
|
+
RECORD_TYPES: Hash[Integer, singleton(Resolv::DNS::Resource)]
|
|
8
|
+
|
|
9
|
+
attr_reader family: ip_family
|
|
10
|
+
|
|
11
|
+
@record_type: singleton(Resolv::DNS::Resource)
|
|
12
|
+
@options: Options
|
|
13
|
+
@resolver_options: Hash[Symbol, untyped]
|
|
14
|
+
@queries: Hash[String, Connection]
|
|
15
|
+
@system_resolver: Resolv::Hosts
|
|
16
|
+
|
|
17
|
+
def close: () -> void
|
|
18
|
+
|
|
19
|
+
def closed?: () -> bool
|
|
20
|
+
|
|
21
|
+
def empty?: () -> bool
|
|
22
|
+
|
|
23
|
+
def emit_addresses: (Connection connection, ip_family family, Array[IPAddr]) -> void
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def initialize: (ip_family? family, options options) -> void
|
|
28
|
+
|
|
29
|
+
def early_resolve: (Connection connection, ?hostname: String) -> void
|
|
30
|
+
|
|
31
|
+
def emit_resolve_error: (Connection connection, ?String hostname, ?StandardError) -> void
|
|
32
|
+
|
|
33
|
+
def resolve_error: (String hostname, ?StandardError?) -> ResolveError
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/sig/resolver/system.rbs
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
module Resolver
|
|
3
|
-
class System
|
|
4
|
-
include ResolverMixin
|
|
5
|
-
|
|
3
|
+
class System < Resolver
|
|
6
4
|
RESOLV_ERRORS: Array[singleton(StandardError)] # ResolvError
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def closed?: () -> true
|
|
11
|
-
|
|
12
|
-
def empty?: () -> true
|
|
6
|
+
@resolver: Resolv::DNS
|
|
13
7
|
|
|
14
8
|
def <<: (Connection) -> void
|
|
15
9
|
|
|
16
10
|
private
|
|
17
11
|
|
|
18
|
-
def initialize: (options) ->
|
|
12
|
+
def initialize: (options options) -> void
|
|
19
13
|
end
|
|
20
14
|
end
|
|
21
15
|
end
|
data/sig/resolver.rbs
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
type ipaddr = IPAddr | String
|
|
3
3
|
|
|
4
|
-
type resolver = Resolver::System | Resolver::Native | Resolver::HTTPS
|
|
5
|
-
|
|
6
4
|
module Resolver
|
|
7
|
-
|
|
5
|
+
extend Registry[Symbol, Class]
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
| () -> Hash[Symbol, Class]
|
|
7
|
+
RESOLVE_TIMEOUT: Integer | Float
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
@lookup_mutex: Thread::Mutex
|
|
13
10
|
|
|
14
11
|
type dns_resource = singleton(Resolv::DNS::Resource)
|
|
15
12
|
|
|
16
13
|
type dns_result = { "name" => String, "TTL" => Numeric, "alias" => String }
|
|
17
14
|
| { "name" => String, "TTL" => Numeric, "data" => String }
|
|
18
15
|
|
|
19
|
-
def self?.cached_lookup: (String hostname) -> Array[String]?
|
|
20
16
|
|
|
21
|
-
def
|
|
17
|
+
def nolookup_resolve: (String hostname) -> Array[IPAddr]
|
|
18
|
+
|
|
19
|
+
def ip_resolve: (String hostname) -> Array[IPAddr]?
|
|
20
|
+
|
|
21
|
+
def system_resolve: (String hostname) -> Array[IPAddr]?
|
|
22
|
+
|
|
23
|
+
def self?.cached_lookup: (String hostname) -> Array[IPAddr]?
|
|
22
24
|
|
|
23
|
-
def self?.
|
|
25
|
+
def self?.cached_lookup_set: (String hostname, ip_family family, Array[dns_result] addresses) -> void
|
|
24
26
|
|
|
25
|
-
def self?.lookup: (String hostname, Numeric ttl) -> Array[
|
|
27
|
+
def self?.lookup: (String hostname, Numeric ttl) -> Array[IPAddr]?
|
|
26
28
|
|
|
27
29
|
def self?.generate_id: () -> Integer
|
|
28
30
|
|
data/sig/response.rbs
CHANGED
|
@@ -19,6 +19,7 @@ module HTTPX
|
|
|
19
19
|
|
|
20
20
|
@options: Options
|
|
21
21
|
@request: Request
|
|
22
|
+
@content_type: ContentType
|
|
22
23
|
|
|
23
24
|
def copy_to: (_ToPath | _Writer destination) -> void
|
|
24
25
|
def close: () -> void
|
|
@@ -45,9 +46,15 @@ module HTTPX
|
|
|
45
46
|
include _ToS
|
|
46
47
|
include _ToStr
|
|
47
48
|
|
|
49
|
+
@response: Response
|
|
50
|
+
@headers: Headers
|
|
51
|
+
@options: Options
|
|
48
52
|
@state: :idle | :memory | :buffer | :closed
|
|
49
53
|
@threshold_size: Integer
|
|
50
54
|
@window_size: Integer
|
|
55
|
+
@encoding: String
|
|
56
|
+
@length: Integer
|
|
57
|
+
@buffer: StringIO | Tempfile | nil
|
|
51
58
|
|
|
52
59
|
def write:(String chunk) -> Integer?
|
|
53
60
|
|
|
@@ -65,6 +72,7 @@ module HTTPX
|
|
|
65
72
|
def initialize: (Response, Options) -> untyped
|
|
66
73
|
def rewind: () -> void
|
|
67
74
|
def transition: () -> void
|
|
75
|
+
def _with_same_buffer_pos: [A] () { () -> A } -> A
|
|
68
76
|
end
|
|
69
77
|
end
|
|
70
78
|
|
|
@@ -72,12 +80,13 @@ module HTTPX
|
|
|
72
80
|
MIME_TYPE_RE: Regexp
|
|
73
81
|
CHARSET_RE: Regexp
|
|
74
82
|
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
@header_value: String?
|
|
84
|
+
@mime_type: String?
|
|
85
|
+
@charset: String?
|
|
77
86
|
|
|
78
|
-
def
|
|
79
|
-
|
|
80
|
-
def
|
|
87
|
+
def mime_type: () -> String?
|
|
88
|
+
|
|
89
|
+
def charset: () -> String?
|
|
81
90
|
|
|
82
91
|
private
|
|
83
92
|
|
|
@@ -89,6 +98,7 @@ module HTTPX
|
|
|
89
98
|
include Loggable
|
|
90
99
|
|
|
91
100
|
@options: Options
|
|
101
|
+
@error: Exception
|
|
92
102
|
|
|
93
103
|
attr_reader request: Request
|
|
94
104
|
|
data/sig/selector.rbs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
class Selector
|
|
3
|
-
type selectable = Connection | Resolver::Native | Resolver::
|
|
3
|
+
type selectable = Connection | Resolver::Native | Resolver::System
|
|
4
4
|
|
|
5
5
|
READABLE: Array[Symbol]
|
|
6
6
|
WRITABLE: Array[Symbol]
|
|
7
7
|
@selectables: Array[selectable]
|
|
8
8
|
|
|
9
|
-
def register: (selectable) -> void
|
|
10
|
-
def deregister: (selectable) -> void
|
|
9
|
+
def register: (selectable io) -> void
|
|
10
|
+
def deregister: (selectable io) -> void
|
|
11
11
|
|
|
12
12
|
def select: (Numeric? interval) { (selectable) -> void } -> void
|
|
13
13
|
|
data/sig/timers.rbs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
class Timers
|
|
3
|
-
@
|
|
3
|
+
@intervals: Array[Interval]
|
|
4
|
+
@next_interval_at: Numeric
|
|
4
5
|
|
|
5
6
|
def after: (Numeric interval_in_secs) { () -> void } -> void
|
|
6
7
|
|
|
7
8
|
def wait_interval: () -> Numeric?
|
|
8
9
|
|
|
9
|
-
def fire: (?
|
|
10
|
+
def fire: (?TimeoutError error) -> void
|
|
10
11
|
|
|
11
12
|
def cancel: () -> void
|
|
12
13
|
|
|
@@ -19,6 +20,8 @@ module HTTPX
|
|
|
19
20
|
|
|
20
21
|
attr_reader interval: Numeric
|
|
21
22
|
|
|
23
|
+
@callbacks: Array[^() -> void]
|
|
24
|
+
|
|
22
25
|
def to_f: () -> Float
|
|
23
26
|
|
|
24
27
|
def <<: (^() -> void) -> void
|
data/sig/transcoder/chunker.rbs
CHANGED
|
@@ -10,27 +10,38 @@ module HTTPX::Transcoder
|
|
|
10
10
|
class Encoder
|
|
11
11
|
@raw: _Each[String]
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
def each: () { (String) -> void } -> void
|
|
14
|
+
| () -> Enumerator[String, void]
|
|
14
15
|
|
|
15
16
|
private
|
|
16
17
|
|
|
17
|
-
def initialize: (_Each[String] chunks) ->
|
|
18
|
+
def initialize: (_Each[String] chunks) -> void
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
class Decoder
|
|
21
22
|
extend Forwardable
|
|
22
23
|
include _ToS
|
|
23
|
-
|
|
24
|
+
|
|
25
|
+
@buffer: String
|
|
26
|
+
@chunk_length: Integer
|
|
27
|
+
@chunk_buffer: String
|
|
28
|
+
@finished: bool
|
|
29
|
+
@state: Symbol
|
|
30
|
+
@trailers: bool
|
|
31
|
+
|
|
32
|
+
def each: () { (String) -> void } -> void
|
|
24
33
|
|
|
25
34
|
def finished?: () -> bool
|
|
35
|
+
|
|
26
36
|
def empty?: () -> bool
|
|
37
|
+
|
|
27
38
|
def <<: (string) -> void
|
|
39
|
+
|
|
28
40
|
def clear: () -> void
|
|
29
41
|
|
|
30
42
|
private
|
|
31
43
|
|
|
32
|
-
def initialize: (String, bool) ->
|
|
33
|
-
| (String) -> untyped
|
|
44
|
+
def initialize: (String, ?bool) -> void
|
|
34
45
|
|
|
35
46
|
def nextstate: (Symbol) -> void
|
|
36
47
|
end
|
data/sig/transcoder/json.rbs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module HTTPX::Transcoder
|
|
2
2
|
module JSON
|
|
3
|
+
JSON_REGEX: Regexp
|
|
4
|
+
|
|
3
5
|
def self?.encode: (_ToJson json) -> Encoder
|
|
4
6
|
def self?.decode: (HTTPX::Response response) -> _Decoder
|
|
5
7
|
|
|
@@ -8,6 +10,9 @@ module HTTPX::Transcoder
|
|
|
8
10
|
include _Encoder
|
|
9
11
|
include _ToS
|
|
10
12
|
|
|
13
|
+
@raw: String
|
|
14
|
+
@charset: String
|
|
15
|
+
|
|
11
16
|
def content_type: () -> String
|
|
12
17
|
|
|
13
18
|
private
|
data/sig/transcoder.rbs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
module HTTPX
|
|
2
2
|
type bodyIO = _Reader | _Each[[String, untyped]] | _ToS
|
|
3
3
|
|
|
4
|
+
type body_encoder = Transcoder::_Encoder | _Each[String]
|
|
5
|
+
|
|
4
6
|
module Transcoder
|
|
5
7
|
def self?.registry: (String tag) -> _Encode
|
|
6
8
|
| () -> Hash[String, _Encode]
|
|
@@ -12,7 +14,7 @@ module HTTPX
|
|
|
12
14
|
def self?.normalize_query: (Hash[String, untyped] params, String name, String v, Integer depth) -> void
|
|
13
15
|
|
|
14
16
|
interface _Encode
|
|
15
|
-
def encode: (untyped payload) ->
|
|
17
|
+
def encode: (untyped payload) -> body_encoder
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
interface _Encoder
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: httpx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.19.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tiago Cardoso
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-02-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: http-2-next
|
|
@@ -70,6 +70,7 @@ extra_rdoc_files:
|
|
|
70
70
|
- doc/release_notes/0_18_5.md
|
|
71
71
|
- doc/release_notes/0_18_6.md
|
|
72
72
|
- doc/release_notes/0_18_7.md
|
|
73
|
+
- doc/release_notes/0_19_0.md
|
|
73
74
|
- doc/release_notes/0_1_0.md
|
|
74
75
|
- doc/release_notes/0_2_0.md
|
|
75
76
|
- doc/release_notes/0_2_1.md
|
|
@@ -133,6 +134,7 @@ files:
|
|
|
133
134
|
- doc/release_notes/0_18_5.md
|
|
134
135
|
- doc/release_notes/0_18_6.md
|
|
135
136
|
- doc/release_notes/0_18_7.md
|
|
137
|
+
- doc/release_notes/0_19_0.md
|
|
136
138
|
- doc/release_notes/0_1_0.md
|
|
137
139
|
- doc/release_notes/0_2_0.md
|
|
138
140
|
- doc/release_notes/0_2_1.md
|
|
@@ -229,8 +231,9 @@ files:
|
|
|
229
231
|
- lib/httpx/request.rb
|
|
230
232
|
- lib/httpx/resolver.rb
|
|
231
233
|
- lib/httpx/resolver/https.rb
|
|
234
|
+
- lib/httpx/resolver/multi.rb
|
|
232
235
|
- lib/httpx/resolver/native.rb
|
|
233
|
-
- lib/httpx/resolver/
|
|
236
|
+
- lib/httpx/resolver/resolver.rb
|
|
234
237
|
- lib/httpx/resolver/system.rb
|
|
235
238
|
- lib/httpx/response.rb
|
|
236
239
|
- lib/httpx/selector.rb
|
|
@@ -293,8 +296,9 @@ files:
|
|
|
293
296
|
- sig/request.rbs
|
|
294
297
|
- sig/resolver.rbs
|
|
295
298
|
- sig/resolver/https.rbs
|
|
299
|
+
- sig/resolver/multi.rbs
|
|
296
300
|
- sig/resolver/native.rbs
|
|
297
|
-
- sig/resolver/
|
|
301
|
+
- sig/resolver/resolver.rbs
|
|
298
302
|
- sig/resolver/system.rbs
|
|
299
303
|
- sig/response.rbs
|
|
300
304
|
- sig/selector.rbs
|
|
@@ -331,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
331
335
|
- !ruby/object:Gem::Version
|
|
332
336
|
version: '0'
|
|
333
337
|
requirements: []
|
|
334
|
-
rubygems_version: 3.
|
|
338
|
+
rubygems_version: 3.3.3
|
|
335
339
|
signing_key:
|
|
336
340
|
specification_version: 4
|
|
337
341
|
summary: HTTPX, to the future, and beyond
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "resolv"
|
|
4
|
-
require "ipaddr"
|
|
5
|
-
|
|
6
|
-
module HTTPX
|
|
7
|
-
module Resolver
|
|
8
|
-
module ResolverMixin
|
|
9
|
-
include Callbacks
|
|
10
|
-
include Loggable
|
|
11
|
-
|
|
12
|
-
CHECK_IF_IP = lambda do |name|
|
|
13
|
-
begin
|
|
14
|
-
IPAddr.new(name)
|
|
15
|
-
true
|
|
16
|
-
rescue ArgumentError
|
|
17
|
-
false
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def uncache(connection)
|
|
22
|
-
hostname = hostname || @queries.key(connection) || connection.origin.host
|
|
23
|
-
Resolver.uncache(hostname)
|
|
24
|
-
@_record_types[hostname].shift
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def emit_addresses(connection, addresses)
|
|
30
|
-
addresses.map! do |address|
|
|
31
|
-
address.is_a?(IPAddr) ? address : IPAddr.new(address.to_s)
|
|
32
|
-
end
|
|
33
|
-
log { "resolver: answer #{connection.origin.host}: #{addresses.inspect}" }
|
|
34
|
-
connection.addresses = addresses
|
|
35
|
-
emit(:resolve, connection)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def early_resolve(connection, hostname: connection.origin.host)
|
|
39
|
-
addresses = connection.addresses ||
|
|
40
|
-
ip_resolve(hostname) ||
|
|
41
|
-
(@resolver_options[:cache] && Resolver.cached_lookup(hostname)) ||
|
|
42
|
-
system_resolve(hostname)
|
|
43
|
-
return unless addresses
|
|
44
|
-
|
|
45
|
-
emit_addresses(connection, addresses)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def ip_resolve(hostname)
|
|
49
|
-
[hostname] if CHECK_IF_IP[hostname]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def system_resolve(hostname)
|
|
53
|
-
@system_resolver ||= Resolv::Hosts.new
|
|
54
|
-
ips = @system_resolver.getaddresses(hostname)
|
|
55
|
-
return if ips.empty?
|
|
56
|
-
|
|
57
|
-
ips.map { |ip| IPAddr.new(ip) }
|
|
58
|
-
rescue IOError
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def emit_resolve_error(connection, hostname = connection.origin.host, ex = nil)
|
|
62
|
-
emit(:error, connection, resolve_error(hostname, ex))
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def resolve_error(hostname, ex = nil)
|
|
66
|
-
return ex if ex.is_a?(ResolveError)
|
|
67
|
-
|
|
68
|
-
message = ex ? ex.message : "Can't resolve #{hostname}"
|
|
69
|
-
error = ResolveError.new(message)
|
|
70
|
-
error.set_backtrace(ex ? ex.backtrace : caller)
|
|
71
|
-
error
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module HTTPX
|
|
2
|
-
module Resolver
|
|
3
|
-
module ResolverMixin
|
|
4
|
-
include Callbacks
|
|
5
|
-
include Loggable
|
|
6
|
-
|
|
7
|
-
CHECK_IF_IP: ^(String name) -> bool
|
|
8
|
-
|
|
9
|
-
def uncache: (Connection) -> void
|
|
10
|
-
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
def emit_addresses: (Connection, Array[ipaddr]) -> void
|
|
14
|
-
|
|
15
|
-
def early_resolve: (Connection, ?hostname: String) -> void
|
|
16
|
-
|
|
17
|
-
def ip_resolve: (String hostname) -> Array[ipaddr]?
|
|
18
|
-
|
|
19
|
-
def system_resolve: (String hostname) -> Array[ipaddr]?
|
|
20
|
-
|
|
21
|
-
def emit_resolve_error: (Connection, ?String hostname, ?StandardError) -> void
|
|
22
|
-
|
|
23
|
-
def resolve_error: (String hostname, ?StandardError?) -> void
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|