forked from Telodendria/Telodendria
[MOD] Use j2s to generate TokenInfo-s instead of hardcode
This commit is contained in:
parent
cdc056f9e9
commit
6edacc8b32
4 changed files with 40 additions and 48 deletions
25
Schema/AdminToken.json
Normal file
25
Schema/AdminToken.json
Normal file
|
@ -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"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -33,6 +33,8 @@
|
|||
#include <User.h>
|
||||
#include <Cytoplasm/Int64.h>
|
||||
|
||||
#include <Schema/AdminToken.h>
|
||||
|
||||
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 *
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <Cytoplasm/Str.h>
|
||||
#include <Cytoplasm/Memory.h>
|
||||
|
||||
#include <Schema/TokenRequest.h>
|
||||
#include <Schema/AdminToken.h>
|
||||
#include <RegToken.h>
|
||||
#include <User.h>
|
||||
|
||||
|
|
Loading…
Reference in a new issue