github-to-canvas 0.0.46 → 0.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddda58c3ed202c82e6c0f71a80178a7fbc72e593b9357b5449ee2116d35f68cf
4
- data.tar.gz: ea08df0af727814a06508291e9e2d0159f5e268ed7b54858002a74cb6529a26d
3
+ metadata.gz: d00d3f8b2e4a748b6d8840c365904d980f7bc6f7ad8046cc44b0f28372cad834
4
+ data.tar.gz: 2cf19fe82846d2cb544ba8cccacd078e08c71c7270f4ecfa1a954d894cdf6750
5
5
  SHA512:
6
- metadata.gz: a62890799c51f119081bca8a26455ff46d55e9f796a3a3f783f2b39a47c16439b2ca1528eee528b54c2c8453fc865ec62e7b5526cdf925199b24a243fddc7e33
7
- data.tar.gz: 980f0d8f8265f2cffa75e8f5659bbb4e7d34efaf76c4d8ff1748e9ee2357fbca3c10903ff63a5bcf9f0fc7c60c8a38a2374174c18235dfb4a70843f4350baf23
6
+ metadata.gz: 74598233da7a1ecfc041937a838a06e14511fbc98c65a981c8a408f997289e0c3520fa600e023bba1c3800ee84c742bb79598ca067e8ba2e0957972df390173c
7
+ data.tar.gz: b81aca6a1ebd575642e438a60af63a24db731728b144de5e6f7e5be2ed8c36f6c5cdc93411aa7e64e6e6e231946d0db359a51497b7417b25c40d9f4c2b36f6fb
@@ -36,7 +36,7 @@ OptionParser.new do |opts|
36
36
  github-to-canvas --create-lesson 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
37
37
  github-to-canvas --create-lesson 154 --name "Fetch Lab" --branch solution -> Creates a lesson in course 154 with the provided name, uses the repository's solution branch and derives the type from the local repo
38
38
  github-to-canvas --align -> Patches existing lessons in Canvas based on the .canvas file
39
- github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds addition Flatiron School specific HTML
39
+ github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds additional Flatiron School specific HTML and meta-data
40
40
  github-to-canvas --align --remove-header-and-footer -> Patches existing lessons in Canvas based on the .canvas file, removes top lesson header before converting to HTML
41
41
  github-to-canvas --info COURSE -> Displays a course's lesson and assignment names
42
42
 
@@ -104,6 +104,10 @@ OptionParser.new do |opts|
104
104
  "Displays a course's lessons and assignments") do |course|
105
105
  options[:query] = course
106
106
  end
107
+ opts.on("--remote",
108
+ "Retrieves a Canvas lesson. Requires --course and --id") do |remote|
109
+ options[:remote] = true
110
+ end
107
111
 
108
112
  end.parse!
109
113
 
@@ -115,6 +119,14 @@ if options[:query]
115
119
  GithubToCanvas.new(mode: 'query', course: options[:query], id: options[:id])
116
120
  end
117
121
 
122
+ if options[:remote]
123
+ if !options[:course] || !options[:id]
124
+ puts "Both --course and --id required when using --remote"
125
+ abort
126
+ end
127
+ GithubToCanvas.new(mode: 'remote', course: options[:course], id: options[:id])
128
+ end
129
+
118
130
  if !options[:type]
119
131
  if Dir.glob("**/*/").empty?
120
132
  options[:type] = "page"
@@ -6,7 +6,6 @@ require_relative './github-to-canvas/canvas_interface'
6
6
  require_relative './github-to-canvas/canvas_dotfile'
7
7
  require_relative './github-to-canvas/version'
8
8
 
9
-
10
9
  class GithubToCanvas
11
10
 
