Class: CanvasLinkMigrator::ResourceMapService
- Inherits:
-
Object
- Object
- CanvasLinkMigrator::ResourceMapService
- Defined in:
- lib/canvas_link_migrator/resource_map_service.rb
Overview
This class encapsulates the logic to retrieve metadata (for various types of assets) given a migration id. This particular implementation relies on the migration object Canvas creates
Each function returns exactly one id (if available), and nil if an id cannot be resolved
Instance Attribute Summary collapse
-
#migration_data ⇒ Object
readonly
Returns the value of attribute migration_data.
Instance Method Summary collapse
- #attachment_path_id_lookup ⇒ Object
- #context_hosts ⇒ Object
-
#context_path ⇒ Object
Returns the path for the context, for a course, it should return something like “courses/1”.
- #convert_announcement_migration_id(migration_id) ⇒ Object
- #convert_attachment_migration_id(migration_id) ⇒ Object
- #convert_context_module_tag_migration_id(migration_id) ⇒ Object
-
#convert_discussion_topic_migration_id(migration_id) ⇒ Object
looks up a discussion topic.
- #convert_migration_id(type, migration_id) ⇒ Object
-
#convert_wiki_page_migration_id_to_slug(migration_id) ⇒ Object
Looks up a wiki page slug for a migration id.
- #fix_relative_urls? ⇒ Boolean
-
#initialize(migration_data) ⇒ ResourceMapService
constructor
A new instance of ResourceMapService.
- #lookup_attachment_by_migration_id(migration_id) ⇒ Object
- #process_domain_substitutions(url) ⇒ Object
- #resources ⇒ Object
- #root_folder_name ⇒ Object
-
#supports_embedded_images ⇒ Object
Overwritable methods.
Constructor Details
#initialize(migration_data) ⇒ ResourceMapService
Returns a new instance of ResourceMapService.
30 31 32 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 30 def initialize(migration_data) @migration_data = migration_data end |
Instance Attribute Details
#migration_data ⇒ Object (readonly)
Returns the value of attribute migration_data.
28 29 30 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 28 def migration_data @migration_data end |
Instance Method Details
#attachment_path_id_lookup ⇒ Object
55 56 57 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 55 def migration_data["attachment_path_id_lookup"] end |
#context_hosts ⇒ Object
51 52 53 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 51 def context_hosts migration_data["destination_hosts"] end |
#context_path ⇒ Object
Returns the path for the context, for a course, it should return something like “courses/1”
66 67 68 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 66 def context_path "/courses/#{migration_data["destination_course"]}" end |
#convert_announcement_migration_id(migration_id) ⇒ Object
83 84 85 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 83 def convert_announcement_migration_id(migration_id) resources.dig("announcements", migration_id, "destination", "id") end |
#convert_attachment_migration_id(migration_id) ⇒ Object
91 92 93 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 91 def (migration_id) resources.dig("files", migration_id, "destination", "id") end |
#convert_context_module_tag_migration_id(migration_id) ⇒ Object
87 88 89 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 87 def convert_context_module_tag_migration_id(migration_id) resources.dig("module_items", migration_id, "destination", "id") end |
#convert_discussion_topic_migration_id(migration_id) ⇒ Object
looks up a discussion topic
76 77 78 79 80 81 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 76 def convert_discussion_topic_migration_id(migration_id) dt_id = resources.dig("discussion_topics", migration_id, "destination", "id") # the /discusson_topic url scheme is used for annnouncments as well. # we'll check both here dt_id || convert_announcement_migration_id(migration_id) end |
#convert_migration_id(type, migration_id) ⇒ Object
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 95 def convert_migration_id(type, migration_id) type = "modules" if type == "context_modules" id = if CanvasLinkMigrator::LinkParser::KNOWN_REFERENCE_TYPES.include? type resources.dig(type, migration_id, "destination", "id") end return id if id.present? # the /discusson_topic url scheme is used for annnouncments as well. # we'll check both here convert_announcement_migration_id(migration_id) if type == "discussion_topics" end |
#convert_wiki_page_migration_id_to_slug(migration_id) ⇒ Object
Looks up a wiki page slug for a migration id
71 72 73 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 71 def convert_wiki_page_migration_id_to_slug(migration_id) resources.dig("wiki_pages", migration_id, "destination", "url") || resources.dig("pages", migration_id, "destination", "url") end |
#fix_relative_urls? ⇒ Boolean
43 44 45 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 43 def fix_relative_urls? true end |
#lookup_attachment_by_migration_id(migration_id) ⇒ Object
106 107 108 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 106 def (migration_id) resources.dig("files", migration_id, "destination") end |
#process_domain_substitutions(url) ⇒ Object
47 48 49 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 47 def process_domain_substitutions(url) url end |
#resources ⇒ Object
34 35 36 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 34 def resources migration_data["resource_mapping"] || {} end |
#root_folder_name ⇒ Object
59 60 61 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 59 def root_folder_name migration_data["destination_root_folder"] end |
#supports_embedded_images ⇒ Object
Overwritable methods
39 40 41 |
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 39 def false end |