Skip to content

Commit 98e7ef1

Browse files
committed
Add get classes method
1 parent 8424c9a commit 98e7ef1

2 files changed

Lines changed: 53 additions & 3 deletions

File tree

API.Test/TeachingTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,17 @@ public void GetSubject()
2424
else
2525
Assert.Fail();
2626
}
27+
28+
[Test]
29+
public void GetClass()
30+
{
31+
Client.LoginAsync(s_Server, s_LoginName, s_UserName, s_Password).Wait();
32+
33+
Task<Class[]> classes = Client.GetAllClassesAsync();
34+
classes.Wait();
35+
if (classes.Result.Length > 0)
36+
Assert.Pass();
37+
else
38+
Assert.Fail();
39+
}
2740
}

WebUntisAPI.Client/WebUntisClient.Teaching.cs

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,46 @@ public async Task<Subject[]> GetAllSubjectsAsync(string id = "getSubjects", Canc
5555
if (response.StatusCode != HttpStatusCode.OK)
5656
throw new HttpRequestException($"There was an error while the http request (Code: {response.StatusCode}).");
5757

58-
JsonSerializerSettings settings = new JsonSerializerSettings();
59-
settings.Converters.Add(new ColorJsonConverter());
60-
JSONRPCResponeModel<List<Subject>> responseModel = JsonConvert.DeserializeObject<JSONRPCResponeModel<List<Subject>>>(await response.Content.ReadAsStringAsync(), settings);
58+
JSONRPCResponeModel<List<Subject>> responseModel = JsonConvert.DeserializeObject<JSONRPCResponeModel<List<Subject>>>(await response.Content.ReadAsStringAsync());
59+
60+
// Check for WebUntis error
61+
if (responseModel.Error != null)
62+
throw responseModel.Error;
63+
64+
return responseModel.Result.ToArray();
65+
}
66+
67+
public async Task<Class[]> GetAllClassesAsync(string id = "getClasses", CancellationToken ct = default)
68+
{
69+
// Check for disposing
70+
if (_disposedValue)
71+
throw new ObjectDisposedException(GetType().FullName);
72+
73+
// Check if you logged in
74+
if (!LoggedIn)
75+
throw new UnauthorizedAccessException("You're not logged in");
76+
77+
// Make request
78+
JSONRPCRequestModel<object> requestModel = new JSONRPCRequestModel<object>()
79+
{
80+
Id = id,
81+
Method = "getKlassen",
82+
Params = new object()
83+
};
84+
StringContent requestContent = new StringContent(JsonConvert.SerializeObject(requestModel), Encoding.UTF8, "application/json");
85+
86+
// Send request
87+
HttpResponseMessage response = await _client.PostAsync(ServerUrl + "/WebUntis/jsonrpc.do", requestContent, ct);
88+
89+
// Check cancellation token
90+
if (ct.IsCancellationRequested)
91+
return null;
92+
93+
// Verify response
94+
if (response.StatusCode != HttpStatusCode.OK)
95+
throw new HttpRequestException($"There was an error while the http request (Code: {response.StatusCode}).");
96+
97+
JSONRPCResponeModel<List<Class>> responseModel = JsonConvert.DeserializeObject<JSONRPCResponeModel<List<Class>>>(await response.Content.ReadAsStringAsync());
6198

6299
// Check for WebUntis error
63100
if (responseModel.Error != null)

0 commit comments

Comments
 (0)