Module: HTTPUtils

Included in:
ChronosEndpoint, ConsulCluster, DockerHost, MarathonEndpoint, MesosCluster
Defined in:
lib/panteras_api/http_utils.rb

Instance Method Summary collapse

Instance Method Details

#construct_uri(url) ⇒ Object

Raises:

  • (Error::BadURLError)


47
48
49
50
# File 'lib/panteras_api/http_utils.rb', line 47

def construct_uri(url)
  raise Error::BadURLError unless (valid_url(url))
  return URI.parse(url)
end

#get_response_with_redirect(host, request_uri, port, user = '', passwd = '') ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/panteras_api/http_utils.rb', line 8

def get_response_with_redirect(host, request_uri, port, user='', passwd='')
   begin
     retries ||= 0
     http = Net::HTTP::new(host, port)
     req = Net::HTTP.const_get('Get').new(request_uri)
     req.basic_auth user,passwd
     response = http.request(req)
   rescue Zlib::DataError, Zlib::BufError, Net::OpenTimeout
     retry if (retries += 1) < 3
   rescue Exception => e
     raise e
   end

   if response.is_a?(Net::HTTPRedirection)
     begin
     redirect_uri = URI.parse(response.header['location'])
     return redirect_uri
     rescue SocketError => e
       raise e, "Error connecting to #{redirect_uri}: #{e.message}"
     end
   end     
   response
end

#to_j(response) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/panteras_api/http_utils.rb', line 32

def to_j(response)
  if response.is_a? Net::HTTPResponse
    JSON.parse(response.body, :symbolize_names => true)
  elsif response.is_a? String
    JSON.parse(response, :symbolize_names => true)
  end 
end

#valid_url(url) ⇒ Object



40
41
42
43
44
45
# File 'lib/panteras_api/http_utils.rb', line 40

def valid_url(url)
  if (url =~ /\A#{URI::regexp}\z/)
    return true
  end
  return false
end