diff options
| -rw-r--r-- | activitypub.c | 37 | ||||
| -rw-r--r-- | data.c | 2 | ||||
| -rw-r--r-- | snac.h | 2 |
3 files changed, 40 insertions, 1 deletions
diff --git a/activitypub.c b/activitypub.c index f9144a6..5d54833 100644 --- a/activitypub.c +++ b/activitypub.c | |||
| @@ -73,3 +73,40 @@ int actor_request(snac *snac, char *actor, d_char **data) | |||
| 73 | 73 | ||
| 74 | return status; | 74 | return status; |
| 75 | } | 75 | } |
| 76 | |||
| 77 | |||
| 78 | int send_to_inbox(snac *snac, char *inbox, char *msg, d_char **payload, int *p_size) | ||
| 79 | /* sends a message to an Inbox */ | ||
| 80 | { | ||
| 81 | int status; | ||
| 82 | d_char *response; | ||
| 83 | |||
| 84 | response = http_signed_request(snac, "POST", inbox, | ||
| 85 | NULL, msg, strlen(msg), &status, payload, p_size); | ||
| 86 | |||
| 87 | free(response); | ||
| 88 | |||
| 89 | return status; | ||
| 90 | } | ||
| 91 | |||
| 92 | |||
| 93 | int send_to_actor(snac *snac, char *actor, char *msg, d_char **payload, int *p_size) | ||
| 94 | /* sends a message to an actor */ | ||
| 95 | { | ||
| 96 | int status; | ||
| 97 | xs *data = NULL; | ||
| 98 | |||
| 99 | /* resolve the actor first */ | ||
| 100 | status = actor_request(snac, actor, &data); | ||
| 101 | |||
| 102 | if (valid_status(status)) { | ||
| 103 | char *inbox = xs_dict_get(data, "inbox"); | ||
| 104 | |||
| 105 | if (inbox != NULL) | ||
| 106 | status = send_to_inbox(snac, inbox, msg, payload, p_size); | ||
| 107 | else | ||
| 108 | status = 400; | ||
| 109 | } | ||
| 110 | |||
| 111 | return status; | ||
| 112 | } | ||
| @@ -724,7 +724,7 @@ int actor_get(snac *snac, char *actor, d_char **data) | |||
| 724 | fclose(f); | 724 | fclose(f); |
| 725 | } | 725 | } |
| 726 | 726 | ||
| 727 | status = 110; /* "Response Is Stale" */ | 727 | status = 205; /* "205: Reset Content" "110: Response Is Stale" */ |
| 728 | } | 728 | } |
| 729 | else { | 729 | else { |
| 730 | /* it's still valid */ | 730 | /* it's still valid */ |
| @@ -82,3 +82,5 @@ int webfinger_get_handler(d_char *req, char *q_path, | |||
| 82 | 82 | ||
| 83 | int activitypub_request(snac *snac, char *url, d_char **data); | 83 | int activitypub_request(snac *snac, char *url, d_char **data); |
| 84 | int actor_request(snac *snac, char *actor, d_char **data); | 84 | int actor_request(snac *snac, char *actor, d_char **data); |
| 85 | int send_to_inbox(snac *snac, char *inbox, char *msg, d_char **payload, int *p_size); | ||
| 86 | int send_to_actor(snac *snac, char *actor, char *msg, d_char **payload, int *p_size); | ||