Class: StrongmindCanvasApiClient::CanvasClientExtended

Inherits:
Canvas::API
  • Object
show all
Defined in:
lib/strongmind_canvas_api_client.rb

Constant Summary collapse

LEGACY_DOMAIN_SUFFIX =
'strongmind.com'

Instance Attribute Summary

Attributes inherited from Canvas::API

#client_id, #host, #token

Instance Method Summary collapse

Methods inherited from Canvas::API

#clean_params, #delete, encode_id, #encode_id, #generate_uri, #get, #get_request, #login_url, #logout, #masquerade_as, #multipart_upload, #oauth_url, #post, #post_multi, #put, #retrieve_access_token, #retrieve_response, #stop_masquerading, #upload_file_from_local, #upload_file_from_url, #validate_call

Constructor Details

#initialize(domain:, api_token:) ⇒ CanvasClientExtended

Returns a new instance of CanvasClientExtended.



12
13
14
15
16
# File 'lib/strongmind_canvas_api_client.rb', line 12

def initialize(domain:, api_token:)
  @domain = domain
  @api_token = api_token
  super(:host => "https://#{@domain}", :token => @api_token)
end

Instance Method Details

#create_admin(user_id:) ⇒ Object

Returns a canvas admin object



88
89
90
91
92
93
94
95
96
# File 'lib/strongmind_canvas_api_client.rb', line 88

def create_admin(user_id:)
  begin
    self.post("/api/v1/accounts/1/admins", { :user_id => user_id,
                                             :send_confirmation => false })
  rescue => e
    puts "User #{user_id} had an issue and cannot be promoted to an admin"
    puts e.message
  end
end

#create_lti(payload:) ⇒ Object



98
99
100
# File 'lib/strongmind_canvas_api_client.rb', line 98

def create_lti(payload:)
  self.post('/api/v1/accounts/1/external_tools', payload)
end

#create_user(payload:) ⇒ Object

Returns a canvas user object



76
77
78
79
80
81
82
83
84
85
# File 'lib/strongmind_canvas_api_client.rb', line 76

def create_user(payload:)
  begin
    self.post("/api/v1/accounts/1/users", payload)
  rescue => e
    puts "Unable to create user in #{@domain}"
    puts "Reason: #{e.message}"
    puts "Payload: #{payload}"
    puts "Backtrace: #{e.backtrace}"
  end
end

#enterprise?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/strongmind_canvas_api_client.rb', line 18

def enterprise?
  @domain.include? LEGACY_DOMAIN_SUFFIX
end

#get_admins(account_id:) ⇒ Object

Returns paginated list of canvas admin objects



36
37
38
# File 'lib/strongmind_canvas_api_client.rb', line 36

def get_admins(account_id:)
  self.get_paginated(endpoint: "/api/v1/accounts/#{account_id}/admins")
end

#get_auth_provider_idObject



69
70
71
72
73
# File 'lib/strongmind_canvas_api_client.rb', line 69

def get_auth_provider_id
  auth_providers = self.get("/api/v1/accounts/1/authentication_providers")
  auth_providers.each(&:deep_symbolize_keys!)
  auth_providers.find { |provider| provider[:auth_type] == 'openid_connect' }[:id]
end

#get_canvas_user(user_id:) ⇒ Object



53
54
55
# File 'lib/strongmind_canvas_api_client.rb', line 53

def get_canvas_user(user_id:)
  self.get("/api/v1/users/#{user_id}").deep_symbolize_keys
end

#get_legacy_user_w_email(user_id:) ⇒ Object



57
58
59
60
61
62
# File 'lib/strongmind_canvas_api_client.rb', line 57

def get_legacy_user_w_email(user_id:)
  user = self.get_canvas_user(user_id: user_id)
  communication_channels = self.get("/api/v1/users/#{user_id}/communication_channels").first.symbolize_keys
  user[:email] = communication_channels[:address]
  user
end

#get_observers(observee_id:) ⇒ Object

Returns paginated list of canvas user objects



31
32
33
# File 'lib/strongmind_canvas_api_client.rb', line 31

def get_observers(observee_id:)
  self.get_paginated(endpoint: "/api/v1/users/#{observee_id}/observers")
end

#get_paginated(endpoint:) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/strongmind_canvas_api_client.rb', line 22

def get_paginated(endpoint:)
  response = self.get(endpoint)
  while response.more?
    response.next_page!
  end
  response.each(&:deep_symbolize_keys!)
end

#get_user(user_id:) ⇒ Object

Returns a canvas user object



46
47
48
49
50
51
# File 'lib/strongmind_canvas_api_client.rb', line 46

def get_user(user_id:)
  if enterprise?
    return self.get_legacy_user_w_email(user_id: user_id)
  end
  get_canvas_user(user_id: user_id)
end

#get_user_by_integration_id(integration_id:) ⇒ Object

Returns a canvas user object



65
66
67
# File 'lib/strongmind_canvas_api_client.rb', line 65

def get_user_by_integration_id(integration_id:)
  self.get("/api/v1/users/sis_login_id:#{integration_id}").deep_symbolize_keys
end

#get_users(account_id:, role:) ⇒ Object

Returns paginated list of canvas user objects



41
42
43
# File 'lib/strongmind_canvas_api_client.rb', line 41

def get_users(account_id:, role:)
  self.get_paginated(endpoint: "/api/v1/accounts/#{account_id}/users?enrollment_type=#{role}&include[]=email")
end

#upsert_association_by_integration_id(observer_id:, observee_id:) ⇒ Object

Returns a canvas user object



103
104
105
106
107
108
109
110
# File 'lib/strongmind_canvas_api_client.rb', line 103

def upsert_association_by_integration_id(observer_id:, observee_id:)
  begin
    self.put("/api/v1/users/sis_login_id:#{observer_id}/observees/sis_login_id:#{observee_id}")
  rescue => e
    puts "Cannot set User #{observer_id} as Observer for #{observee_id}"
    puts e.backtrace
  end
end