Class: CanvasLinkMigrator::ResourceMapService

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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_dataObject (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_lookupObject



55
56
57
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 55

def attachment_path_id_lookup
  migration_data["attachment_path_id_lookup"]
end

#context_hostsObject



51
52
53
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 51

def context_hosts
  migration_data["destination_hosts"]
end

#context_pathObject

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 convert_attachment_migration_id(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

Returns:

  • (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 lookup_attachment_by_migration_id(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

#resourcesObject



34
35
36
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 34

def resources
  migration_data["resource_mapping"] || {}
end

#root_folder_nameObject



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_imagesObject

Overwritable methods



39
40
41
# File 'lib/canvas_link_migrator/resource_map_service.rb', line 39

def supports_embedded_images
  false
end