class MonkeyBusiness::HttpRequest

Abstraction of an HTTP request sent to the surveymonkey API

Public Class Methods

delete() click to toggle source
# File lib/api/request.rb, line 68
def self.delete
  request = Net::HTTP::Delete.new(@uri.request_uri)

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end
get() click to toggle source
# File lib/api/request.rb, line 26
def self.get
  params = @options.map { |k, v| "#{k}=#{URI.encode(v)}" }.join('&')

  request = Net::HTTP::Get.new("#{@uri.request_uri}?#{params}")
  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  response = @http.request(request)

  JSON.parse(response.body)
end
head() click to toggle source
# File lib/api/request.rb, line 77
def self.head
  request = Net::HTTP::Head.new(@uri.request_uri)
  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request).to_hash
end
options() click to toggle source
# File lib/api/request.rb, line 85
def self.options
  request = Net::HTTP::Options.new(@uri.request_uri)

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  response = @http.request(request)

  response['Allow'].split(',').map { |x| x.downcase.to_sym }
end
patch() click to toggle source
# File lib/api/request.rb, line 58
def self.patch
  request = Net::HTTP::Patch.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end
post() click to toggle source
# File lib/api/request.rb, line 38
def self.post
  request = Net::HTTP::Post.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end
put() click to toggle source
# File lib/api/request.rb, line 48
def self.put
  request = Net::HTTP::Put.new(@uri.request_uri)
  request.body = @options.to_json

  request['Authorization'] = "bearer #{@access_token}"
  request['Content-Type'] = 'application/json'

  @http.request(request)
end
request(access_token, uri, options = {}) click to toggle source
# File lib/api/request.rb, line 11
def self.request(access_token, uri, options = {})
  @access_token = access_token
  @uri = URI(uri)

  @http_method = options[:method] ? options.delete(:method).to_sym : :get
  @options = options

  raise HttpMethodError, @http_method unless respond_to?(@http_method)

  @http = Net::HTTP.new(@uri.host, @uri.port)
  @http.use_ssl = true

  send(@http_method)
end