diff --git a/src/http.c b/src/http.c new file mode 100644 index 0000000..5cbfe12 --- /dev/null +++ b/src/http.c @@ -0,0 +1,40 @@ +/* + * Treebird - Lightweight frontend for Pleroma + * Copyright (C) 2022 Nekobit + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "http.h" + +#define REDIR_HTML_BEGIN "" \ + "" \ + "" \ + "Redirecting" \ + "" \ + "" +#define REDIR_HTML_END "" \ + "" + +void redirect(char* status, char* location) +{ + char* loc_str = location ? location : "/"; + + printf("Status: %s\r\n" + "Location: %s\r\n\r\n" + REDIR_HTML_BEGIN "Redirecting to %s..." REDIR_HTML_END, + status, + loc_str, + loc_str); +} diff --git a/src/http.h b/src/http.h new file mode 100644 index 0000000..acf7158 --- /dev/null +++ b/src/http.h @@ -0,0 +1,27 @@ +/* + * Treebird - Lightweight frontend for Pleroma + * Copyright (C) 2022 Nekobit + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef HTTP_H +#define HTTP_H +#include + +#define REDIRECT_303 "303 See Other" + +void redirect(char* status, char* location); + +#endif // HTTP_H diff --git a/src/page_config.c b/src/page_config.c index 6821608..01ae4e3 100644 --- a/src/page_config.c +++ b/src/page_config.c @@ -19,6 +19,7 @@ #include #include #include +#include "http.h" #include "base_page.h" #include "../config.h" #include "easprintf.h" @@ -110,5 +111,5 @@ void content_config_appearance(struct session* ssn, mastodont_t* api, char** dat void content_config(struct session* ssn, mastodont_t* api, char** data) { - + redirect(REDIRECT_303, "/config/general"); } diff --git a/src/status.c b/src/status.c index 343ff26..6d898f7 100644 --- a/src/status.c +++ b/src/status.c @@ -18,6 +18,7 @@ #include #include +#include "http.h" #include "base_page.h" #include "status.h" #include "easprintf.h" @@ -73,11 +74,7 @@ void content_status_create(struct session* ssn, mastodont_t* api, char** data) try_post_status(ssn, api); - printf("Status: 303 See Other\r\n" - "Location: %s\r\n" - "Content-Length: 14\r\n\r\n" - "Redirecting...", - referer ? referer : "/"); + redirect(REDIRECT_303, referer); } int try_interact_status(struct session* ssn, mastodont_t* api, char* id)