lms-api 1.23.0 → 1.24.0

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: 1d7810e8e657f6cc9bdd4cd8c451ce96d829bfa79fed75389b4af081b0609ccc
4
- data.tar.gz: 353814c783f580c8bfc8a6371dcf00d7acb837f5c31a8640f20e6c71d98cc291
3
+ metadata.gz: 60f916cc58245886a7eb557a5630951e126bc14231066e5908fc70e329c4733e
4
+ data.tar.gz: 223ba1598894697c5f15c8e1467a0118a00e867ec077ab28a1b09be27cf7c243
5
5
  SHA512:
6
- metadata.gz: 22d3736b78f0f4ee915469ef96ac27ba8f667a672fb9aa5a277f8b464914b5829bee30612547981b313497ca4d25baf8ca864765176b7d3a3cc265b6e0a2def7
7
- data.tar.gz: e2f54b89aedab87683f2811497ac360b7adde2fdfee27ca59d191911200cc46b3776a6774b1d7fb5a2cc71d730f25fe501395ecabdc5c4ca9c180dd2f6c3006f
6
+ metadata.gz: '0680840f0e5481d592103a5931c799ae7476eb337635661db8ceccf1517ea3c14fffca6393786bdc52c1d3c2225a555043f77dedbb94b8bcb66e46cf90b8e434'
7
+ data.tar.gz: 11093e447b976098ed043a33d5cc0d089d03de90b745d1668a61dc424870e11c2d05db6070f2dbaf67caa52c4cc031de9d230f9001591905243c8b3a8317e563
@@ -327,7 +327,9 @@ module CanvasApi
327
327
  puts "Using string type for '#{name}' ('#{property}') of type object."
328
328
  "map[string](interface{})"
329
329
  else
330
- if property["type"] == "list of content items"
330
+ if property["type"] == "array of outcome ids"
331
+ "[]string"
332
+ elsif property["type"] == "list of content items"
331
333
  # HACK There's no list of content items object so we return an array of string
332
334
  "[]string"
333
335
  elsif property["type"].include?('{ "unread_count": "integer" }')
@@ -366,6 +368,8 @@ module CanvasApi
366
368
  "no-op" # this is handled further up the stack
367
369
  elsif property["type"] == "URL"
368
370
  "string"
371
+ elsif property["type"] == "uuid"
372
+ "string"
369
373
  else
370
374
  raise "Unable to match '#{name}' requested property '#{property}' to Go Type."
371
375
  end
@@ -1,5 +1,12 @@
1
1
  module CanvasApi
2
2
  def nested_arg(str)
3
+ # update_list_of_blackout_dates has a parameter named 'blackout_dates:'
4
+ # This results in a parameter in the resolver named 'blackout_dates::'
5
+ # which causes a syntax error.
6
+ if str[str.length() - 1] == ":"
7
+ str = str.chop
8
+ end
9
+
3
10
  # TODO/HACK we are replacing values from the string here to get things to work for now.
4
11
  # However, removing these symbols means that the methods that use the arguments
5
12
  # generated herein will have bugs and be unusable.
@@ -9,9 +16,9 @@ module CanvasApi
9
16
  gsub("<", "_").
10
17
  gsub(">", "_").
11
18
  gsub("`", "").
12
- gsub("https://canvas.instructure.com/lti/", "").
19
+ gsub("https://canvas.instructure.com/lti/", "lti_").
13
20
  gsub("https://www.instructure.com/", "").
14
- gsub("https://purl.imsglobal.org/spec/lti/claim/", "").
21
+ gsub("https://purl.imsglobal.org/spec/lti/claim/", "lti_claim_").
15
22
  gsub(".", "")
16
23
  end
17
24
  end
@@ -6,7 +6,11 @@ module CanvasApi
6
6
  CONFLICTING_NAMES = ["end", "context", "next", "module"]
7
7
 
8
8
  def graphql_type(name, property, return_type = false, model = nil, input_type = false)
9
- if property["$ref"]
9
+ if property["nickname"] == "get_bulk_user_progress"
10
+ # custom type specific to the get_bulk_user_progress endpoint. The type from canvas is void but
11
+ # we have to use a custom type in order to return data.
12
+ "LMSGraphQL::Types::CanvasBespoke::CanvasModuleUser"
13
+ elsif property["$ref"]
10
14
  canvas_name(property['$ref'], input_type)
11
15
  elsif property["allowableValues"]
12
16
  enum_class_name(model, name, input_type)
@@ -28,7 +32,7 @@ module CanvasApi
28
32
  elsif property["items"]["$ref"] == "[String]"
29
33
  "[String]"
30
34
  elsif property["items"]["$ref"] == "DateTime" || property["items"]["$ref"] == "Date"
31
- "[LMSGraphQL::Types::DateTimeType]"
35
+ "[GraphQL::Types::ISO8601DateTime]"
32
36
  elsif property["items"]["$ref"]
33
37
  # HACK on https://canvas.instructure.com/doc/api/submissions.json
34
38
  # the ref value is set to a full sentence rather than a
@@ -54,15 +58,23 @@ module CanvasApi
54
58
  puts "Using string type for '#{name}' ('#{property}') of type object."
