Class: StrongmindCanvasApiClient::CanvasClientExtended
- Inherits:
-
Canvas::API
- Object
- Canvas::API
- StrongmindCanvasApiClient::CanvasClientExtended
- Defined in:
- lib/strongmind_canvas_api_client.rb
Constant Summary collapse
- LEGACY_DOMAIN_SUFFIX =
'strongmind.com'
Instance Attribute Summary
Attributes inherited from Canvas::API
Instance Method Summary collapse
-
#create_admin(user_id:) ⇒ Object
Returns a canvas admin object.
- #create_lti(payload:) ⇒ Object
-
#create_user(payload:) ⇒ Object
Returns a canvas user object.
- #enterprise? ⇒ Boolean
-
#get_admins(account_id:) ⇒ Object
Returns paginated list of canvas admin objects.
- #get_auth_provider_id ⇒ Object
- #get_canvas_user(user_id:) ⇒ Object
- #get_legacy_user_w_email(user_id:) ⇒ Object
-
#get_observers(observee_id:) ⇒ Object
Returns paginated list of canvas user objects.
- #get_paginated(endpoint:) ⇒ Object
-
#get_user(user_id:) ⇒ Object
Returns a canvas user object.
-
#get_user_by_integration_id(integration_id:) ⇒ Object
Returns a canvas user object.
-
#get_users(account_id:, role:) ⇒ Object
Returns paginated list of canvas user objects.
-
#initialize(domain:, api_token:) ⇒ CanvasClientExtended
constructor
A new instance of CanvasClientExtended.
-
#upsert_association_by_integration_id(observer_id:, observee_id:) ⇒ Object
Returns a canvas user object.
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. 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
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_id ⇒ Object
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 |