use crate::{
config::{Config, UrlKind},
error::Error,
};
use super::{
CollectionResponse, Either, OrderedCollectionPageResponse, OrderedCollectionResponse, PageQuery,
};
use activitystreams::iri;
use actix_web::web::{Data, Json, Query};
pub(crate) async fn route(
config: Data<Config>,
page_query: Option<Query<PageQuery>>,
) -> Result<Json<CollectionResponse>, Error> {
let outbox = config.generate_url(UrlKind::Outbox);
if let Some(Query(PageQuery { page })) = page_query {
let outbox_page = iri!(format!("{outbox}?page={page}"));
Ok(Json(Either::Right(OrderedCollectionPageResponse {
context: Default::default(),
id: outbox_page,
_type: Default::default(),
total_items: 0,
part_of: outbox,
ordered_items: vec![],
})))
} else {
let outbox_page = iri!(format!("{outbox}?page=1"));
Ok(Json(Either::Left(OrderedCollectionResponse {
context: Default::default(),
id: outbox,
_type: Default::default(),
total_items: 0,
first: outbox_page,
})))
}
}