2024-04-12 20:01:47 +02:00
|
|
|
use axum::{extract::{Query, State}, http::StatusCode, Json};
|
|
|
|
|
2024-04-24 02:31:35 +02:00
|
|
|
use crate::{errors::UpubError, routes::activitypub::{CreationResult, JsonLD, Pagination}, server::{auth::AuthIdentity, Context}, url};
|
2024-04-12 20:01:47 +02:00
|
|
|
|
2024-04-24 02:31:35 +02:00
|
|
|
pub async fn get(State(ctx): State<Context>) -> crate::Result<JsonLD<serde_json::Value>> {
|
|
|
|
crate::server::builders::collection(&url!(ctx, "/outbox"), None)
|
2024-04-12 20:01:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn page(
|
|
|
|
State(ctx): State<Context>,
|
|
|
|
Query(page): Query<Pagination>,
|
|
|
|
AuthIdentity(auth): AuthIdentity,
|
2024-04-21 23:19:26 +02:00
|
|
|
) -> crate::Result<JsonLD<serde_json::Value>> {
|
2024-04-24 02:31:35 +02:00
|
|
|
crate::server::builders::paginate(
|
|
|
|
url!(ctx, "/outbox/page"),
|
|
|
|
auth.filter_condition(), // TODO filter local only stuff
|
|
|
|
ctx.db(),
|
|
|
|
page,
|
|
|
|
)
|
|
|
|
.await
|
2024-04-12 20:01:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
pub async fn post(
|
|
|
|
State(_ctx): State<Context>,
|
|
|
|
AuthIdentity(_auth): AuthIdentity,
|
|
|
|
Json(_activity): Json<serde_json::Value>,
|
|
|
|
) -> Result<CreationResult, UpubError> {
|
|
|
|
// TODO administrative actions may be carried out against this outbox?
|
|
|
|
Err(StatusCode::NOT_IMPLEMENTED.into())
|
|
|
|
}
|