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, "
"); + else + s = xs_str_cat(s, ""); + + 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, "
"); + in_blq = 1; + } + + s = xs_str_cat(s, ss); + s = xs_str_cat(s, ""); + in_blq = 0; + } + + s = xs_str_cat(s, ss); + s = xs_str_cat(s, "
"); + + continue; + } + + if (in_blq) { + s = xs_str_cat(s, "