12
11
  def initialize(mode:,
@@ -30,6 +29,18 @@ class GithubToCanvas
30
29
  CanvasInterface.get_course_info(course, id)
31
30
  end
32
31
 
32
+ if mode == 'remote'
33
+ lesson_data = CanvasInterface.get_lesson_info(course, id)
34
+ if !lesson_data[1]
35
+ puts "No lesson with id #{id} was found in course #{course}."
36
+ else
37
+ pp lesson_data[0]
38
+ puts "\nLesson Type: #{lesson_data[1]}"
39
+ end
40
+
41
+
42
+ end
43
+
33
44
  if mode == 'create'
34
45
  puts "github-to-canvas will now create a Canvas lesson based on the current repo"
35
46
  CreateCanvasLesson.new(course, filepath, file_to_convert, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
@@ -3,41 +3,41 @@ require 'rest-client'
3
3
  class CanvasInterface
4
4
 
5
5
  def self.get_lesson_info(course, id)
6
- page_url = "#{ENV['CANVAS_API_PATH']}/courses/#{course}/pages/#{id}"
7
- assignment_url = "#{ENV['CANVAS_API_PATH']}/courses/#{course}/assignments/#{id}"
6
+
7
+ lesson_types = ["quizzes", "assignments", "pages", "discussion_topics"]
8
+ lesson_type_urls = []
9
+ lesson_types.each do |type|
10
+ lesson_type_urls << "#{ENV['CANVAS_API_PATH']}/courses/#{course}/#{type}/#{id}"
11
+ end
12
+
8
13
  type = nil
9
14
  info = ""
15
+ lesson_type_urls.each do |url|
10
16
  begin
11
- page_response = RestClient.get(page_url, headers={
17
+ response = RestClient.get(url, headers={
12
18
  "Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
13
19
  })
14
- if ([200, 201].include? page_response.code)
15
- info = JSON.parse(page_response.body)
16
- puts "A Canvas page with the ID #{id} was found in course #{course}:"
17
- type = "page"
18
- end
19
- rescue
20
- end
21
-
22
- begin
23
- assignment_response = RestClient.get(assignment_url, headers={
24
- "Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
25
- })
26
- if ([200, 201].include? assignment_response.code)
27
- info = JSON.parse(assignment_response.body)
28
- puts "A Canvas assignment with the ID #{id} was found in course #{course}:"
29
- type = "assignment"
20
+ if [200, 201].include? response.code
21
+ info = JSON.parse(response.body)
22
+ type = lesson_types.find {|type| url.match?("#{type}")}
23
+ type.delete_suffix!('zes')
24
+ type.delete_suffix!('s')
25
+ puts "\nA Canvas #{type} was found in course #{course} with the id #{id}"
26
+ break
30
27
  end
31
28
  rescue
32
29
  end
30
+ end
31
+
32
+
33
33
  [info, type]
34
34
  end
35
35
 
36
36
  def self.get_course_info(course, id)
37
37
  if id
38
- info = self.get_lesson_info(course, id)
39
- pp info[1]
40
- pp info[0]
38
+ lesson_data = self.get_lesson_info(course, id)
39
+ pp lesson_data[0]
40
+ pp "\nLesson Type: #{lesson_data[1]}"
41
41
  return
42
42
  end
43
43
 
@@ -73,15 +73,24 @@ class RepositoryConverter
73
73
  end
74
74
 
75
75
  def self.add_fis_links(filepath, readme)
76
- repo = self.get_repo_url(filepath)
77
- github_repo_link = "<a class='fis-git-link' href='#{repo}' target='_blank' rel='noopener'><img id='repo-img' title='Open GitHub Repo' alt='GitHub Repo' /></a>"
78
- github_issue_link = "<a class='fis-git-link' href='#{repo}/issues/new' target='_blank' rel='noopener'><img id='issue-img' title='Create New Issue' alt='Create New Issue' /></a>"
79
- thumbs_up_link = "<img id='thumbs-up' data-repository='#{repo.split('/')[-1]}' title='Thumbs up!' alt='thumbs up' />"
80
- thumbs_down_link = "<img id='thumbs-down' data-repository='#{repo.split('/')[-1]}' title='Thumbs down!' alt='thumbs down' />"
81
- feedback_link = "<h5>Have specific feedback? <a href='#{repo}/issues/new'>Tell us here!</a></h5>"
82
- header = "<header class='fis-header' style='visibility: hidden;'>#{github_repo_link}#{github_issue_link}</header>"
83
- footer = "<footer class='fis-footer' style='visibility: hidden;'><div class='fis-feedback'><h5>How do you feel about this lesson?</h5>#{thumbs_up_link}#{thumbs_down_link}</div>#{feedback_link}</footer>"
84
- header + readme + footer
76
+ repo_path = self.get_repo_url(filepath)
77
+ header = self.create_github_link_header(repo_path)
78
+ header + readme
79
+ end
80
+
81
+ def self.create_github_link_header(repo_path)
82
+ repo_name = repo_path.split('/')[-1]
83
+
84
+ # add link to fork (forking handled by separate Flatiron server, generation of link handled via custom Canvas JS theme file)
85
+ github_fork_link = "<a class='fis-git-link' data-repo='#{repo_name}' href='#' target='_blank' rel='noopener'><img id='fork-img' title='Fork This Assignment' alt='Fork This Assignment' /></a>"
86
+
87
+ # add link to associated repository
88
+ # github_repo_link = "<a class='fis-git-link' href='#{repo_path}' target='_blank' rel='noopener'><img id='repo-img' title='Open GitHub Repo' alt='GitHub Repo' /></a>"
89
+
90
+ # add link to new issue form
91
+ github_issue_link = "<a class='fis-git-link' href='#{repo_path}/issues/new' target='_blank' rel='noopener'><img id='issue-img' title='Create New Issue' alt='Create New Issue' /></a>"
92
+
93
+ "<header class='fis-header' style='visibility: hidden;'>#{github_fork_link}#{github_issue_link}</header>"
85
94
  end
86
95
 
87
96
  end
@@ -1,3 +1,3 @@
1
1
  class GithubToCanvas
2
- VERSION = "0.0.46"
2
+ VERSION = "0.0.48"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-to-canvas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.46
4
+ version: 0.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.0.8
109
+ rubygems_version: 3.1.4
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: github-to-canvas is a tool for migrating and aligning GitHub content with