1 files changed, 29 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.HomeserverEmulator/Services/TokenService.cs b/Utilities/LibMatrix.HomeserverEmulator/Services/TokenService.cs
new file mode 100644
index 0000000..cf79aae
--- /dev/null
+++ b/Utilities/LibMatrix.HomeserverEmulator/Services/TokenService.cs
@@ -0,0 +1,29 @@
+namespace LibMatrix.HomeserverEmulator.Services;
+
+public class TokenService{
+ public string? GetAccessTokenOrNull(HttpContext ctx) {
+ //qry
+ if (ctx.Request.Query.TryGetValue("access_token", out var token)) {
+ return token;
+ }
+ //header
+ if (ctx.Request.Headers.TryGetValue("Authorization", out var auth)) {
+ var parts = auth.ToString().Split(' ');
+ if (parts is ["Bearer", _]) {
+ return parts[1];
+ }
+ }
+ return null;
+ }
+
+ public string GetAccessToken(HttpContext ctx) {
+ return GetAccessTokenOrNull(ctx) ?? throw new MatrixException() {
+ ErrorCode = MatrixException.ErrorCodes.M_UNKNOWN_TOKEN,
+ Error = "Missing token"
+ };
+ }
+
+ public string? GenerateServerName(HttpContext ctx) {
+ return ctx.Request.Host.ToString();
+ }
+}
\ No newline at end of file
|