class SurveyMonkey::Request

Attributes

api_method[RW]
parameters[RW]
request[RW]
response[RW]
uri[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/survey_monkey/request.rb, line 5
def initialize(options={})
  @auth             = options[:auth] || Auth.new
  @api_method       = options[:api_method].to_s
  @init_parameters  = options[:params]

  @api_key = @auth.api_key
  @access_token = @auth.access_token

  ### Instantiate Parameters based on API method
  @parameters = Parameters.new(@api_method)
  @uri = @parameters.uri

  # If options[:params] was spet, set parameters now
  if @init_parameters.respond_to? :each
    set_parameters do |p|
      @init_parameters.each do |key,value|
        p.send "#{key}=", value
      end
    end
  end
end

Public Instance Methods

build_request() click to toggle source
# File lib/survey_monkey/request.rb, line 54
def build_request
  @request = Typhoeus::Request.new(request_url, method: request_method, body: request_body, params: request_params, headers: request_header)
end
request_body() click to toggle source
# File lib/survey_monkey/request.rb, line 31
def request_body
  ### Params to be included in Body of request, should be a JSON encoded string
  @parameters.to_json
end
request_header() click to toggle source
# File lib/survey_monkey/request.rb, line 45
def request_header
  ### Header includes content-type and access token
  Hash["Authorization" => "bearer #{access_token}", "Content-Type" => "application/json"]
end
request_method() click to toggle source
# File lib/survey_monkey/request.rb, line 36
def request_method
  @parameters.http_method
end
request_params() click to toggle source
# File lib/survey_monkey/request.rb, line 40
def request_params
  ### Params to be URL Encoded
  Hash['api_key' => api_key]
end
request_url() click to toggle source
# File lib/survey_monkey/request.rb, line 50
def request_url
  uri
end
result() click to toggle source
# File lib/survey_monkey/request.rb, line 93
def result
  JSON.parse @response.body
end
run_request() click to toggle source
# File lib/survey_monkey/request.rb, line 58
def run_request
  request = build_request
  request.on_complete do |response|
    if response.success?
      @response = response
    elsif response.timed_out?
      @response = "Response timed out"
    elsif response.code == 0
      # Could not get an http response, something's wrong.
      @response = response.return_message
    else
      # Received a non-successful http response.
      @response = "HTTP request failed: #{response.code}"
    end
  end
  request.run
  self
end
set_on_complete_response() click to toggle source
# File lib/survey_monkey/request.rb, line 77
def set_on_complete_response
  @request.on_complete do |response|
    if response.success?
      @response = response
    elsif response.timed_out?
      @response = "Response timed out"
    elsif response.code == 0
      # Could not get an http response, something's wrong.
      @response = response.return_message
    else
      # Received a non-successful http response.
      @response = "HTTP request failed: #{response.code}"
    end
  end
end
set_parameters() { |parameters| ... } click to toggle source
# File lib/survey_monkey/request.rb, line 27
def set_parameters
  yield @parameters if block_given?
end
submit() click to toggle source
# File lib/survey_monkey/request.rb, line 97
def submit
  run_request
  result
end

Private Instance Methods

access_token() click to toggle source
# File lib/survey_monkey/request.rb, line 107
def access_token
  @access_token
end
api_key() click to toggle source
# File lib/survey_monkey/request.rb, line 103
def api_key
  @api_key
end