summaryrefslogtreecommitdiff
path: root/src/api/admin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/admin.rs')
-rw-r--r--src/api/admin.rs63
1 files changed, 53 insertions, 10 deletions
diff --git a/src/api/admin.rs b/src/api/admin.rs
index 8db3032..6030315 100644
--- a/src/api/admin.rs
+++ b/src/api/admin.rs
@@ -6,7 +6,10 @@ use tower_cookies::{Cookie, Cookies};
use crate::{
database,
- public::{admin, docs::{EndpointDocumentation, EndpointMethod}},
+ public::{
+ admin,
+ docs::{EndpointDocumentation, EndpointMethod},
+ },
types::{
extract::{AdminUser, Check, CheckResult, Json},
http::ResponseCode,
@@ -17,14 +20,16 @@ pub const ADMIN_AUTH: EndpointDocumentation = EndpointDocumentation {
uri: "/api/admin/auth",
method: EndpointMethod::Post,
description: "Authenticates on the admin panel",
- body: Some(r#"
+ body: Some(
+ r#"
{
"secret" : "admin"
}
- "#),
+ "#,
+ ),
responses: &[
(200, "Successfully executed SQL query"),
- (400, " Successfully authed, admin cookie returned")
+ (400, " Successfully authed, admin cookie returned"),
],
cookie: None,
};
@@ -60,16 +65,18 @@ pub const ADMIN_QUERY: EndpointDocumentation = EndpointDocumentation {
uri: "/api/admin/query",
method: EndpointMethod::Post,
description: "Run a SQL query on the database",
- body: Some(r#"
+ body: Some(
+ r#"
{
"query" : "DROP TABLE users;"
}
- "#),
+ "#,
+ ),
responses: &[
(200, "Successfully executed SQL query"),
(400, "Body does not match parameters"),
(401, "Unauthorized"),
- (500, "SQL query ran into an error")
+ (500, "SQL query ran into an error"),
],
cookie: Some("admin"),
};
@@ -102,7 +109,7 @@ pub const ADMIN_POSTS: EndpointDocumentation = EndpointDocumentation {
responses: &[
(200, "Returns sql table in <span>text/html</span>"),
(401, "Unauthorized"),
- (500, "Failed to fetch data")
+ (500, "Failed to fetch data"),
],
cookie: Some("admin"),
};
@@ -119,7 +126,7 @@ pub const ADMIN_USERS: EndpointDocumentation = EndpointDocumentation {
responses: &[
(200, "Returns sql table in <span>text/html</span>"),
(401, "Unauthorized"),
- (500, "Failed to fetch data")
+ (500, "Failed to fetch data"),
],
cookie: Some("admin"),
};
@@ -136,7 +143,7 @@ pub const ADMIN_SESSIONS: EndpointDocumentation = EndpointDocumentation {
responses: &[
(200, "Returns sql table in <span>text/html</span>"),
(401, "Unauthorized"),
- (500, "Failed to fetch data")
+ (500, "Failed to fetch data"),
],
cookie: Some("admin"),
};
@@ -145,6 +152,40 @@ async fn sessions(_: AdminUser) -> Response {
admin::generate_sessions()
}
+pub const ADMIN_COMMENTS: EndpointDocumentation = EndpointDocumentation {
+ uri: "/api/admin/comments",
+ method: EndpointMethod::Post,
+ description: "Returns the entire comments table",
+ body: None,
+ responses: &[
+ (200, "Returns sql table in <span>text/html</span>"),
+ (401, "Unauthorized"),
+ (500, "Failed to fetch data"),
+ ],
+ cookie: Some("admin"),
+};
+
+async fn comments(_: AdminUser) -> Response {
+ admin::generate_comments()
+}
+
+pub const ADMIN_LIKES: EndpointDocumentation = EndpointDocumentation {
+ uri: "/api/admin/likes",
+ method: EndpointMethod::Post,
+ description: "Returns the entire likes table",
+ body: None,
+ responses: &[
+ (200, "Returns sql table in <span>text/html</span>"),
+ (401, "Unauthorized"),
+ (500, "Failed to fetch data"),
+ ],
+ cookie: Some("admin"),
+};
+
+async fn likes(_: AdminUser) -> Response {
+ admin::generate_likes()
+}
+
async fn check(check: Option<AdminUser>) -> Response {
if check.is_none() {
ResponseCode::Success.text("false")
@@ -160,5 +201,7 @@ pub fn router() -> Router {
.route("/posts", post(posts))
.route("/users", post(users))
.route("/sessions", post(sessions))
+ .route("/comments", post(comments))
+ .route("/likes", post(likes))
.route("/check", post(check))
}