class OneRoster::Connection

Constants

OPEN_TIMEOUT
TIMEOUT

Public Class Methods

new(client, oauth_strategy = 'oauth') click to toggle source
# File lib/one_roster/connection.rb, line 8
def initialize(client, oauth_strategy = 'oauth')
  @client = client
  @oauth_strategy = oauth_strategy
end

Public Instance Methods

connection() click to toggle source
# File lib/one_roster/connection.rb, line 22
def connection
  return @connection if @connection

  @connection = if @oauth_strategy == 'oauth2'
                  oauth2_connection
                else
                  oauth_connection
                end
end
execute(path, method = :get, params = nil, body = nil) click to toggle source
# File lib/one_roster/connection.rb, line 13
def execute(path, method = :get, params = nil, body = nil)
  Response.new(raw_request(path, method, params, body))
end
log(message = '') click to toggle source
# File lib/one_roster/connection.rb, line 32
def log(message = '')
  return unless @client.logger

  @client.logger.info message
end
set_auth_headers(token, cookie) click to toggle source
# File lib/one_roster/connection.rb, line 17
def set_auth_headers(token, cookie)
  connection.authorization :Bearer, token
  @cookie = cookie
end

Private Instance Methods

oauth2_connection() click to toggle source
# File lib/one_roster/connection.rb, line 64
def oauth2_connection
  connection = Faraday.new(@client.api_url) do |connection|
    connection.request :json
    connection.response :logger, @client.logger if @client.logger
    connection.response :json, content_type: /\bjson$/
    connection.adapter Faraday.default_adapter
  end
  connection.basic_auth(@client.app_id, @client.app_secret)
  connection
end
oauth_connection() click to toggle source
# File lib/one_roster/connection.rb, line 53
def oauth_connection
  Faraday.new(@client.api_url) do |connection|
    connection.request :oauth,
                       consumer_key: @client.app_id,
                       consumer_secret: @client.app_secret
    connection.response :logger, @client.logger if @client.logger
    connection.response :json, content_type: /\bjson$/
    connection.adapter Faraday.default_adapter
  end
end
raw_request(path, method, params, body) click to toggle source
# File lib/one_roster/connection.rb, line 40
def raw_request(path, method, params, body)
  p "request #{path} #{params}"

  connection.public_send(method) do |request|
    request.options.open_timeout     = OPEN_TIMEOUT
    request.options.timeout          = TIMEOUT
    request.url path, params
    request.headers['Accept-Header'] = 'application/json'
    request.headers['Cookie']        = @cookie
    request.body                     = body
  end
end