class LeanplumApi::Connection

Constants

LEANPLUM_API_PATH

Public Class Methods

new(client_key) click to toggle source
# File lib/leanplum_api/connection.rb, line 5
def initialize(client_key)
  @client_key = client_key
end

Public Instance Methods

get(query) click to toggle source
# File lib/leanplum_api/connection.rb, line 9
def get(query)
  connection.get(LEANPLUM_API_PATH, query.merge(authentication_params)).body['response']
end
multi(payload) click to toggle source
# File lib/leanplum_api/connection.rb, line 13
def multi(payload)
  connection.post("#{LEANPLUM_API_PATH}?#{authed_multi_param_string}") do |request|
    request.body = { data: payload }
  end.body['response']
end
multi_dev(payload) click to toggle source
# File lib/leanplum_api/connection.rb, line 19
def multi_dev(payload)
  connection
    .post("#{LEANPLUM_API_PATH}?#{authed_multi_param_string}&#{URI.encode_www_form(payload)}")
    .body['response']
end

Private Instance Methods

authed_multi_param_string() click to toggle source
# File lib/leanplum_api/connection.rb, line 58
def authed_multi_param_string
  params = authentication_params.merge(action: 'multi', time: Time.now.utc.strftime('%s'))
  params.merge!(devMode: true) if LeanplumApi.configuration.developer_mode
  URI.encode_www_form(params)
end
authentication_params() click to toggle source
# File lib/leanplum_api/connection.rb, line 27
def authentication_params
  {
    appId: LeanplumApi.configuration.app_id,
    clientKey: @client_key,
    apiVersion: LeanplumApi.configuration.api_version,
    devMode: LeanplumApi.configuration.developer_mode
  }
end
connection() click to toggle source
# File lib/leanplum_api/connection.rb, line 36
def connection
  fail 'APP_ID not configured!' unless LeanplumApi.configuration.app_id

  options = {
    url: 'https://www.leanplum.com',
    request: {
      timeout: LeanplumApi.configuration.timeout_seconds,
      open_timeout: LeanplumApi.configuration.timeout_seconds
    }
  }

  @connection ||= Faraday.new(options) do |connection|
    connection.request :leanplum_response_validation
    connection.request :json

    connection.response :logger, LeanplumApi.configuration.logger, bodies: true if LeanplumApi.configuration.api_debug
    connection.response :json, :content_type => /\bjson$/

    connection.adapter Faraday.default_adapter
  end
end