The link verification time is stored as a time_t.

This way, it will be easier in an eventual future to test if
a link verification is too old to be trusted.
This commit is contained in:
default 2024-02-20 06:10:42 +01:00
parent d583a35d9e
commit a3b9ef5b98
3 changed files with 33 additions and 11 deletions

16
html.c
View File

@ -779,11 +779,21 @@ static xs_html *html_user_body(snac *user, int local)
if (xs_startswith(v, "https:/" "/")) { if (xs_startswith(v, "https:/" "/")) {
/* is this link validated? */ /* is this link validated? */
char *val_date = xs_dict_get(val_links, v); xs *verified_link = NULL;
xs_number *val_time = xs_dict_get(val_links, v);
if (!xs_is_null(val_date) && *val_date) { if (xs_type(val_time) == XSTYPE_NUMBER) {
time_t t = xs_number_get(val_time);
if (t > 0) {
xs *s1 = xs_str_utctime(t, ISO_DATE_SPEC);
verified_link = xs_fmt("%s (%s)", L("verified link"), s1);
}
}
if (!xs_is_null(verified_link)) {
value = xs_html_tag("span", value = xs_html_tag("span",
xs_html_attr("title", L("verified link")), xs_html_attr("title", verified_link),
xs_html_raw("✔ "), xs_html_raw("✔ "),
xs_html_tag("a", xs_html_tag("a",
xs_html_attr("href", v), xs_html_attr("href", v),

View File

@ -642,10 +642,17 @@ xs_dict *mastoapi_account(const xs_dict *actor)
if (!xs_is_null(type) && !xs_is_null(name) && if (!xs_is_null(type) && !xs_is_null(name) &&
!xs_is_null(value) && strcmp(type, "PropertyValue") == 0) { !xs_is_null(value) && strcmp(type, "PropertyValue") == 0) {
char *val_date = NULL; xs *val_date = NULL;
if (xs_startswith(value, "https:/" "/")) if (xs_startswith(value, "https:/" "/")) {
val_date = xs_dict_get(val_links, value); xs_number *verified_time = xs_dict_get(val_links, value);
if (xs_type(verified_time) == XSTYPE_NUMBER) {
time_t t = xs_number_get(verified_time);
if (t > 0)
val_date = xs_str_utctime(t, ISO_DATE_SPEC);
}
}
xs *d = xs_dict_new(); xs *d = xs_dict_new();
@ -1161,10 +1168,15 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
val_links = xs_stock_dict; val_links = xs_stock_dict;
while (xs_dict_iter(&metadata, &k, &v)) { while (xs_dict_iter(&metadata, &k, &v)) {
char *val_date = NULL; xs *val_date = NULL;
if (xs_startswith(v, "https:/" "/")) xs_number *verified_time = xs_dict_get(val_links, v);
val_date = xs_dict_get(val_links, v); if (xs_type(verified_time) == XSTYPE_NUMBER) {
time_t t = xs_number_get(verified_time);
if (t > 0)
val_date = xs_str_utctime(t, ISO_DATE_SPEC);
}
xs *d = xs_dict_new(); xs *d = xs_dict_new();

View File

@ -491,12 +491,12 @@ void verify_links(snac *user)
/* is it the same as the actor? */ /* is it the same as the actor? */
if (strcmp(href, user->actor) == 0) { if (strcmp(href, user->actor) == 0) {
/* got it! */ /* got it! */
xs *verified_at = xs_str_utctime(0, ISO_DATE_SPEC); xs *verified_time = xs_number_new((double)time(NULL));
if (user->links == NULL) if (user->links == NULL)
user->links = xs_dict_new(); user->links = xs_dict_new();
user->links = xs_dict_set(user->links, v, verified_at); user->links = xs_dict_set(user->links, v, verified_time);
vfied = 1; vfied = 1;
} }