From 6edacc8b320e3b82c290281110eecf944485efdf Mon Sep 17 00:00:00 2001 From: lda Date: Wed, 1 Nov 2023 21:11:49 +0100 Subject: [PATCH] [MOD] Use j2s to generate TokenInfo-s instead of hardcode --- Schema/AdminToken.json | 25 +++++++++++++++++++ Schema/TokenRequest.json | 14 ----------- src/RegToken.c | 47 +++++++++++------------------------ src/Routes/RouteAdminTokens.c | 2 +- 4 files changed, 40 insertions(+), 48 deletions(-) create mode 100644 Schema/AdminToken.json delete mode 100644 Schema/TokenRequest.json diff --git a/Schema/AdminToken.json b/Schema/AdminToken.json new file mode 100644 index 0000000..7c6ba7d --- /dev/null +++ b/Schema/AdminToken.json @@ -0,0 +1,25 @@ +{ + "header": "Schema\/AdminToken.h", + "types": { + "TokenRequest": { + "fields": { + "name": { "type": "string" }, + "max_uses": { "type": "integer" }, + "lifetime": { "type": "integer" } + }, + "type": "struct" + }, + "TokenInfo": { + "fields": { + "name": { "type": "string" }, + "created_by": { "type": "string" }, + "created_on": { "type": "integer" }, + "expires_on": { "type": "integer" }, + "used": { "type": "integer" }, + "uses": { "type": "integer" } + }, + "type": "struct" + } + }, + "guard": "TELODENDRIA_ADMINTOKEN_H" +} diff --git a/Schema/TokenRequest.json b/Schema/TokenRequest.json deleted file mode 100644 index 150b0fa..0000000 --- a/Schema/TokenRequest.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "header": "Schema\/TokenRequest.h", - "types": { - "TokenRequest": { - "fields": { - "name": { "type": "string" }, - "max_uses": { "type": "integer" }, - "lifetime": { "type": "integer" } - }, - "type": "struct" - } - }, - "guard": "TELODENDRIA_TOKENREQUEST_H" -} diff --git a/src/RegToken.c b/src/RegToken.c index 57a8afc..1ea51ac 100644 --- a/src/RegToken.c +++ b/src/RegToken.c @@ -33,6 +33,8 @@ #include #include +#include + int RegTokenValid(RegTokenInfo * token) { @@ -201,53 +203,32 @@ RegTokenVerify(char *token) HashMap * RegTokenJSON(RegTokenInfo * info) { - char *creator; - char *tokenname; - UInt64 created; - UInt64 expires; + TokenInfo tokinfo; - Int64 used; - Int64 uses; + tokinfo.name = info->name; + tokinfo.created_on = info->created; + tokinfo.expires_on = info->expires; - Int64 remaining; + tokinfo.uses = info->uses; + tokinfo.used = info->used; - HashMap *jsoninfo = HashMapCreate(); - - tokenname = info->name; - created = info->created; - expires = info->expires; - uses = info->uses; - used = info->used; - - remaining = Int64Sub(uses, used); - if (Int64Eq(uses, Int64Neg(Int64Create(0, 1)))) + tokinfo.uses = Int64Sub(info->uses, info->used); + if (Int64Eq(info->uses, Int64Neg(Int64Create(0, 1)))) { /* If uses == -1(infinite uses), just set it too * to -1 */ - remaining = uses; + tokinfo.uses = info->uses; } - if (!(creator = info->owner)) + if (!(tokinfo.created_by = info->owner)) { /* The owner can be null if Telodendria created it. * Since users can't contain a space, it is in this case set to * "Telodendria Server". */ - creator = "Telodendria Server"; + tokinfo.created_by = "Telodendria Server"; } - HashMapSet(jsoninfo, "name", JsonValueString(tokenname)); - HashMapSet(jsoninfo, "created_by", JsonValueString(creator)); - HashMapSet(jsoninfo, "created_on", JsonValueInteger(created)); - HashMapSet(jsoninfo, "expires_on", JsonValueInteger(expires)); - HashMapSet(jsoninfo, "used", JsonValueInteger(used)); - - /* #26 says the following: - * "The number of uses *remaining* for the token [...]" - * You therefore can't easily set the uses value here, hence why we - * are using `remaining' */ - HashMapSet(jsoninfo, "uses", JsonValueInteger(remaining)); - - return jsoninfo; + return TokenInfoToJson(&tokinfo); } RegTokenInfo * diff --git a/src/Routes/RouteAdminTokens.c b/src/Routes/RouteAdminTokens.c index 986db9d..21f5ca2 100644 --- a/src/Routes/RouteAdminTokens.c +++ b/src/Routes/RouteAdminTokens.c @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include