diff options
Diffstat (limited to 'activitypub.c')
-rw-r--r-- | activitypub.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/activitypub.c b/activitypub.c index a5e23de..82f55f3 100644 --- a/activitypub.c +++ b/activitypub.c @@ -678,14 +678,22 @@ d_char *msg_actor(snac *snac) } -d_char *msg_create(snac *snac, char *object) +xs_dict *msg_create(snac *snac, const xs_dict *object) /* creates a 'Create' message */ { - d_char *msg = msg_base(snac, "Create", "@object", snac->actor, "@now", object); + xs_dict *msg = msg_base(snac, "Create", "@object", snac->actor, "@now", object); + xs_val *v; + + if ((v = xs_dict_get(object, "attributedTo"))) + msg = xs_dict_append(msg, "attributedTo", v); + + if ((v = xs_dict_get(object, "cc"))) + msg = xs_dict_append(msg, "cc", v); - msg = xs_dict_append(msg, "attributedTo", xs_dict_get(object, "attributedTo")); - msg = xs_dict_append(msg, "to", xs_dict_get(object, "to")); - msg = xs_dict_append(msg, "cc", xs_dict_get(object, "cc")); + if ((v = xs_dict_get(object, "to"))) + msg = xs_dict_append(msg, "to", v); + else + msg = xs_dict_append(msg, "to", public_address); return msg; } @@ -951,7 +959,7 @@ xs_dict *msg_question(snac *user, const char *content, const xs_list *opts, int time_t t = time(NULL) + end_secs; xs *et = xs_str_utctime(t, "%Y-%m-%dT%H:%M:%SZ"); - msg = xs_dict_append(msg, "endTime", msg); + msg = xs_dict_append(msg, "endTime", et); return msg; } |