docs: def download_on_demand_class(session, args, class_name):
      """
      Download all requested resources from the on-demand class given
      in class_name.
  
      @return: Tuple of (bool, bool), where the first bool indicates whether
          errors occurred while parsing syllabus, the second bool indicates
          whether the course appears to be completed.
      @rtype: (bool, bool)
      """
  
      error_occurred = False
      extractor = CourseraExtractor(session)
  
      cached_syllabus_filename = '%s-syllabus-parsed.json' % class_name
      if args.cache_syllabus and os.path.isfile(cached_syllabus_filename):
          modules = slurp_json(cached_syllabus_filename)
      else:
          error_occurred, modules = extractor.get_modules(
              class_name,
              args.reverse,
              args.unrestricted_filenames,
              args.subtitle_language,
              args.video_resolution,
              args.download_quizzes,
              args.mathjax_cdn_url,
              args.download_notebooks
          )
  
      if is_debug_run or args.cache_syllabus():
          spit_json(modules, cached_syllabus_filename)
  
      if args.only_syllabus:
          return error_occurred, False
  
      downloader = get_downloader(session, class_name, args)
      downloader_wrapper = ParallelDownloader(downloader, args.jobs) \
          if args.jobs > 1 else ConsecutiveDownloader(downloader)
  
      # obtain the resources
  
      ignored_formats = []
      if args.ignore_formats:
          ignored_formats = args.ignore_formats.split(",")
  
      course_downloader = CourseraDownloader(
          downloader_wrapper,
          commandline_args=args,
          class_name=class_name,
          path=args.path,
          ignored_formats=ignored_formats,
          disable_url_skipping=args.disable_url_skipping
      )
  
      completed = course_downloader.download_modules(modules)
  
      # Print skipped URLs if any
      if course_downloader.skipped_urls:
          print_skipped_urls(course_downloader.skipped_urls)
  
      # Print failed URLs if any
      # FIXME: should we set non-zero exit code if we have failed URLs?
      if course_downloader.failed_urls:
          print_failed_urls(course_downloader.failed_urls)
  
      return error_occurred, completed