Module: Ruuuby::Protocols::RequestHTTP

Defined in:
lib/ruuuby/protocol/http_request.rb

Overview

Class Method Summary collapse

Class Method Details

.execute(uri, params = {}) ⇒ Net::HTTPResponse

Parameters:

  • uri (String, URI)
  • params (Hash) (defaults to: {})

Returns:

Raises:

  • (ArgumentError)


64
65
66
67
68
69
70
71
72
# File 'lib/ruuuby/protocol/http_request.rb', line 64

def self.execute(uri, params={})
  the_uri  = self.parse_uri(uri, params)
  response = nil
  ::Net::HTTP.start(the_uri.host, the_uri.port) do |http|
    request  = Net::HTTP::Get.new(the_uri)
    response = http.request(request)
  end
  return response
end

.execute!(uri, params = {}) ⇒ Net::HTTPResponse

TODO: add full testing coverage

Parameters:

  • uri (String, URI)
  • params (Hash) (defaults to: {})

Returns:

Raises:

  • (ArgumentError, RuntimeError)


82
83
84
85
86
87
88
89
90
91
# File 'lib/ruuuby/protocol/http_request.rb', line 82

def self.execute!(uri, params={})
  the_uri  = self.parse_uri(uri, params)
  response = nil
  ::Net::HTTP.start(the_uri.host, the_uri.port) do |http|
    request  = Net::HTTP::Get.new(the_uri)
    response = http.request(request)
  end
  🛑 ::RuntimeError.new("| c{RequestHTTP}-> m{execute!} got non-200 response{#{response.code.to_s}} for uri{#{uri.to_s}}|") unless response.code == '200'
  return response
end

.execute_timed!(uri) ⇒ Net::HTTPResponse

Parameters:

Returns:

Raises:

  • (ArgumentError, RuntimeError)


98
99
100
101
102
103
# File 'lib/ruuuby/protocol/http_request.rb', line 98

def self.execute_timed!(uri)
  time_start = ::Time.now
  response   = self.execute!(uri)
  time_delta = time_start - response.time_received
  return response, time_delta
end

.parse_uri(uri, params) ⇒ URI, URI::HTTP

Parameters:

Returns:

  • (URI, URI::HTTP)

Raises:

  • (ArgumentError)

See Also:



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/ruuuby/protocol/http_request.rb', line 115

def self.parse_uri(uri, params)
  if uri.str?
    uri = URI(uri)
  elsif uri. != URI && uri. != URI::HTTP
    🛑 ::ArgumentError.new("| c{RequestHTTP}-> m{execute!} got invalid type{#{uri.}} for arg(uri) |")
  end
  unless params.empty?
    if uri.query == nil
      uri.query = URI.encode_www_form(params)
    else
      params    = Hash[URI.decode_www_form(uri.query || '')].merge(params)
      uri.query = URI.encode_www_form(params)
    end
  end
  uri
end