code: def GET(self, courseid, taskid, path):  # pylint: disable=arguments-differ
          
          try:
              course = self.course_factory.get_course(courseid)
              if not self.user_manager.course_is_open_to_user(course):
                  return self.template_helper.get_renderer().course_unavailable()
  
              path_norm = posixpath.normpath(urllib.parse.unquote(path))
  
              if taskid == "$common":
                  public_folder = course.get_fs().from_subfolder("$common").from_subfolder("public")
              else:
  
                  task = course.get_task(taskid)
                  if not self.user_manager.task_is_visible_by_user(task):  # ignore LTI check here
                      return self.template_helper.get_renderer().task_unavailable()
  
                  public_folder = task.get_fs().from_subfolder("public")
              (method, mimetype_or_none, file_or_url) = public_folder.distribute(path_norm, False)
  
              if method == "local":
                  web.header('Content-Type', mimetype_or_none)
                  return file_or_url
              elif method == "url":
                  raise web.redirect(file_or_url)
              else:
                  raise web.notfound()
          except web.HTTPError as error_or_redirect:
              raise error_or_redirect
          except:
              if web.config.debug:
                  raise
              else:
                  raise web.notfound()
docs: GET request