Class: Bearcat::Client
- Inherits:
-
Footrest::Client
- Object
- Footrest::Client
- Bearcat::Client
- Includes:
- Accounts, Analytics, AssignmentGroups, Assignments, BlueprintCourses, CalendarEvents, CanvasFiles, Conferences, ContentExports, ContentMigrations, Conversations, Courses, CustomGradebookColumns, Discussions, Enrollments, ExternalTools, Files, Folders, GraphQL, GroupCategories, GroupMemberships, Groups, ModuleItems, Modules, OAuth2, OutcomeGroups, Outcomes, Pages, Progresses, Quizzes, Reports, Roles, Rubric, RubricAssessment, RubricAssociation, Search, Sections, Submissions, Users, FileHelper
- Defined in:
- lib/bearcat/client.rb,
lib/bearcat/client/files.rb,
lib/bearcat/client/pages.rb,
lib/bearcat/client/roles.rb,
lib/bearcat/client/users.rb,
lib/bearcat/client/groups.rb,
lib/bearcat/client/rubric.rb,
lib/bearcat/client/search.rb,
lib/bearcat/client/courses.rb,
lib/bearcat/client/folders.rb,
lib/bearcat/client/modules.rb,
lib/bearcat/client/o_auth2.rb,
lib/bearcat/client/quizzes.rb,
lib/bearcat/client/reports.rb,
lib/bearcat/client/accounts.rb,
lib/bearcat/client/graph_ql.rb,
lib/bearcat/client/outcomes.rb,
lib/bearcat/client/sections.rb,
lib/bearcat/client/analytics.rb,
lib/bearcat/client/progresses.rb,
lib/bearcat/client/assignments.rb,
lib/bearcat/client/conferences.rb,
lib/bearcat/client/discussions.rb,
lib/bearcat/client/enrollments.rb,
lib/bearcat/client/submissions.rb,
lib/bearcat/client/canvas_files.rb,
lib/bearcat/client/module_items.rb,
lib/bearcat/client/conversations.rb,
lib/bearcat/client/external_tools.rb,
lib/bearcat/client/outcome_groups.rb,
lib/bearcat/client/account_reports.rb,
lib/bearcat/client/calendar_events.rb,
lib/bearcat/client/content_exports.rb,
lib/bearcat/client/group_categories.rb,
lib/bearcat/client/assignment_groups.rb,
lib/bearcat/client/blueprint_courses.rb,
lib/bearcat/client/group_memberships.rb,
lib/bearcat/client/rubric_assessment.rb,
lib/bearcat/client/content_migrations.rb,
lib/bearcat/client/rubric_association.rb,
lib/bearcat/client/custom_gradebook_columns.rb
Defined Under Namespace
Modules: AccountReports, Accounts, Analytics, AssignmentGroups, Assignments, BlueprintCourses, CalendarEvents, CanvasFiles, Conferences, ContentExports, ContentMigrations, Conversations, Courses, CustomGradebookColumns, Discussions, Enrollments, ExternalTools, Files, Folders, GraphQL, GroupCategories, GroupMemberships, Groups, ModuleItems, Modules, OAuth2, OutcomeGroups, Outcomes, Pages, Progresses, Quizzes, Reports, Roles, Rubric, RubricAssessment, RubricAssociation, Search, Sections, Submissions, Users
Instance Method Summary collapse
- #apply_rate_limits(limit) ⇒ Object
- #enforce_rate_limits ⇒ Object
- #limit_remaining ⇒ Object
- #limit_remaining=(value) ⇒ Object
-
#request(method, &block) ⇒ Object
Override Footrest request for ApiArray support.
- #using_master_rate_limit? ⇒ Boolean
Methods included from Progresses
Methods included from RubricAssociation
#create_course_rubric_association, #delete_course_rubric_association, #update_course_rubric_association
Methods included from RubricAssessment
#create_course_rubric_assessment, #delete_course_rubric_assessment, #update_course_rubric_assessment
Methods included from Rubric
#account_rubrics, #course_rubric, #course_rubrics, #create_course_rubric, #delete_course_rubric, #update_course_rubric
Methods included from Roles
Methods included from ExternalTools
#account_external_tool, #account_external_tools, #course_external_tool, #course_external_tools, #create_account_external_tool, #create_course_external_tool, #delete_account_external_tool, #delete_course_external_tool, #edit_account_external_tool, #edit_course_external_tool
Methods included from CustomGradebookColumns
#bulk_update_gradebook_columns_data, #create_gradebook_columns, #custom_gradebook_columns, #delete_gradebook_columns, #gradebook_columns_data, #update_gradebook_columns, #update_gradebook_columns_data
Methods included from ContentExports
#create_content_export, #create_course_export, #create_group_export, #create_user_export, #get_content_export, #get_course_export, #get_group_export, #get_user_export
Methods included from ContentMigrations
#create_account_content_migration, #create_content_migration_with_type, #create_course_content_migration, #create_group_content_migration, #create_user_content_migration, #get_account_content_migration, #get_content_migration, #get_course_content_migration, #get_group_content_migration, #get_user_content_migration, #upload_content_package
Methods included from ModuleItems
#create_module_item, #delete_module_item, #list_module_items, #module_item, #update_module_item
Methods included from GraphQL
Methods included from Folders
#create_course_folder, #list_course_folders
Methods included from Files
Methods included from Pages
#list_course_pages, #list_group_pages, #show_course_page, #show_group_page
Methods included from AssignmentGroups
#assignment_group, #create_assignment_group, #delete_assignment_group, #list_assignment_groups, #update_assignment_group
Methods included from Quizzes
#create_quiz, #create_quiz_report, #edit_quiz, #get_quiz_report, #list_course_quizzes, #quiz, #quiz_assignment_overrides, #quiz_extensions, #quiz_questions
Methods included from Search
Methods included from FileHelper
#confirm_file_upload, #declare_file, #file_params, #post_file, #upload_connection
Methods included from Discussions
#course_discussion, #course_discussion_entries, #course_discussion_entry_replies, #course_discussions, #create_course_discussion, #create_group_discussion, #group_discussion_entries, #group_discussion_entry_replies, #group_discussions
Methods included from CalendarEvents
#calendar_event, #calendar_events, #create_calendar_event, #delete_calendar_event, #update_calendar_event
Methods included from CanvasFiles
Methods included from Modules
#course_module, #course_module_item_sequence, #course_modules, #create_module, #delete_module, #update_module
Methods included from Conversations
#create_conversation, #delete_conversation
Methods included from Submissions
#course_file_upload_submission, #course_submission, #course_submissions, #course_update_grades, #get_course_submissions, #grade_course_submission, #grade_section_submission, #section_file_upload_submission, #section_submission, #section_submissions, #section_update_grades, #user_course_assignment_submission
Methods included from Reports
#delete_report, #download_report, #report_history, #report_list, #report_status, #start_report
Methods included from Users
#add_user, #communication_channels, #dashboard_positions, #delete_custom_data, #favorite_courses, #list_users, #load_custom_data, #page_views, #store_custom_data, #unfavorite_course, #update_dashboard_positions, #user_assignments, #user_avatars, #user_detail, #user_logins, #user_merge, #user_profile
Methods included from Conferences
#course_conferences, #group_conferences
Methods included from GroupMemberships
#create_group_membership, #delete_group_membership, #group_membership, #list_group_memberships
Methods included from GroupCategories
#create_group_category, #delete_group_category, #edit_group_category, #group_category, #list_group_categories
Methods included from Groups
#account_groups, #category_groups, #course_groups, #create_group, #delete_group, #edit_group, #group
Methods included from OAuth2
#auth_redirect_url, #retrieve_token
Methods included from Sections
#course_sections, #create_section, #crosslist_section, #decrosslist_section, #delete_section, #section, #update_section
Methods included from Outcomes
#show_outcome, #update_outcome
Methods included from OutcomeGroups
#create_outcome_in_group, #create_subgroup, #delete_outcome_group, #import_outcome_group, #link_outcome, #list_linked_outcomes, #list_subgroups, #outcomes_context_slug, #show_outcome_group, #unlink_outcome, #update_outcome_group
Methods included from Enrollments
#conclude_enrollment, #course_enrollments, #enroll_in_course, #enroll_in_section, #reactivate_enrollment, #section_enrollments, #user_enrollments
Methods included from Courses
#copy_course, #course, #course_gradebook_history, #course_grading_standard, #course_grading_standards, #course_outcome_results, #course_quiz_extensions, #create_content_migration, #create_content_migration_with_both_responses, #create_course, #delete_course, #list_course_users, #list_users_courses, #update_course
Methods included from BlueprintCourses
#blueprint_subscriptions, #blueprint_template, #blueprint_update_associations, #start_blueprint_migration
Methods included from Analytics
#department_level_participation, #department_level_statistics
Methods included from Accounts
#account, #account_admins, #account_courses, #account_grading_standard, #account_grading_standards, #account_roles, #account_sis_imports, #create_account_admin, #delete_account_admin, #enrollment, #list_accounts, #list_roles, #list_sub_accounts, #terms
Methods included from Assignments
#all_assignment_overrides, #assignment, #assignment_overrides, #assignments, #batch_create_assignment_overrides, #batch_update_assignment_overrides, #create_assignment, #create_assignment_override, #delete_assignment, #delete_assignment_override, #edit_assignment
Instance Method Details
#apply_rate_limits(limit) ⇒ Object
115 116 117 118 |
# File 'lib/bearcat/client.rb', line 115 def apply_rate_limits(limit) return if limit.nil? self.limit_remaining = limit.to_i end |
#enforce_rate_limits ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/bearcat/client.rb', line 98 def enforce_rate_limits return unless limit_remaining.present? return unless limit_remaining < Bearcat.rate_limit_min tts = ((Bearcat.rate_limit_min - limit_remaining) / 5).ceil tts = Bearcat.min_sleep_seconds if tts < Bearcat.min_sleep_seconds tts = Bearcat.max_sleep_seconds if tts > Bearcat.max_sleep_seconds = "Canvas API rate limit minimum #{Bearcat.rate_limit_min} reached. "\ "Sleeping for #{tts} second(s) to catch up ~zzZZ~. "\ "Limit Remaining: #{limit_remaining}" Bearcat.logger.debug() sleep(tts) end |
#limit_remaining ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/bearcat/client.rb', line 124 def limit_remaining if using_master_rate_limit? Bearcat.master_mutex.synchronize do limit = PaulWalker::RateLimit.get(config[:token], config[:token]) if limit.nil? PaulWalker::RateLimit.add(config[:token], config[:token], 0, Bearcat::rate_limit_min) limit = { current: 0 }.with_indifferent_access end Bearcat.logger.debug limit['current'].to_s limit['current'] end else Bearcat.rate_limits[config[:token]] end end |
#limit_remaining=(value) ⇒ Object
140 141 142 143 144 145 146 147 148 |
# File 'lib/bearcat/client.rb', line 140 def limit_remaining=(value) if using_master_rate_limit? Bearcat.master_mutex.synchronize do PaulWalker::RateLimit.add(config[:token], config[:token], value, Bearcat::rate_limit_min) end else Bearcat.rate_limits[config[:token]] = value end end |
#request(method, &block) ⇒ Object
Override Footrest request for ApiArray support
91 92 93 94 95 96 |
# File 'lib/bearcat/client.rb', line 91 def request(method, &block) enforce_rate_limits response = connection.send(method, &block) apply_rate_limits(response.headers['x-rate-limit-remaining']) ApiArray.process_response(response, self) end |
#using_master_rate_limit? ⇒ Boolean
120 121 122 |
# File 'lib/bearcat/client.rb', line 120 def using_master_rate_limit? config[:master_rate_limit].present? || Bearcat.master_rate_limit.present? end |