Skip to content

Commit f752b49

Browse files
committed
Add method to get a message person image, improve som spelling mistakes
1 parent c24dbf0 commit f752b49

6 files changed

Lines changed: 236 additions & 27 deletions

File tree

API.Test/AuthentificationTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ static AuthentificationTests()
1717
{
1818
// Load a file where i saved login data
1919
using StreamReader str = new("LoginData.txt");
20-
s_Server = str.ReadLine();
21-
s_LoginName = str.ReadLine();
22-
s_UserName = str.ReadLine();
23-
s_Password = str.ReadLine();
20+
s_Server = str.ReadLine()!;
21+
s_LoginName = str.ReadLine()!;
22+
s_UserName = str.ReadLine()!;
23+
s_Password = str.ReadLine()!;
2424
}
2525

2626
// Login data to test

API.Test/ProfileTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using static API.Test.AuthentificationTests;
7+
using SixLabors.ImageSharp;
8+
9+
namespace API.Test;
10+
11+
[TestFixture]
12+
internal class ProfileTests
13+
{
14+
[Test]
15+
public void GetRecipientProfileImgTest()
16+
{
17+
Client.LoginAsync(s_Server, s_LoginName, s_UserName, s_Password).Wait();
18+
19+
Task<Image> imgRender = Client.GetMessagePersonProfileImageAsync(new() { DisplayName = "Test Person" });
20+
imgRender.Wait();
21+
imgRender.Result.SaveAsPng("RenderImg.png");
22+
23+
24+
Task<Image> imgDownload = Client.GetMessagePersonProfileImageAsync(new() { ImageUrl = new("https://foundations.projectpythia.org/_images/GitHub-logo.png") }); // A Random non square GitHub image i found
25+
imgDownload.Wait();
26+
imgDownload.Result.SaveAsPng("DownloadImg.png");
27+
}
28+
}

WebUntisAPI.Client/WebUntisAPI.Client.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636

3737
<ItemGroup>
3838
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
39+
<PackageReference Condition="'$(TargetFramework)' == 'net6.0' or '$(TargetFramework)' == 'net7.0'" Include="SixLabors.ImageSharp" Version="3.0.1" />
40+
<PackageReference Condition="'$(TargetFramework)' == 'net6.0' or '$(TargetFramework)' == 'net7.0'" Include="SixLabors.ImageSharp.Drawing" Version="1.0.0" />
3941
<PackageReference Condition="'$(TargetFramework)' == 'net47' or '$(TargetFramework)' == 'net481'" Include="System.Net.Http" Version="4.3.4" />
4042
</ItemGroup>
4143

