forked from lda/telodendria
[MOD] Separate things out.
This commit is contained in:
parent
c8b529d94b
commit
b6391da2a2
3 changed files with 60 additions and 41 deletions
|
@ -198,6 +198,58 @@ RegTokenVerify(char *token)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HashMap *
|
||||||
|
RegTokenJSON(RegTokenInfo * info)
|
||||||
|
{
|
||||||
|
char *creator;
|
||||||
|
char *tokenname;
|
||||||
|
UInt64 created;
|
||||||
|
UInt64 expires;
|
||||||
|
|
||||||
|
Int64 used;
|
||||||
|
Int64 uses;
|
||||||
|
|
||||||
|
Int64 remaining;
|
||||||
|
|
||||||
|
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))))
|
||||||
|
{
|
||||||
|
/* If uses == -1(infinite uses), just set it too
|
||||||
|
* to -1 */
|
||||||
|
remaining = uses;
|
||||||
|
}
|
||||||
|
if (!(creator = 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";
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
RegTokenInfo *
|
RegTokenInfo *
|
||||||
RegTokenCreate(Db * db, char *name, char *owner, UInt64 expires, Int64 uses, int privileges)
|
RegTokenCreate(Db * db, char *name, char *owner, UInt64 expires, Int64 uses, int privileges)
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,49 +90,10 @@ ROUTE_IMPL(RouteAdminTokens, path, argp)
|
||||||
/* TODO: Move this inside it's own `RegTokenJSON`
|
/* TODO: Move this inside it's own `RegTokenJSON`
|
||||||
* function */
|
* function */
|
||||||
char *tokenname = ArrayGet(tokens, i);
|
char *tokenname = ArrayGet(tokens, i);
|
||||||
char *creator;
|
|
||||||
UInt64 created;
|
|
||||||
UInt64 expires;
|
|
||||||
|
|
||||||
Int64 used;
|
|
||||||
Int64 uses;
|
|
||||||
|
|
||||||
Int64 remaining;
|
|
||||||
|
|
||||||
RegTokenInfo *info = RegTokenGetInfo(db, tokenname);
|
RegTokenInfo *info = RegTokenGetInfo(db, tokenname);
|
||||||
HashMap *jsoninfo = HashMapCreate();
|
HashMap *jsoninfo = RegTokenJSON(info);
|
||||||
|
|
||||||
created = info->created;
|
|
||||||
expires = info->expires;
|
|
||||||
uses = info->uses;
|
|
||||||
used = info->used;
|
|
||||||
|
|
||||||
remaining = Int64Sub(uses, used);
|
|
||||||
if (Int64Eq(uses, Int64Neg(Int64Create(0, 1))))
|
|
||||||
{
|
|
||||||
/* If uses == -1(infinite uses), just set it too
|
|
||||||
* to -1 */
|
|
||||||
remaining = uses;
|
|
||||||
}
|
|
||||||
if (!(creator = 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";
|
|
||||||
}
|
|
||||||
|
|
||||||
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. */
|
|
||||||
HashMapSet(jsoninfo, "uses", JsonValueInteger(remaining));
|
|
||||||
|
|
||||||
RegTokenClose(info);
|
RegTokenClose(info);
|
||||||
RegTokenFree(info);
|
RegTokenFree(info);
|
||||||
|
|
|
@ -106,6 +106,12 @@ extern void RegTokenUse(RegTokenInfo *);
|
||||||
*/
|
*/
|
||||||
extern int RegTokenExists(Db *, char *);
|
extern int RegTokenExists(Db *, char *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a JSON object corresponding to a valid TokenInfo (see
|
||||||
|
* #26)
|
||||||
|
*/
|
||||||
|
extern HashMap * RegTokenJSON(RegTokenInfo *);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the specified registration token from the database.
|
* Delete the specified registration token from the database.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue