lms-api 1.21.0 → 1.24.0

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: 5f5ede3eeafffbcd50df307c3e91c267ff651bce51a79837d1bbb385f4964d00
4
- data.tar.gz: 4b0b189c2d7f5755bdea8fb7e77ed227353f0a4207115c8d1aaa45867d78b0fb
3
+ metadata.gz: 60f916cc58245886a7eb557a5630951e126bc14231066e5908fc70e329c4733e
4
+ data.tar.gz: 223ba1598894697c5f15c8e1467a0118a00e867ec077ab28a1b09be27cf7c243
5
5
  SHA512:
6
- metadata.gz: 9b1f4da55b941bf5c474c4d9b3a0e26997c331a383803fcaeec686b1dd07280e64b63ec6fa8d4bdd430dec016c9488b541a39264d872b38f0f3bf3fa3f7d7279
7
- data.tar.gz: df0db832c3fe428126e8afed7e51834a219ba821e31e2bf30eba1a51bc133ed604e8b3a4d6f45dc232dedb548dbd4a8f5bfe0b762f778e5b726a5894abf9ab77
6
+ metadata.gz: '0680840f0e5481d592103a5931c799ae7476eb337635661db8ceccf1517ea3c14fffca6393786bdc52c1d3c2225a555043f77dedbb94b8bcb66e46cf90b8e434'
7
+ data.tar.gz: 11093e447b976098ed043a33d5cc0d089d03de90b745d1668a61dc424870e11c2d05db6070f2dbaf67caa52c4cc031de9d230f9001591905243c8b3a8317e563
@@ -13,7 +13,7 @@ module CanvasApi
13
13
  # server_app_path: This is where all server side Javascript for accessing the Canvas API will be written.
14
14
  # Currently, this is generating GraphQL for Javascript and Ruby
15
15
  #
16
- def self.build(project_root, client_app_path, server_app_path, elixir_app_path, rb_graphql_app_path)
16
+ def self.build(project_root, client_app_path, server_app_path, elixir_app_path, rb_graphql_app_path, go_app_path)
17
17
  endpoint = "https://canvas.instructure.com/doc/api"
18
18
  directory = HTTParty.get("#{endpoint}/api-docs.json")
19
19
 
@@ -32,20 +32,44 @@ module CanvasApi
32
32
  nicknames = []
33
33
 
34
34
  # Elixir has a default action that raises
35
- lms_urls_ex << CanvasApi::Render.new("./templates/ex_default_action.erb", nil, nil, nil, nil, nil, nil, nil).render
35
+ lms_urls_ex << CanvasApi::Render.new("./templates/ex_default_action.erb", nil, nil, nil, nil, nil, nil, nil, "").render
36
36
 
37
37
  directory["apis"].each do |api|
38
38
  puts "Generating #{api['description']}"
39
- resource = HTTParty.get("#{endpoint}#{api['path']}")
39
+ api_path = api['path']
40
+ resource = HTTParty.get("#{endpoint}#{api_path}")
40
41
 
41
42
  # HACK The canvas docs are missing one of the allowable value in modules
42
43
  # TODO we might want to create a hacks class at some point to contain all these
43
- if api['path'] == "/modules.json"
44
+ if api_path == "/modules.json"
44
45
  if !resource["models"]["CompletionRequirement"]["properties"]["type"]["allowableValues"]["values"].include?("must_mark_done")
45
46
  resource["models"]["CompletionRequirement"]["properties"]["type"]["allowableValues"]["values"].push("must_mark_done")
46
47
  end
47
48
  end
48
49
 
50
+ models = []
51
+ resource["models"].map do |name, model|
52
+ models << name
53
+
54
+ if model["properties"] # Don't generate models without properties
55
+ models << CanvasApi::Render.new("./templates/js_graphql_model.erb", api, resource, nil, nil, nil, nil, model, api_path).render
56
+ end
57
+
58
+ # Generate one file for each Canvas graphql type
59
+ canvas_graphql_type_render = CanvasApi::Render.new("./templates/rb_graphql_type.erb", api, resource, nil, nil, nil, nil, model, api_path)
60
+ canvas_graphql_type_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}.rb")
61
+
62
+ canvas_graphql_input_render = CanvasApi::Render.new("./templates/rb_graphql_input_type.erb", api, resource, nil, nil, nil, nil, model, api_path)
63
+ canvas_graphql_input_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}_input.rb")
64
+
65
+ # Generate go structs
66
+ go_type_render = CanvasApi::Render.new("./templates/go_struct.erb", api, resource, nil, nil, nil, nil, model, api_path)
67
+ go_type_render.save("#{go_app_path}/models/#{model['id'].underscore}.go")
68
+
69
+ rb_forward_declarations << "class Canvas#{model['id'].singularize}Input < BaseInputObject;end"
70
+ rb_forward_declarations << "class Canvas#{model['id'].singularize} < BaseType;end"
71
+ end
72
+
49
73
  constants = []
50
74
  resource["apis"]&.each do |resource_api|
51
75
  resource_api["operations"].each do |operation|
@@ -59,72 +83,64 @@ module CanvasApi
59
83
  operation["nickname"] = nickname
60
84
 
61
85
  parameters = filter_duplicate_parameters(operation["parameters"])
62
- constants << CanvasApi::Render.new("./templates/constant.erb", api, resource, resource_api, operation, parameters, nil, nil).render
63
- lms_urls_rb << CanvasApi::Render.new("./templates/rb_url.erb", api, resource, resource_api, operation, parameters, nil, nil).render
64
- lms_urls_js << CanvasApi::Render.new("./templates/js_url.erb", api, resource, resource_api, operation, parameters, nil, nil).render
65
- lms_urls_ex << CanvasApi::Render.new("./templates/ex_url.erb", api, resource, resource_api, operation, parameters, nil, nil).render
66
- lms_urls_ex << CanvasApi::Render.new("./templates/ex_action.erb", api, resource, resource_api, operation, parameters, nil, nil).render
86
+ constants << CanvasApi::Render.new("./templates/constant.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
87
+ lms_urls_rb << CanvasApi::Render.new("./templates/rb_url.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
88
+ lms_urls_js << CanvasApi::Render.new("./templates/js_url.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
89
+ lms_urls_ex << CanvasApi::Render.new("./templates/ex_url.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
90
+ lms_urls_ex << CanvasApi::Render.new("./templates/ex_action.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
67
91
 
68
92
  if parameters.detect{ |param| param["name"] == "course_id" && param["paramType"] == "path" }
69
- course_ids_required_rb << CanvasApi::Render.new("./templates/course_id_required.erb", api, resource, resource_api, operation, parameters, nil, nil).render
93
+ course_ids_required_rb << CanvasApi::Render.new("./templates/course_id_required.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
94
+ end
95
+
96
+ begin
97
+ go_action_renderer = CanvasApi::Render.new("./templates/go_action.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path)
98
+ go_action_renderer.save("#{go_app_path}/requests/#{go_action_renderer.nickname}.go")
99
+ rescue => ex
100
+ byebug
101
+ puts ex
70
102
  end
71
103
 
72
104
  if operation["method"].casecmp("GET") == 0
73
- js_graphql_queries << CanvasApi::Render.new("./templates/js_graphql_query.erb", api, resource, resource_api, operation, parameters, nil, nil).render
105
+ js_graphql_queries << CanvasApi::Render.new("./templates/js_graphql_query.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
74
106
 
75
107
  # One file per Canvas graphql resolver
76
- canvas_graphql_resolver_renderer = CanvasApi::Render.new("./templates/rb_graphql_resolver.erb", api, resource, resource_api, operation, parameters, nil, nil)
108
+ canvas_graphql_resolver_renderer = CanvasApi::Render.new("./templates/rb_graphql_resolver.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path)
77
109
  canvas_graphql_resolver_renderer.save("#{rb_graphql_app_path}/lib/lms_graphql/resolvers/canvas/#{canvas_graphql_resolver_renderer.nickname}.rb")
78
- rb_graphql_fields << CanvasApi::Render.new("./templates/rb_graphql_field.erb", api, resource, resource_api, operation, parameters, nil, nil).render
110
+ rb_graphql_fields << CanvasApi::Render.new("./templates/rb_graphql_field.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
79
111
  else
80
- js_graphql_mutations << CanvasApi::Render.new("./templates/js_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil).render
112
+ js_graphql_mutations << CanvasApi::Render.new("./templates/js_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
81
113
 
82
- rb_graphql_mutation_renderer = CanvasApi::Render.new("./templates/rb_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil)
114
+ rb_graphql_mutation_renderer = CanvasApi::Render.new("./templates/rb_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path)
83
115
  rb_graphql_mutation_renderer.save("#{rb_graphql_app_path}/lib/lms_graphql/mutations/canvas/#{rb_graphql_mutation_renderer.nickname}.rb")
84
- rb_graphql_mutations << CanvasApi::Render.new("./templates/rb_graphql_mutation_include.erb", api, resource, resource_api, operation, parameters, nil, nil).render
116
+ rb_graphql_mutations << CanvasApi::Render.new("./templates/rb_graphql_mutation_include.erb", api, resource, resource_api, operation, parameters, nil, nil, api_path).render
85
117
  end
86
118
 
87
119
  end
88
120
  end
89
121
 
90
- resource["models"].map do |_name, model|
91
- if model["properties"] # Don't generate models without properties
92
- models << CanvasApi::Render.new("./templates/js_graphql_model.erb", api, resource, nil, nil, nil, nil, model).render
93
- end
94
-
95
- # Generate one file for each Canvas graphql type
96
- canvas_graphql_type_render = CanvasApi::Render.new("./templates/rb_graphql_type.erb", api, resource, nil, nil, nil, nil, model)
97
- canvas_graphql_type_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}.rb")
98
-
99
- canvas_graphql_input_render = CanvasApi::Render.new("./templates/rb_graphql_input_type.erb", api, resource, nil, nil, nil, nil, model)
100
- canvas_graphql_input_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}_input.rb")
101
-
102
- rb_forward_declarations << "class Canvas#{model['id'].singularize}Input < BaseInputObject;end"
103
- rb_forward_declarations << "class Canvas#{model['id'].singularize} < BaseType;end"
104
- end
105
-
106
122
  # Generate one file of constants for every LMS API
107
- constants_renderer = CanvasApi::Render.new("./templates/constants.erb", api, resource, nil, nil, nil, constants, nil)
123
+ constants_renderer = CanvasApi::Render.new("./templates/constants.erb", api, resource, nil, nil, nil, constants, nil, api_path)
108
124
  constants_renderer.save("#{client_app_path}/#{constants_renderer.name}.js")
109
125
  end
110
126
 
111
- CanvasApi::Render.new("./templates/rb_urls.erb", nil, nil, nil, nil, nil, lms_urls_rb, nil).save("#{project_root}/lib/lms/canvas_urls.rb")
112
- CanvasApi::Render.new("./templates/js_urls.erb", nil, nil, nil, nil, nil, lms_urls_js, nil).save("#{server_app_path}/lib/canvas/urls.js")
127
+ CanvasApi::Render.new("./templates/rb_urls.erb", nil, nil, nil, nil, nil, lms_urls_rb, nil, "").save("#{project_root}/lib/lms/canvas_urls.rb")
128
+ CanvasApi::Render.new("./templates/js_urls.erb", nil, nil, nil, nil, nil, lms_urls_js, nil, "").save("#{server_app_path}/lib/canvas/urls.js")
113
129
 
114
130
  # The elixir urls are sorted, to prevent linter errors
115
- CanvasApi::Render.new("./templates/ex_urls.erb", nil, nil, nil, nil, nil, lms_urls_ex.sort, nil).save("#{elixir_app_path}/lib/canvas/actions.ex")
131
+ CanvasApi::Render.new("./templates/ex_urls.erb", nil, nil, nil, nil, nil, lms_urls_ex.sort, nil, "").save("#{elixir_app_path}/lib/canvas/actions.ex")
116
132
 
117
- CanvasApi::Render.new("./templates/course_ids_required.erb", nil, nil, nil, nil, nil, course_ids_required_rb, nil).save("#{project_root}/lib/lms/course_ids_required.rb")
133
+ CanvasApi::Render.new("./templates/course_ids_required.erb", nil, nil, nil, nil, nil, course_ids_required_rb, nil, "").save("#{project_root}/lib/lms/course_ids_required.rb")
118
134
 
119
135
  # GraphQL Javascript - still not complete
120
- CanvasApi::Render.new("./templates/js_graphql_types.erb", nil, nil, nil, nil, nil, models.compact, nil).save("#{server_app_path}/lib/canvas/graphql_types.js")
121
- CanvasApi::Render.new("./templates/js_graphql_queries.erb", nil, nil, nil, nil, nil, js_graphql_queries, nil).save("#{server_app_path}/lib/canvas/graphql_queries.js")
122
- CanvasApi::Render.new("./templates/js_graphql_mutations.erb", nil, nil, nil, nil, nil, js_graphql_mutations, nil).save("#{server_app_path}/lib/canvas/graphql_mutations.js")
136
+ CanvasApi::Render.new("./templates/js_graphql_types.erb", nil, nil, nil, nil, nil, models.compact, nil, "").save("#{server_app_path}/lib/canvas/graphql_types.js")
137
+ CanvasApi::Render.new("./templates/js_graphql_queries.erb", nil, nil, nil, nil, nil, js_graphql_queries, nil, "").save("#{server_app_path}/lib/canvas/graphql_queries.js")
138
+ CanvasApi::Render.new("./templates/js_graphql_mutations.erb", nil, nil, nil, nil, nil, js_graphql_mutations, nil, "").save("#{server_app_path}/lib/canvas/graphql_mutations.js")
123
139
 
124
140
  # GraphQL Ruby
125
- CanvasApi::Render.new("./templates/rb_forward_declarations.erb", nil, nil, nil, nil, nil, rb_forward_declarations, nil).save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas_forward_declarations.rb")
126
- CanvasApi::Render.new("./templates/rb_graphql_root_query.erb", nil, nil, nil, nil, nil, rb_graphql_fields, nil).save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/query_type.rb")
127
- CanvasApi::Render.new("./templates/rb_graphql_mutations.erb", nil, nil, nil, nil, nil, rb_graphql_mutations, nil).save("#{rb_graphql_app_path}/lib/lms_graphql/mutations/canvas/mutations.rb")
141
+ CanvasApi::Render.new("./templates/rb_forward_declarations.erb", nil, nil, nil, nil, nil, rb_forward_declarations, nil, "").save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas_forward_declarations.rb")
142
+ CanvasApi::Render.new("./templates/rb_graphql_root_query.erb", nil, nil, nil, nil, nil, rb_graphql_fields, nil, "").save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/query_type.rb")
143
+ CanvasApi::Render.new("./templates/rb_graphql_mutations.erb", nil, nil, nil, nil, nil, rb_graphql_mutations, nil, "").save("#{rb_graphql_app_path}/lib/lms_graphql/mutations/canvas/mutations.rb")
128
144
  end
129
145
 
130
146
  def self.filter_duplicate_parameters(parameters)