Class: SurveyMonkey::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/survey_monkey/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Request

Returns a new instance of Request.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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

Instance Attribute Details

#api_methodObject

Returns the value of attribute api_method.



3
4
5
# File 'lib/survey_monkey/request.rb', line 3

def api_method
  @api_method
end

#parametersObject

Returns the value of attribute parameters.



3
4
5
# File 'lib/survey_monkey/request.rb', line 3

def parameters
  @parameters
end

#requestObject

Returns the value of attribute request.



3
4
5
# File 'lib/survey_monkey/request.rb', line 3

def request
  @request
end

#responseObject

Returns the value of attribute response.



3
4
5
# File 'lib/survey_monkey/request.rb', line 3

def response
  @response
end

#uriObject

Returns the value of attribute uri.



3
4
5
# File 'lib/survey_monkey/request.rb', line 3

def uri
  @uri
end

Instance Method Details

#build_requestObject



54
55
56
# 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_bodyObject



31
32
33
34
# 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_headerObject



45
46
47
48
# 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_methodObject



36
37
38
# File 'lib/survey_monkey/request.rb', line 36

def request_method
  @parameters.http_method
end

#request_paramsObject



40
41
42
43
# File 'lib/survey_monkey/request.rb', line 40

def request_params
  ### Params to be URL Encoded
  Hash['api_key' => api_key]
end

#request_urlObject



50
51
52
# File 'lib/survey_monkey/request.rb', line 50

def request_url
  uri
end

#resultObject



93
94
95
# File 'lib/survey_monkey/request.rb', line 93

def result
  JSON.parse @response.body
end

#run_requestObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# 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_responseObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 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| ... } ⇒ Object

Yields:



27
28
29
# File 'lib/survey_monkey/request.rb', line 27

def set_parameters
  yield @parameters if block_given?
end

#submitObject



97
98
99
100
# File 'lib/survey_monkey/request.rb', line 97

def submit
  run_request
  result
end