Sha256: fa75f570ba46a52dda1e10450b59cd98d3db935777c75e4b2a1a16d41b6320f0

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 KB

Contents

module CanvasFactory
  # canvas module class
  class Module
    attr_reader :course_id, :name, :module_id, :published, :request, :response,
                :module_items, :publish_response, :publish_request

    def initialize(course_id, opts = {}, merge = true)
      @module_items = []
      @course_id = course_id
      @request = {
        module: {
          name: "module-#{Time.now.to_i}",
          unlock_at: DateTime.now.iso8601,
          require_sequential_progress: true
        }
      }
      @request = Mergie.deep_merge(@request, opts, merge)
      create_module
      self
    end

    def add_module_item(content, opts = {}, merge = true) # content can be assignment or quiz ...
      module_item = CanvasFactory::ModuleItem.new(@course_id, @module_id, content, opts, merge)
      @module_items << module_item
      module_item
    end

    def publish(opts = {}, merge = true)
      @publish_request = {
        module: {
          published: true
        }
      }
      @publish_request = Mergie.deep_merge(@publish_request, opts, merge)
      publish_ep = "#{CANVAS_API_V1}/courses/#{@course_id}/modules/#{@module_id}"
      @publish_response = CanvasFactory.perform_put(publish_ep, @publish_request)
      @published = @publish_response['published']
    end

    private

    def create_module
      m_item_end_point = "#{CANVAS_API_V1}/courses/#{@course_id}/modules"
      @response = CanvasFactory.perform_post(m_item_end_point, @request)
      @course_id = course_id
      @module_id = response['id']
      @name = response['name']
      @published = response['published']
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
japanda-0.1.6 lib/japanda/canvas_factory/module.rb
japanda-0.1.5 lib/japanda/canvas_factory/module.rb
japanda-0.1.4 lib/japanda/canvas_factory/module.rb