WebUntisAPI.Client/WebUntisClient.Messages.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<int> GetUnreadMessagesCountAsync(CancellationToken ct = defaul
3333
/// <summary>
3434
/// Get the permissions you have to send messages
3535
/// </summary>
36-
/// <param name="ct">Cancllation token</param>
36+
/// <param name="ct">Cancellation token</param>
3737
/// <returns></returns>
3838
/// <exception cref="ObjectDisposedException">Thrown when the instance was disposed</exception>
3939
/// <exception cref="UnauthorizedAccessException">Thrown when you're logged in</exception>
@@ -84,7 +84,7 @@ public async Task<Dictionary<string, MessagePerson[]>> GetMessagePeopleAsync(Can
8484
}
8585

8686
/// <summary>
87-
/// Confirm a recived message
87+
/// Confirm a received message
8888
/// </summary>
8989
/// <remarks>
9090
/// You should only use this for confirmation requested messages
@@ -108,7 +108,7 @@ public async Task<ConfirmationInformations> ConfirmMessageAsync(Message message,
108108
Method = HttpMethod.Post,
109109
RequestUri = new Uri(ServerUrl + $"/WebUntis/api/rest/view/v1/messages/{message.Id}/read-confirmation")
110110
};
111-
request.Headers.Add("JSESSIONID", _sessonId);
111+
request.Headers.Add("JSESSIONID", _sessionId);
112112
request.Headers.Add("schoolname", _schoolName);
113113
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
114114

@@ -260,7 +260,7 @@ public async Task<MessagePreview> SendMessageAsync(string subject, string conten
260260
RequestUri = new Uri(ServerUrl + "/WebUntis/api/rest/view/v2/messages/users"),
261261
Content = requestContent
262262
};
263-
request.Headers.Add("JSESSIONID", _sessonId);
263+
request.Headers.Add("JSESSIONID", _sessionId);
264264
request.Headers.Add("schoolname", _schoolName);
265265
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
266266

@@ -374,7 +374,7 @@ public async Task ReplyMessageAsync(Message replyMessage, string subject, string
374374
RequestUri = new Uri(ServerUrl + $"/WebUntis/api/rest/view/v2/messages/{replyMessage.Id}/reply"),
375375
Content = requestContent
376376
};
377-
request.Headers.Add("JSESSIONID", _sessonId);
377+
request.Headers.Add("JSESSIONID", _sessionId);
378378
request.Headers.Add("schoolname", _schoolName);
379379
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
380380

@@ -427,7 +427,7 @@ public async Task RevokeMessageAsync(Message message, CancellationToken ct = def
427427
Method = HttpMethod.Post,
428428
RequestUri = new Uri(ServerUrl + $"/WebUntis/api/rest/view/v1/messages/{message.Id}/revoke"),
429429
};
430-
request.Headers.Add("JSESSIONID", _sessonId);
430+
request.Headers.Add("JSESSIONID", _sessionId);
431431
request.Headers.Add("schoolname", _schoolName);
432432
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
433433

@@ -564,7 +564,7 @@ public async Task<DraftPreview> CreateDraftAsync(string subject, string content,
564564
RequestUri = new Uri(ServerUrl + "/WebUntis/api/rest/view/v2/messages/drafts"),
565565
Content = requestContent
566566
};
567-
request.Headers.Add("JSESSIONID", _sessonId);
567+
request.Headers.Add("JSESSIONID", _sessionId);
568568
request.Headers.Add("schoolname", _schoolName);
569569
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
570570

@@ -664,7 +664,7 @@ public async Task<DraftPreview> UpdateDraftAsync(Draft draft, Tuple<string, Stre
664664
RequestUri = new Uri(ServerUrl + "/WebUntis/api/rest/view/v2/messages/drafts/" + draft.Id),
665665
Content = requestContent
666666
};
667-
request.Headers.Add("JSESSIONID", _sessonId);
667+
request.Headers.Add("JSESSIONID", _sessionId);
668668
request.Headers.Add("schoolname", _schoolName);
669669
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
670670

@@ -721,7 +721,7 @@ public async Task DeleteDraftAsync(Draft draft, CancellationToken ct = default)
721721
Method = HttpMethod.Delete,
722722
RequestUri = new Uri(ServerUrl + "/WebUntis/api/rest/view/v1/messages/" + draft.Id)
723723
};
724-
request.Headers.Add("JSESSIONID", _sessonId);
724+
request.Headers.Add("JSESSIONID", _sessionId);
725725
request.Headers.Add("schoolname", _schoolName);
726726
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
727727

WebUntisAPI.Client/WebUntisClient.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,12 @@ public DateTime SessionBegin
9595
private readonly HttpClient _client;
9696

9797
/// <summary>
98-
/// Sesson id for json rpc requests
98+
/// Session id for json rpc requests
9999
/// </summary>
100-
private string _sessonId;
100+
private string _sessionId;
101101

102102
/// <summary>
103-
/// The school name for the sesson
103+
/// The school name for the session
104104
/// </summary>
105105
private string _schoolName;
106106

