got assignment template variables and replacement working

This commit is contained in:
2023-07-27 19:51:36 -06:00
parent b03c699381
commit 7c857a3887
10 changed files with 63 additions and 81 deletions

View File

@@ -3,46 +3,33 @@ using RestSharp;
public class WebRequestor : IWebRequestor
{
private const string BaseUrl = "https://snow.instructure.com/api/v1/";
private bool tokenSet = false;
private string token;
private RestClient client;
private ICanvasTokenManagement tokenManagement { get; }
public WebRequestor(ICanvasTokenManagement tokenManagement)
public WebRequestor()
{
token =
Environment.GetEnvironmentVariable("CANVAS_TOKEN")
?? throw new Exception("CANVAS_TOKEN not in environment");
client = new RestClient(BaseUrl);
this.tokenManagement = tokenManagement;
client.AddDefaultHeader("Authorization", $"Bearer {token}");
}
private async Task EnsureCanvasTokenSet()
{
if (tokenSet)
return;
var newToken = await tokenManagement.GetCanvasToken();
if(newToken == null)
throw new Exception("cannot request canvas, no token in storage");
client.AddDefaultHeader("Authorization", $"Bearer {newToken}");
tokenSet = true;
}
public async Task<(T[]?, RestResponse)> GetManyAsync<T>(RestRequest request)
{
await EnsureCanvasTokenSet();
var response = await client.ExecuteGetAsync(request);
return (Deserialize<T[]>(response), response);
}
public async Task<(T?, RestResponse)> GetAsync<T>(RestRequest request)
{
await EnsureCanvasTokenSet();
var response = await client.ExecuteGetAsync(request);
return (Deserialize<T>(response), response);
}
public async Task<RestResponse> PostAsync(RestRequest request)
{
await EnsureCanvasTokenSet();
var response = await client.ExecutePostAsync(request);
if (!response.IsSuccessful)
{
@@ -56,7 +43,6 @@ public class WebRequestor : IWebRequestor
public async Task<(T?, RestResponse)> PostAsync<T>(RestRequest request)
{
await EnsureCanvasTokenSet();
var response = await client.ExecutePostAsync(request);
return (Deserialize<T>(response), response);
}