blob: 7d1637ec55dd18f0f4a886e2c651c4dbaa4df4b6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# frozen_string_literal: true
module Net
module Hippie
# Rust backend integration
module RustBackend
@rust_available = nil
def self.available?
return @rust_available unless @rust_available.nil?
@rust_available = begin
require 'net_hippie_ext'
true
rescue LoadError
false
end
end
def self.enabled?
ENV['NET_HIPPIE_RUST'] == 'true' && available?
end
# Adapter to make RustResponse behave like Net::HTTPResponse
class ResponseAdapter
def initialize(rust_response)
@rust_response = rust_response
@code = rust_response.code
@body = rust_response.body
end
def code
@code
end
def body
@body
end
def [](header_name)
@rust_response[header_name.to_s]
end
def class
case @code.to_i
when 200
Net::HTTPOK
when 201
Net::HTTPCreated
when 300..399
Net::HTTPRedirection
when 400..499
Net::HTTPClientError
when 500..599
Net::HTTPServerError
else
Net::HTTPResponse
end
end
# Make it behave like the expected response class
def is_a?(klass)
self.class == klass || super
end
def kind_of?(klass)
is_a?(klass)
end
end
end
end
end
|