Class: ERPC::NetHttpAdapter
- Inherits:
-
Object
- Object
- ERPC::NetHttpAdapter
- Defined in:
- lib/erpc_sdk/transport.rb
Instance Method Summary collapse
- #request(method:, url:, headers:, body: nil, timeout: DEFAULT_TIMEOUT) ⇒ Object
- #stream(url:, headers:, timeout: DEFAULT_TIMEOUT) ⇒ Object
Instance Method Details
#request(method:, url:, headers:, body: nil, timeout: DEFAULT_TIMEOUT) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/erpc_sdk/transport.rb', line 14 def request(method:, url:, headers:, body: nil, timeout: DEFAULT_TIMEOUT) uri = URI.parse(url) request = request_class(method).new(uri.request_uri, headers) request.body = body unless body.nil? response = start(uri, timeout) { |http| http.request(request) } HttpResponse.new(status: response.code.to_i, body: response.body.to_s) rescue Net::OpenTimeout, Net::ReadTimeout, Net::WriteTimeout raise TimeoutError, timeout rescue IOError, EOFError, SocketError, SystemCallError, OpenSSL::SSL::SSLError raise TransportError, "Unable to reach ERPC" end |
#stream(url:, headers:, timeout: DEFAULT_TIMEOUT) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/erpc_sdk/transport.rb', line 26 def stream(url:, headers:, timeout: DEFAULT_TIMEOUT) Enumerator.new do |yielder| uri = URI.parse(url) request = Net::HTTP::Get.new(uri.request_uri, headers) start(uri, timeout) do |http| http.request(request) do |response| status = response.code.to_i raise HttpError, status unless status.between?(200, 299) response.read_body { |chunk| yielder << chunk } end end rescue Net::OpenTimeout, Net::ReadTimeout, Net::WriteTimeout raise TimeoutError, timeout rescue HttpError raise rescue IOError, EOFError, SocketError, SystemCallError, OpenSSL::SSL::SSLError raise TransportError, "Unable to reach ERPC" end end |