class CompanionCube::Client

Constants

API_HEADERS

Attributes

resource[RW]

Public Class Methods

new(url:, access_key: nil, secret_key: nil) click to toggle source
# File lib/companion_cube/client.rb, line 8
def initialize(url:, access_key: nil, secret_key: nil)
  raise "Missing required parameter 'url'" if url.nil? || url.empty?

  keys_empty = !access_key.nil? && access_key.empty?
  keys_empty ||= !secret_key.nil? && secret_key.empty?
  raise "Access/secret key cannot be blank" if keys_empty

  self.resource = RestClient::Resource.new(url, access_key, secret_key)
end

Public Instance Methods

course(id) click to toggle source
# File lib/companion_cube/client.rb, line 32
def course(id)
  raise "Missing required parameter 'id'" if id.nil?

  JSON.parse(send_request(:get, "/courses/#{id}"))
end
courses() click to toggle source
# File lib/companion_cube/client.rb, line 18
def courses
  JSON.parse(send_request(:get, "/courses"))
end
create_course(params) click to toggle source
# File lib/companion_cube/client.rb, line 22
def create_course(params)
  params[:multipart] = true

  send_request(:post, "/courses", body: params)
end
delete_course(id) click to toggle source
# File lib/companion_cube/client.rb, line 28
def delete_course(id)
  send_request(:delete, "/courses/#{id}")
end
enroll_user(id, email) click to toggle source
# File lib/companion_cube/client.rb, line 38
def enroll_user(id, email)
  raise "Missing required parameter 'id'" if id.nil?
  raise "Missing required parameter 'email'" if email.nil?
  params = Hash.new
  params[:id] = id
  params[:email] = email
  send_request(:put, "/enrollments/#{id}", body: params)
end
reports(type, params = {}) click to toggle source
# File lib/companion_cube/client.rb, line 53
def reports(type, params = {})
  raise "Missing required parameter 'type'" if type.nil?
  format = params.fetch(:format, :json).to_sym

  response = send_request(:get, "/reports/#{type}", params: params, accept: format)
  return JSON.parse(response) if format == :json
  # csv, etc.
  response
end
update_course(id, params) click to toggle source
# File lib/companion_cube/client.rb, line 47
def update_course(id, params)
  params[:multipart] = true

  send_request(:put, "/courses/#{id}", body: params)
end

Protected Instance Methods

send_request(method, path, opts = {}) click to toggle source
# File lib/companion_cube/client.rb, line 67
def send_request(method, path, opts = {})
  body    = opts.fetch(:body, {})
  headers = opts.fetch(:headers, {}).merge(API_HEADERS)

  response = if %i[get delete].include?(method)
               resource[path].send(method, opts)
             else
               resource[path].send(method, body, headers)
             end

  response.body
end