before I dive too much more into adding pages in canvas

This commit is contained in:
2024-01-12 15:57:35 -07:00
parent 9f19704724
commit bca8497255
17 changed files with 472 additions and 60 deletions

View File

@@ -4,22 +4,15 @@ using RestSharp;
namespace Management.Services.Canvas;
public class CanvasAssignmentService
{
private readonly IWebRequestor webRequestor;
private readonly CanvasServiceUtils utils;
private readonly MyLogger<CanvasAssignmentService> log;
public CanvasAssignmentService(
IWebRequestor webRequestor,
CanvasServiceUtils utils,
MyLogger<CanvasAssignmentService> logger
public class CanvasAssignmentService(
IWebRequestor webRequestor,
CanvasServiceUtils utils,
MyLogger<CanvasAssignmentService> logger
)
{
this.webRequestor = webRequestor;
this.utils = utils;
this.log = logger;
}
{
private readonly IWebRequestor webRequestor = webRequestor;
private readonly CanvasServiceUtils utils = utils;
private readonly MyLogger<CanvasAssignmentService> log = logger;
public async Task<IEnumerable<CanvasAssignment>> GetAll(ulong courseId)
{
@@ -86,10 +79,10 @@ public class CanvasAssignmentService
points_possible = localAssignment.PointsPossible,
assignment_group_id = canvasAssignmentGroupId,
};
var bodyObj = new { assignment = body };
request.AddBody(bodyObj);
await webRequestor.PutAsync(request);
await CreateRubric(courseId, canvasAssignmentId, localAssignment);

View File

@@ -0,0 +1,87 @@
using CanvasModel.Courses;
using CanvasModel.Modules;
using CanvasModel.Pages;
using LocalModels;
using RestSharp;
namespace Management.Services.Canvas;
public class CanvasCoursePageService(
IWebRequestor webRequestor,
CanvasServiceUtils utils,
MyLogger<CanvasCoursePageService> logger
)
{
private readonly IWebRequestor webRequestor = webRequestor;
private readonly CanvasServiceUtils utils = utils;
private readonly MyLogger<CanvasCoursePageService> log = logger;
public async Task<IEnumerable<CanvasPage>> GetAll(ulong courseId)
{
var url = $"courses/{courseId}/pages";
var request = new RestRequest(url);
// request.AddParameter("include[]", "overrides");
var pagesResponse = await utils.PaginatedRequest<IEnumerable<CanvasPage>>(request);
return pagesResponse.SelectMany(
pages => pages
);
}
public async Task<string> Create(
ulong canvasCourseId,
LocalCoursePage localCourse
)
{
log.Log($"creating course page: {localCourse.Name}");
var url = $"courses/{canvasCourseId}/pages";
var request = new RestRequest(url);
var body = new
{
title = localCourse.Name,
body = localCourse.GetBodyHtml()
};
var bodyObj = new { wiki_page = body };
request.AddBody(bodyObj);
var (canvasPage, response) = await webRequestor.PostAsync<CanvasPage>(request);
if (canvasPage == null)
throw new Exception("created canvas course page was null");
return canvasPage.PageId;
}
public async Task Update(
ulong courseId,
string canvasPageId,
LocalCoursePage localCourse
)
{
log.Log($"updating course page: {localCourse.Name}");
var url = $"courses/{courseId}/pages/{canvasPageId}";
var request = new RestRequest(url);
var body = new
{
title = localCourse.Name,
body = localCourse.GetBodyHtml()
};
var bodyObj = new { wiki_page = body };
request.AddBody(bodyObj);
await webRequestor.PutAsync(request);
}
public async Task Delete(ulong courseId, string canvasPageId)
{
log.Log($"deleting page from canvas {canvasPageId}");
var url = $"courses/{courseId}/pages/{canvasPageId}";
var request = new RestRequest(url);
var response = await webRequestor.DeleteAsync(request);
if (!response.IsSuccessful)
{
log.Log(url);
throw new Exception("Failed to delete canvas course page");
}
}
}

View File

@@ -8,35 +8,26 @@ using RestSharp;
namespace Management.Services.Canvas;
public class CanvasService
{
private readonly IWebRequestor webRequestor;
private readonly CanvasServiceUtils utils;
private readonly MyLogger<CanvasService> logger;
public CanvasAssignmentService Assignments { get; }
public CanvasAssignmentGroupService AssignmentGroups { get; }
public CanvasModuleService Modules { get; }
public CanvasQuizService Quizzes { get; }
public CanvasService(
IWebRequestor webRequestor,
CanvasServiceUtils utils,
CanvasAssignmentService Assignments,
CanvasAssignmentGroupService AssignmentGroups,
CanvasModuleService Modules,
CanvasQuizService Quizzes,
MyLogger<CanvasService> logger
public class CanvasService(
IWebRequestor webRequestor,
CanvasServiceUtils utils,
CanvasAssignmentService Assignments,
CanvasAssignmentGroupService AssignmentGroups,
CanvasModuleService Modules,
CanvasQuizService Quizzes,
CanvasCoursePageService Pages,
MyLogger<CanvasService> logger
)
{
this.webRequestor = webRequestor;
this.utils = utils;
this.Assignments = Assignments;
this.AssignmentGroups = AssignmentGroups;
this.Modules = Modules;
this.Quizzes = Quizzes;
this.logger = logger;
}
{
private readonly IWebRequestor webRequestor = webRequestor;
private readonly CanvasServiceUtils utils = utils;
private readonly MyLogger<CanvasService> logger = logger;
public CanvasAssignmentService Assignments { get; } = Assignments;
public CanvasAssignmentGroupService AssignmentGroups { get; } = AssignmentGroups;
public CanvasModuleService Modules { get; } = Modules;
public CanvasQuizService Quizzes { get; } = Quizzes;
public CanvasCoursePageService Pages { get; } = Pages;
public async Task<IEnumerable<EnrollmentTermModel>> GetTerms()
{

View File

@@ -1,7 +1,6 @@
using System.Diagnostics;
using LocalModels;
using Management.Services;
using YamlDotNet.Serialization;
public class FileStorageManager
{

View File

@@ -131,7 +131,7 @@ public class CourseMarkdownLoader
}
private async Task<IEnumerable<LocalCoursePage>> loadPagesFromPath(string modulePath)
{
using var activity = DiagnosticsConfig.Source?.StartActivity("loading Pages from file");
using var activity = DiagnosticsConfig.Source?.StartActivity("loading Pages from path");
var pagesPath = $"{modulePath}/pages";
if (!Directory.Exists(pagesPath))
{