working on canvas sync

This commit is contained in:
2023-07-29 20:33:00 -06:00
parent 7c857a3887
commit 2cca727b4d
26 changed files with 362 additions and 83 deletions

View File

@@ -0,0 +1,23 @@
namespace CanvasModel.Modules;
public record CanvasModule(
[property: JsonPropertyName("id")] ulong Id,
[property: JsonPropertyName("workflow_state")] string WorkflowState,
[property: JsonPropertyName("position")] uint Position,
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("unlock_at")] DateTime? UnlockAt,
[property: JsonPropertyName("require_sequential_progress")] bool? RequireSequentialProgress,
[property: JsonPropertyName("prerequisite_module_ids")] IEnumerable<ulong>? PrerequisiteModuleIds,
[property: JsonPropertyName("items_count")] uint ItemsCount,
[property: JsonPropertyName("items_url")] string ItemsUrl,
// [OptIn]
// [Enigmatic] // can be null if "the module is deemed too large", even if opted-in
[property: JsonPropertyName("items")]
IEnumerable<CanvasModuleItem>? Items,
[property: JsonPropertyName("state")] string? State, // todo make sure this,
// [OptIn]
[property: JsonPropertyName("completed_at")]
DateTime? CompletedAt,
[property: JsonPropertyName("publish_final_grade")] bool? PublishFinalGrade,
[property: JsonPropertyName("published")] bool? Published
);

View File

@@ -0,0 +1,7 @@
namespace CanvasModel.Modules;
public record CanvasCompletionRequirement(
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("min_score")] double? MinScore,
[property: JsonPropertyName("completed")] bool? Completed
);

View File

@@ -0,0 +1,20 @@
namespace CanvasModel.Modules;
public record CanvasModuleItem(
[property: JsonPropertyName("id")] ulong Id,
[property: JsonPropertyName("module_id")] ulong ModuleId,
[property: JsonPropertyName("position")] uint Position,
[property: JsonPropertyName("title")] string Title,
[property: JsonPropertyName("indent")] uint? Indent,
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("content_id")] ulong? ContentId,
[property: JsonPropertyName("html_url")] string HtmlUrl,
[property: JsonPropertyName("url")] string? Url,
[property: JsonPropertyName("page_url")] string? PageUrl,
[property: JsonPropertyName("external_url")] string? ExternalUrl,
[property: JsonPropertyName("new_tab")] bool NewTab,
// [OptIn]
[property: JsonPropertyName("completion_requirement")]
CanvasCompletionRequirement? CompletionRequirement,
[property: JsonPropertyName("published")] bool? Published
);