github-to-canvas 0.0.46 → 0.0.48

Sign up to get free protection for your applications and to get access to all the features.
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