@@ -132,9 +132,9 @@ public WebUntisClient(string clientName, TimeSpan timeout)
132132
/// <param name="school">The school to login (Use only returned instances from <see cref="SchoolSearch.SearchAsync(string, string, CancellationToken)"/>)</param>
133133
/// <param name="username">Name of the user to login</param>
134134
/// <param name="password">Password of the user to login</param>
135-
/// <param name="ct">Cancelationtoken</param>
135+
/// <param name="ct">Cancelation Token</param>
136136
/// <param name="id">Identifier for the request</param>
137-
/// <returns><see langword="true"/> when the login was successfull. <see langword="false"/> when the <paramref name="username"/> or <paramref name="password"/> was invalid</returns>
137+
/// <returns><see langword="true"/> when the login was successful. <see langword="false"/> when the <paramref name="username"/> or <paramref name="password"/> was invalid</returns>
138138
/// <exception cref="ArgumentException">The server name is invalid</exception>
139139
/// <exception cref="HttpRequestException">There was an error while the request</exception>
140140
/// <exception cref="WebUntisException">The WebUntis server returned an error</exception>
@@ -152,14 +152,14 @@ public async Task<bool> LoginAsync(School school, string username, string passwo
152152
/// <param name="loginName">School to login (Not the normal school name but the WebUntis internal one)</param>
153153
/// <param name="username">Name of the user to login</param>
154154
/// <param name="password">Password of the user to login</param>
155-
/// <param name="ct">Cancelationtoken</param>
155+
/// <param name="ct">Cancelation Token</param>
156156
/// <param name="id">Identifier for the request</param>
157-
/// <returns><see langword="true"/> when the login was successfull. <see langword="false"/> when the <paramref name="username"/> or <paramref name="password"/> was invalid</returns>
157+
/// <returns><see langword="true"/> when the login was successful. <see langword="false"/> when the <paramref name="username"/> or <paramref name="password"/> was invalid</returns>
158158
/// <exception cref="ArgumentException">The server name is invalid</exception>
159159
/// <exception cref="HttpRequestException">There was an error while the request</exception>
160160
/// <exception cref="WebUntisException">The WebUntis server returned an error</exception>
161161
/// <exception cref="ObjectDisposedException">Thrown when the object is disposed</exception>
162-
public async Task<bool> LoginAsync(string server, string loginName, string username, string password, string id = "getStudents", CancellationToken ct = default)
162+
public async Task<bool> LoginAsync(string server, string loginName, string username, string password, string id = "Login", CancellationToken ct = default)
163163
{
164164
if (_disposedValue)
165165
throw new ObjectDisposedException(GetType().FullName);
@@ -234,7 +234,7 @@ public async Task<bool> LoginAsync(string server, string loginName, string usern
234234

235235
_serverUrl = serverUrl;
236236
_loginName = loginName;
237-
_sessonId = responseObject["result"]["sessionId"].ToObject<string>() ?? throw new InvalidDataException("Sesson id was expected");
237+
_sessionId = responseObject["result"]["sessionId"].ToObject<string>() ?? throw new InvalidDataException("Sesson id was expected");
238238
_loggedIn = true;
239239

240240
// Get the api auth token and the logged in user
@@ -303,7 +303,7 @@ public async Task LogoutAsync(string id = "Logout", CancellationToken ct = defau
303303
}
304304

305305
StringContent requestContent = new StringContent(sw.ToString(), Encoding.UTF8, "application/json");
306-
requestContent.Headers.Add("JSESSIONID", _sessonId);
306+
requestContent.Headers.Add("JSESSIONID", _sessionId);
307307
requestContent.Headers.Add("schoolname", _schoolName);
308308

309309
// Send request
@@ -312,7 +312,7 @@ public async Task LogoutAsync(string id = "Logout", CancellationToken ct = defau
312312
// Clear data
313313
_serverUrl = null;
314314
_loginName = null;
315-
_sessonId = null;
315+
_sessionId = null;
316316
_schoolName = null;
317317
_bearerToken = null;
318318
_loggedIn = false;
@@ -382,7 +382,7 @@ private async Task<JToken> MakeJSONRPCRequestAsync(string id, string methodName,
382382
}
383383

384384
StringContent requestContent = new StringContent(sw.ToString(), Encoding.UTF8, "application/json");
385-
requestContent.Headers.Add("JSESSIONID", _sessonId);
385+
requestContent.Headers.Add("JSESSIONID", _sessionId);
386386
requestContent.Headers.Add("schoolname", _schoolName);
387387

388388
// Send request
@@ -434,7 +434,7 @@ internal async Task<string> MakeAPIGetRequestAsync(string requestUrl, Cancellati
434434
Method = HttpMethod.Get,
435435
RequestUri = new Uri(ServerUrl + requestUrl)
436436
};
437-
request.Headers.Add("JSESSIONID", _sessonId);
437+
request.Headers.Add("JSESSIONID", _sessionId);
438438
request.Headers.Add("schoolname", _schoolName);
439439
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _bearerToken);
440440

@@ -460,6 +460,9 @@ internal async Task<string> MakeAPIGetRequestAsync(string requestUrl, Cancellati
460460
/// <summary>
461461
/// Refresh the session
462462
/// </summary>
463+
/// <remarks>
464+
/// Until this action was successfully ended no request should made
465+
/// </remarks>
463466
/// <param name="ct">Cancellation token</param>
464467
/// <exception cref="HttpRequestException">Thrown when an error happend while the http request</exception>
465468
public async Task ReloadSessionAsync(CancellationToken ct = default)
@@ -469,7 +472,7 @@ public async Task ReloadSessionAsync(CancellationToken ct = default)
469472
Method = HttpMethod.Get,
470473
RequestUri = new Uri(ServerUrl + "/WebUntis/api/token/new")
471474
};
472-
request.Headers.Add("JSESSIONID", _sessonId);
475+
request.Headers.Add("JSESSIONID", _sessionId);
473476
request.Headers.Add("schoolname", _schoolName);
474477

475478
HttpResponseMessage response = await _client.SendAsync(request, ct);

0 commit comments

Comments
 (0)