55
59
  "String"
56
60
  else
57
- if property["type"] == "TermsOfService"
61
+ if property["type"] == "array of outcome ids"
62
+ "[String]"
63
+ elsif property["type"] == "TermsOfService"
58
64
  # HACK There's no TermsOfService object so we return a string
59
65
  "String"
60
66
  elsif property["type"] == "list of content items"
61
67
  # HACK There's no list of content items object so we return an array of string
62
68
  "[String]"
69
+ elsif property["type"] == "uuid"
70
+ # uuid is a string
71
+ "String"
63
72
  elsif property["type"].include?('{ "unread_count": "integer" }')
64
73
  # HACK TODO this should probably be a different type.
65
74
  "Int"
75
+ elsif property["type"].include?('{ "count": "integer" }')
76
+ # HACK TODO this should probably be a different type.
77
+ "Int"
66
78
  elsif return_type
67
79
  canvas_name(property["type"], input_type)
68
80
  else
@@ -76,6 +88,12 @@ module CanvasApi
76
88
  def canvas_name(type, input_type = false)
77
89
  # Remove chars and fix spelling errors
78
90
  name = type.split('|').first.strip.gsub(" ", "_").singularize.gsub("MediaTrackk", "MediaTrack")
91
+
92
+ # Handle comment in type
93
+ if name.include?("BlackoutDate_The_result_(which_should_match_the_input_with_maybe_some_different_IDs).")
94
+ name = "BlackoutDate"
95
+ end
96
+
79
97
  "LMSGraphQL::Types::Canvas::Canvas#{name}#{input_type ? 'Input' : ''}"
80
98
  end
81
99
 
@@ -98,9 +116,9 @@ module CanvasApi
98
116
  when "boolean"
99
117
  "Boolean"
100
118
  when "datetime"
101
- "LMSGraphQL::Types::DateTimeType"
119
+ "GraphQL::Types::ISO8601DateTime"
102
120
  when "date"
103
- "LMSGraphQL::Types::DateTimeType"
121
+ "GraphQL::Types::ISO8601DateTime"
104
122
  else
105
123
  raise "Unable to match requested primitive '#{type}' to GraphQL Type."
106
124
  end
@@ -192,7 +210,7 @@ field :#{name.underscore}, #{type}, "#{description}", resolver_method: :resolve_
192
210
  end
193
211
 
194
212
  def is_basic_type(type)
195
- ["Int", "String", "Boolean", "LMSGraphQL::Types::DateTimeType", "Float", "ID"].include?(type)
213
+ ["Int", "String", "Boolean", "GraphQL::Types::ISO8601DateTime", "Float", "ID"].include?(type)
196
214
  end
197
215
 
198
216
  def no_brackets_period(str)
@@ -203,9 +221,15 @@ field :#{name.underscore}, #{type}, "#{description}", resolver_method: :resolve_
203
221
  str.underscore.split("/").last.split("|").first.gsub(/^canvas_?/, "").gsub(" ", "_").strip.singularize
204
222
  end
205
223
 
224
+ def make_bespoke_file_name(str)
225
+ str.underscore.split("/").last.split("|").first.gsub(" ", "_").strip.singularize
226
+ end
227
+
206
228
  def require_from_operation(operation)
207
229
  type = no_brackets_period(type_from_operation(@operation))
208
- if !is_basic_type(type)
230
+ if type.include?("CanvasBespoke")
231
+ "require_relative \"../../types/canvas_bespoke/#{make_bespoke_file_name(type)}\""
232
+ elsif !is_basic_type(type)
209
233
  "require_relative \"../../types/canvas/#{make_file_name(type)}\""
210
234
  end
211
235
  end
@@ -37,6 +37,11 @@ module CanvasApi
37
37
  end
38
38
  if operation
39
39
  nickname = operation["nickname"]
40
+
41
+ if nickname == "save_enabled_account_calendars_creates_and_updates_enabled_account_calendars_and_mark_feature_as_seen_user_preferences_argument_mark_feature_as_seen_optional_boolean_flag_to_mark_account_calendars_feature_as_seen_argument_enabled_account_calendars_optional_array_array_of_account_ids_to_remember_in_calendars_list_of_user_curl_https_canvas_api_v_calendar_events_save_enabled_account_calendars_x_post_f_mark_feature_as_seen_true_f_enabled_account_calendars_f_enabled_account_calendars_h_authorization_bearer_token"
42
+ nickname = "save_enabled_account_calendars"
43
+ end
44
+
40
45
  nickname = "#{@name}_#{nickname}" if [
41
46
  "upload_file",
42
47
  "query_by_course",
@@ -7,7 +7,7 @@ module LMSGraphQL
7
7
  class Canvas<%=@model['id'].singularize%>Input < BaseInputObject
8
8
  <%=graphql_field_enums(@model, true)-%>
9
9
  description "<%=@description%>. API Docs: https://canvas.instructure.com/doc/api/<%=@name%>.html"
10
- <%=graphql_fields(@model, @resource_name, true, true).join(" ")%>
10
+ <%=graphql_fields(@model, @resource_name, true, true).join(" ")%>
11
11
  end
12
12
  end
13
13
  end