Method: Circonus#_rest

Defined in:
lib/circonus.rb

#_rest(type, url, headers, data = nil) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/circonus.rb', line 54

def _rest(type,url,headers,data=nil)
  #STDERR.puts "_rest: type=#{type} url=#{url} headers=#{headers.inspect} data=#{data.inspect}"
  begin
    resource = RestClient::Resource.new url, :timeout => @options[:timeout], :open_timeout => @options[:open_timeout], :verify_ssl => @options[:verify_ssl]
    case type
    when 'delete'
      r = resource.delete headers
    when 'post'
      r = resource.post Yajl::Encoder.encode(data), headers
    when 'put'
      r = resource.put Yajl::Encoder.encode(data), headers
    else 'get'
      r = resource.get headers
    end
  rescue RestClient::Forbidden,RestClient::BadRequest,RestClient::InternalServerError,RestClient::MethodNotAllowed => e
    err = Yajl::Parser.parse(e.response)
    print "Error (#{e.http_code}): ",err['error']," [#{e.http_body}]\n" if @debug
    raise if @raise_errors
    return nil,err
  rescue RestClient::RequestTimeout
    raise Circonus::Timeout
  end
  return r
end