class ExactTargetClient::ExactTargetRestClient

Attributes

oauth_token[RW]

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 5
def initialize
  yield self if block_given?
end

Public Instance Methods

get_oauth_token(client_id, client_secret, refresh_token = nil) click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 9
def get_oauth_token(client_id, client_secret, refresh_token = nil)
  request_url = Conf.token_endpoint
  params = {
      clientId: client_id,
      clientSecret: client_secret,
      accessType: 'offline'
  }
  if refresh_token.present?
    params[:refreshToken] = refresh_token
  end
  request(:post, request_url, params, false)
end
increment_data_extension_row(data_extension_customer_key, primary_key_name, primary_key_value, column, step = 1) click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 31
def increment_data_extension_row(data_extension_customer_key, primary_key_name, primary_key_value, column, step = 1)
  request_url = "#{Conf.api_endpoint}/hub/v1/dataevents/key:#{data_extension_customer_key}/rows/#{primary_key_name}:#{primary_key_value}/column/#{column}/increment?step=#{step}"
  request(:put, request_url)
end
set_oauth_token(token) click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 22
def set_oauth_token(token)
  @oauth_token = token
end
upsert_data_extension_row(data_extension_customer_key, primary_key_name, primary_key_value, object_hash) click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 26
def upsert_data_extension_row(data_extension_customer_key, primary_key_name, primary_key_value, object_hash)
  request_url = "#{Conf.api_endpoint}/hub/v1/dataevents/key:#{data_extension_customer_key}/rows/#{primary_key_name}:#{primary_key_value}"
  request(:put, request_url, {values: object_hash})
end

Private Instance Methods

request(type, url, params = nil, add_token = true) click to toggle source
# File lib/exact_target_client/exact_target_rest_client.rb, line 38
def request(type, url, params = nil, add_token = true)
  body = params.to_json if params
  headers = { 'Content-Type' => 'application/json' }
  headers['Authorization'] = "Bearer #{@oauth_token}" if add_token
  request = Typhoeus::Request.new(
      url,
      method: type,
      body: body,
      headers: headers,
      followlocation: true
  )
  request.on_complete do |response|
    case response.code
      when 200..299
        return Oj.load(response.body)
      when 401
        raise ExactTargetClient::ExactTargetAPI::TokenExpired
      else
        raise ExactTargetClient::ExactTargetAPI::ClientException.new("REST API Error #{response.code}: #{response.response_body}")
    end
  end
  request.run
end