summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2022-09-27 09:38:46 +0200
committerdefault <nobody@localhost>2022-09-27 09:38:46 +0200
commit26a3b260d56cedf0ca56b331d8bec71d1a8b49f8 (patch)
tree16168d7f2a96a91d666786af03d1355b3f90b412
parente0c01956166c9fe14b734750e82f7c209ffcf499 (diff)
Started function not_really_markdown().
-rw-r--r--activitypub.c3
-rw-r--r--html.c65
-rw-r--r--main.c5
-rw-r--r--snac.h2
4 files changed, 74 insertions, 1 deletions
diff --git a/activitypub.c b/activitypub.c
index 3a459bf..bd79041 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -32,7 +32,8 @@ int activitypub_request(snac *snac, char *url, d_char **data)
/* ensure it's ActivityPub data */
ctype = xs_dict_get(response, "content-type");
- if (xs_str_in(ctype, "application/activity+json") != -1)
+ if (xs_str_in(ctype, "application/activity+json") != -1 ||
+ xs_str_in(ctype, "application/ld+json") != -1)
*data = xs_json_loads(payload);
else
status = 500;
diff --git a/html.c b/html.c
index 2646e7d..de9060c 100644
--- a/html.c
+++ b/html.c
@@ -7,3 +7,68 @@
#include "snac.h"
+d_char *not_really_markdown(char *content, d_char **f_content)
+/* formats a content using some Markdown rules */
+{
+ d_char *s = NULL;
+ int in_pre = 0;
+ int in_blq = 0;
+ xs *list;
+ char *p, *v;
+
+ s = xs_str_new(NULL);
+
+ p = list = xs_split(content, "\n");
+
+ while (xs_list_iter(&p, &v)) {
+ xs *ss = xs_strip(xs_dup(v));
+
+ if (xs_startswith(ss, "```")) {
+ if (!in_pre)
+ s = xs_str_cat(s, "<pre>");
+ else
+ s = xs_str_cat(s, "</pre>");
+
+ in_pre = !in_pre;
+ continue;
+ }
+
+ if (xs_startswith(ss, ">")) {
+ /* delete the > and subsequent spaces */
+ ss = xs_strip(xs_crop(ss, 1, 0));
+
+ if (!in_blq) {
+ s = xs_str_cat(s, "<blockquote>");
+ in_blq = 1;
+ }
+
+ s = xs_str_cat(s, ss);
+ s = xs_str_cat(s, "<br>");
+
+ continue;
+ }
+
+ if (in_blq) {
+ s = xs_str_cat(s, "</blockquote>");
+ in_blq = 0;
+ }
+
+ s = xs_str_cat(s, ss);
+ s = xs_str_cat(s, "<br>");
+ }
+
+ if (in_blq)
+ s = xs_str_cat(s, "</blockquote>");
+ if (in_pre)
+ s = xs_str_cat(s, "</pre>");
+
+ /* some beauty fixes */
+ if (xs_str_in(s, "</blockquote><br>") != -1) {
+ xs *os = s;
+ s = xs_replace(os, "</blockquote><br>", "</blockquote>");
+ }
+
+ *f_content = s;
+
+ return *f_content;
+}
diff --git a/main.c b/main.c
index eed5ea8..4fd0a87 100644
--- a/main.c
+++ b/main.c
@@ -153,6 +153,11 @@ int main(int argc, char *argv[])
printf("status: %d\n", status);
+ if (valid_status(status)) {
+ xs *j = xs_json_dumps_pp(data, 4);
+ printf("%s\n", j);
+ }
+
return 0;
}
diff --git a/snac.h b/snac.h
index aef8d69..562a627 100644
--- a/snac.h
+++ b/snac.h
@@ -100,3 +100,5 @@ int activitypub_get_handler(d_char *req, char *q_path,
int activitypub_post_handler(d_char *req, char *q_path,
char *payload, int p_size,
char **body, int *b_size, char **ctype);
+
+d_char *not_really_markdown(char *content, d_char **f_content);