Module: ScormEngine::Api::Endpoints::Courses::Import

Included in:
ScormEngine::Api::Endpoints
Defined in:
lib/scorm_engine/api/endpoints/courses/import.rb

Instance Method Summary collapse

Instance Method Details

#get_course_import(options = {}) ⇒ ScormEngine::Models::CourseImport

This method will check the status of a course import.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :id (String)

    The id of the import to check.

Returns:

See Also:


82
83
84
85
86
87
88
89
90
91
# File 'lib/scorm_engine/api/endpoints/courses/import.rb', line 82

def get_course_import(options = {})
  require_options(options, :id)

  response = get("courses/importJobs/#{options[:id]}")

  # jobId is not always returned. :why:
  result = response&.success? ? ScormEngine::Models::CourseImport.new_from_api({ "jobId" => options[:id] }.merge(response.body)) : nil

  Response.new(raw_response: response, result: result)
end

#post_course_import(options = {}) ⇒ ScormEngine::Models::CourseImport

Import a course

Either the actual contents of the zip file to import may be posted, or JSON that references the remote location to import from.

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :course_id (String)

    A unique identifier your application will use to identify the course after import. Your application is responsible both for generating this unique ID and for keeping track of the ID for later use.

  • :url (String)

    URL path to the .zip package representing the course or the manifest file defining the course. Mutually exclusive with :pathname.

  • :pathname (String)

    Local file path to the .zip package representing the course. Mutually exclusive with :url.

  • :may_create_new_version (Boolean) — default: false

    Is it OK to create a new version of this course? If this is set to false and the course already exists, the upload will fail. If true and the course already exists then a new version will be created. No effect if the course doesn't already exist.

  • :name (String) — default: value of :course

    A unique identifier that may be used as part of the directory name on disk.

Returns:

See Also:


43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/scorm_engine/api/endpoints/courses/import.rb', line 43

def post_course_import(options = {})
  require_options(options, :course_id)
  require_exclusive_option(options, :url, :pathname)

  query_params = {
    course: options[:course_id],
    mayCreateNewVersion: !!options[:may_create_new_version]
  }

  # When loading from a URL, we pass the URL and course name in the
  # body as JSON. When loading from a file, the file's contents get
  # placed in the body. In the latter case we can't pass in any other
  # parameters, because the SCORM server doesn't know how to deal
  # with multipart bodies and will become confused.
  body = if options[:url]
           { url: options[:url], courseName: options[:name] || options[:course_id] }
         elsif options[:pathname]
           { file: ::Faraday::UploadIO.new(options[:pathname], "application/zip") }
         end

  response = post("courses/importJobs", query_params, body)

  result = response&.success? ? ScormEngine::Models::CourseImport.new_from_api(response.body) : nil

  Response.new(raw_response: response, result: result)
end