class Qualtrics::Operation

Constants

REQUEST_METHOD_WHITELIST

Attributes

action[R]
command[R]
entity_name[R]
http_method[R]
options[R]

Public Class Methods

add_listener(listener) click to toggle source
# File lib/qualtrics/operation.rb, line 53
def add_listener(listener)
  @@listeners << listener
end
delete_listener(listener) click to toggle source
# File lib/qualtrics/operation.rb, line 57
def delete_listener(listener)
  @@listeners.delete(listener)
end
flush_listeners!() click to toggle source
# File lib/qualtrics/operation.rb, line 61
def flush_listeners!
  @@listeners = []
end
new(http_method, action, options, body_override = nil) click to toggle source
# File lib/qualtrics/operation.rb, line 7
def initialize(http_method, action, options, body_override = nil)
  @http_method = http_method
  @action = action
  @options = options
  @entity_name = action.gsub(/(create|delete|update)/, '')
  @body_override = body_override
  @command = $1
end

Public Instance Methods

disable_listeners(&block) click to toggle source
# File lib/qualtrics/operation.rb, line 46
def disable_listeners(&block)
  @listeners_disabled = true
  block.call(self)
  @listeners_disabled = nil
end
issue_request() click to toggle source
# File lib/qualtrics/operation.rb, line 16
def issue_request
  raise Qualtrics::UnexpectedRequestMethod if !REQUEST_METHOD_WHITELIST.include?(http_method)

  query = default_params.dup.merge(options)
  query['Request'] = action
  body = nil
  query_params = {}
  raw_resp = nil

  if @body_override
    body = @body_override
    query_params = query
    raw_resp = connection.send(http_method, path, body) do |req|
      req.params = query_params
    end
  else
    body = query
    raw_resp = connection.send(http_method, path, body)
  end


  Qualtrics::Response.new(raw_resp).tap do |response|
    if !@listeners_disabled
      @@listeners.each do |listener|
        listener.received_response(self, response)
      end
    end
  end
end

Protected Instance Methods

configuration() click to toggle source
# File lib/qualtrics/operation.rb, line 88
def configuration
  Qualtrics.configuration
end
connection() click to toggle source
# File lib/qualtrics/operation.rb, line 71
def connection
  @connection ||= Faraday.new(:url => 'https://survey.qualtrics.com') do |faraday|
    faraday.request  :url_encoded
    faraday.use ::FaradayMiddleware::FollowRedirects, limit: 3
    faraday.adapter Faraday.default_adapter
  end
end
default_params() click to toggle source
# File lib/qualtrics/operation.rb, line 79
def default_params
  {
    'User' => configuration.user,
    'Token' => configuration.token,
    'Version' => configuration.version,
    'Format' => 'JSON'
  }
end
path() click to toggle source
# File lib/qualtrics/operation.rb, line 67
def path
  '/WRAPI/ControlPanel/api.php'
end