summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--activitypub.c30
-rw-r--r--html.c17
-rw-r--r--main.c2
-rw-r--r--snac.h2
4 files changed, 44 insertions, 7 deletions
diff --git a/activitypub.c b/activitypub.c
index 8771ee8..fb790d5 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -508,7 +508,7 @@ d_char *msg_follow(snac *snac, char *actor)
508} 508}
509 509
510 510
511d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to) 511d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to, char *attach)
512/* creates a 'Note' message */ 512/* creates a 'Note' message */
513{ 513{
514 xs *ntid = tid(0); 514 xs *ntid = tid(0);
@@ -520,6 +520,7 @@ d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to)
520 xs *cc = xs_list_new(); 520 xs *cc = xs_list_new();
521 xs *irt = NULL; 521 xs *irt = NULL;
522 xs *tag = NULL; 522 xs *tag = NULL;
523 xs *atls = NULL;
523 d_char *msg = msg_base(snac, "Note", id, NULL, "@now", NULL); 524 d_char *msg = msg_base(snac, "Note", id, NULL, "@now", NULL);
524 char *p, *v; 525 char *p, *v;
525 526
@@ -561,6 +562,30 @@ d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to)
561 else 562 else
562 irt = xs_val_new(XSTYPE_NULL); 563 irt = xs_val_new(XSTYPE_NULL);
563 564
565 /* create the attachment list, if there are any */
566 if (!xs_is_null(attach) && *attach != '\0') {
567 xs *lsof1 = NULL;
568
569 if (xs_type(attach) == XSTYPE_STRING) {
570 lsof1 = xs_list_append(xs_list_new(), attach);
571 attach = lsof1;
572 }
573
574 atls = xs_list_new();
575 while (xs_list_iter(&attach, &v)) {
576 xs *d = xs_dict_new();
577 char *mime = xs_mime_by_ext(v);
578
579 d = xs_dict_append(d, "mediaType", mime);
580 d = xs_dict_append(d, "url", v);
581 d = xs_dict_append(d, "name", "");
582 d = xs_dict_append(d, "type",
583 xs_startswith(mime, "image/") ? "Image" : "Document");
584
585 atls = xs_list_append(atls, d);
586 }
587 }
588
564 if (tag == NULL) 589 if (tag == NULL)
565 tag = xs_list_new(); 590 tag = xs_list_new();
566 591
@@ -594,6 +619,9 @@ d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to)
594 msg = xs_dict_append(msg, "inReplyTo", irt); 619 msg = xs_dict_append(msg, "inReplyTo", irt);
595 msg = xs_dict_append(msg, "tag", tag); 620 msg = xs_dict_append(msg, "tag", tag);
596 621
622 if (atls != NULL)
623 msg = xs_dict_append(msg, "attachment", atls);
624
597 return msg; 625 return msg;
598} 626}
599 627
diff --git a/html.c b/html.c
index 167d685..a6b6f0e 100644
--- a/html.c
+++ b/html.c
@@ -195,6 +195,7 @@ d_char *html_top_controls(snac *snac, d_char *s)
195 "rows=\"8\" wrap=\"virtual\" required=\"required\"></textarea>\n" 195 "rows=\"8\" wrap=\"virtual\" required=\"required\"></textarea>\n"
196 "<input type=\"hidden\" name=\"in_reply_to\" value=\"\">\n" 196 "<input type=\"hidden\" name=\"in_reply_to\" value=\"\">\n"
197 "<input type=\"submit\" class=\"button\" value=\"%s\">\n" 197 "<input type=\"submit\" class=\"button\" value=\"%s\">\n"
198 "<input type=\"text\" name=\"attach_url\"> Image URL<p>"
198 "</form><p>\n" 199 "</form><p>\n"
199 "</div>\n" 200 "</div>\n"
200 201
@@ -204,12 +205,12 @@ d_char *html_top_controls(snac *snac, d_char *s)
204 "<form method=\"post\" action=\"%s/admin/action\">\n" 205 "<form method=\"post\" action=\"%s/admin/action\">\n"
205 "<input type=\"text\" name=\"actor\" required=\"required\">\n" 206 "<input type=\"text\" name=\"actor\" required=\"required\">\n"
206 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n" 207 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
207 "</form></p>\n" 208 "</form><p>\n"
208 209
209 "<form method=\"post\" action=\"%s/admin/action\">\n" 210 "<form method=\"post\" action=\"%s/admin/action\">\n"
210 "<input type=\"text\" name=\"id\" required=\"required\">\n" 211 "<input type=\"text\" name=\"id\" required=\"required\">\n"
211 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n" 212 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
212 "</form></p>\n" 213 "</form><p>\n"
213 214
214 "<details><summary>%s</summary>\n" 215 "<details><summary>%s</summary>\n"
215 216
@@ -222,7 +223,7 @@ d_char *html_top_controls(snac *snac, d_char *s)
222 "<input type=\"text\" name=\"avatar\" value=\"%s\"></p>\n" 223 "<input type=\"text\" name=\"avatar\" value=\"%s\"></p>\n"
223 224
224 "<p>%s:<br>\n" 225 "<p>%s:<br>\n"
225 "<textarea name=\"bio\" cols=60 rows=4>%s</textarea></p>\n" 226 "<textarea name=\"bio\" cols=\"40\" rows=\"4\">%s</textarea></p>\n"
226 227
227 "<p>%s:<br>\n" 228 "<p>%s:<br>\n"
228 "<input type=\"password\" name=\"passwd1\" value=\"\"></p>\n" 229 "<input type=\"password\" name=\"passwd1\" value=\"\"></p>\n"
@@ -854,16 +855,24 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
854 855
855 p_vars = xs_dict_get(req, "p_vars"); 856 p_vars = xs_dict_get(req, "p_vars");
856 857
858#if 0
859 {
860 xs *j1 = xs_json_dumps_pp(p_vars, 4);
861 printf("%s\n", j1);
862 }
863#endif
864
857 if (p_path && strcmp(p_path, "admin/note") == 0) { 865 if (p_path && strcmp(p_path, "admin/note") == 0) {
858 /* post note */ 866 /* post note */
859 char *content = xs_dict_get(p_vars, "content"); 867 char *content = xs_dict_get(p_vars, "content");
860 char *in_reply_to = xs_dict_get(p_vars, "in_reply_to"); 868 char *in_reply_to = xs_dict_get(p_vars, "in_reply_to");
869 char *attach_url = xs_dict_get(p_vars, "attach_url");
861 870
862 if (content != NULL) { 871 if (content != NULL) {
863 xs *msg = NULL; 872 xs *msg = NULL;
864 xs *c_msg = NULL; 873 xs *c_msg = NULL;
865 874
866 msg = msg_note(&snac, content, NULL, in_reply_to); 875 msg = msg_note(&snac, content, NULL, in_reply_to, attach_url);
867 876
868 c_msg = msg_create(&snac, msg); 877 c_msg = msg_create(&snac, msg);
869 878
diff --git a/main.c b/main.c
index 52eca27..188b92f 100644
--- a/main.c
+++ b/main.c
@@ -235,7 +235,7 @@ int main(int argc, char *argv[])
235 else 235 else
236 content = xs_dup(url); 236 content = xs_dup(url);
237 237
238 msg = msg_note(&snac, content, NULL, in_reply_to); 238 msg = msg_note(&snac, content, NULL, in_reply_to, NULL);
239 239
240 c_msg = msg_create(&snac, msg); 240 c_msg = msg_create(&snac, msg);
241 241
diff --git a/snac.h b/snac.h
index b1b52c4..12bfbfa 100644
--- a/snac.h
+++ b/snac.h
@@ -111,7 +111,7 @@ int webfinger_get_handler(d_char *req, char *q_path,
111d_char *msg_admiration(snac *snac, char *object, char *type); 111d_char *msg_admiration(snac *snac, char *object, char *type);
112d_char *msg_create(snac *snac, char *object); 112d_char *msg_create(snac *snac, char *object);
113d_char *msg_follow(snac *snac, char *actor); 113d_char *msg_follow(snac *snac, char *actor);
114d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to); 114d_char *msg_note(snac *snac, char *content, char *rcpts, char *in_reply_to, char *attach);
115d_char *msg_undo(snac *snac, char *object); 115d_char *msg_undo(snac *snac, char *object);
116d_char *msg_delete(snac *snac, char *id); 116d_char *msg_delete(snac *snac, char *id);
117d_char *msg_actor(snac *snac); 117d_char *msg_actor(snac *snac);