snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 1a6bb79921b78f89dd975b5f6a7b3ad7d454a7b6
parent a6958d6161b09110c2d88ee6d96cadcc1c458b27
Author: default <nobody@localhost>
Date:   Wed, 10 Apr 2024 18:27:17 +0200

New function msg_repulsion.

Diffstat:
Mactivitypub.c | 27+++++++++++++++++++++++++++
Mmain.c | 14++++++++++++++
Msnac.h | 1+
3 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/activitypub.c b/activitypub.c @@ -1168,6 +1168,33 @@ xs_dict *msg_admiration(snac *snac, char *object, char *type) } +xs_dict *msg_repulsion(snac *user, char *id, char *type) +/* creates an Undo + admiration message */ +{ + xs *a_msg = NULL; + xs_dict *msg = NULL; + + if (valid_status(object_get(id, &a_msg))) { + /* create a clone of the original admiration message */ + xs *object = msg_admiration(user, id, type); + + /* delete the published date */ + object = xs_dict_del(object, "published"); + + /* create an undo message for this object */ + msg = msg_undo(user, object); + + /* copy the 'to' field */ + msg = xs_dict_set(msg, "to", xs_dict_get(object, "to")); + + /* now we despise this */ + object_unadmire(id, user->actor, *type == 'L' ? 1 : 0); + } + + return msg; +} + + xs_dict *msg_actor(snac *snac) /* create a Person message for this actor */ { diff --git a/main.c b/main.c @@ -295,6 +295,20 @@ int main(int argc, char *argv[]) return 0; } + if (strcmp(cmd, "unboost") == 0) { /** **/ + xs *msg = msg_repulsion(&snac, url, "Announce"); + + if (msg != NULL) { + enqueue_message(&snac, msg); + + if (dbglevel) { + xs_json_dump(msg, 4, stdout); + } + } + + return 0; + } + if (strcmp(cmd, "follow") == 0) { /** **/ xs *msg = msg_follow(&snac, url); diff --git a/snac.h b/snac.h @@ -264,6 +264,7 @@ char *get_atto(const xs_dict *msg); xs_list *get_attachments(const xs_dict *msg); xs_dict *msg_admiration(snac *snac, char *object, char *type); +xs_dict *msg_repulsion(snac *user, char *id, char *type); xs_dict *msg_create(snac *snac, const xs_dict *object); xs_dict *msg_follow(snac *snac, const char *actor);