feat: parse and serve shared_inbox endpoint
This commit is contained in:
parent
461526df12
commit
94a26a0c7d
2 changed files with 14 additions and 7 deletions
|
@ -1,6 +1,6 @@
|
||||||
use sea_orm::entity::prelude::*;
|
use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
use apb::{Actor, ActorMut, ActorType, BaseMut, DocumentMut, Object, ObjectMut, PublicKey, PublicKeyMut};
|
use apb::{Actor, ActorMut, ActorType, BaseMut, DocumentMut, Endpoints, EndpointsMut, Object, ObjectMut, PublicKey, PublicKeyMut};
|
||||||
|
|
||||||
use crate::routes::activitypub::jsonld::LD;
|
use crate::routes::activitypub::jsonld::LD;
|
||||||
|
|
||||||
|
@ -50,11 +50,11 @@ impl Model {
|
||||||
actor_type: object.actor_type().ok_or(super::FieldError("type"))?,
|
actor_type: object.actor_type().ok_or(super::FieldError("type"))?,
|
||||||
name: object.name().map(|x| x.to_string()),
|
name: object.name().map(|x| x.to_string()),
|
||||||
summary: object.summary().map(|x| x.to_string()),
|
summary: object.summary().map(|x| x.to_string()),
|
||||||
icon: object.icon().get().map(|x| x.url().id().unwrap_or_default()),
|
icon: object.icon().get().and_then(|x| x.url().id()),
|
||||||
image: object.image().get().map(|x| x.url().id().unwrap_or_default()),
|
image: object.image().get().and_then(|x| x.url().id()),
|
||||||
inbox: object.inbox().id(),
|
inbox: object.inbox().id(),
|
||||||
outbox: object.outbox().id(),
|
outbox: object.outbox().id(),
|
||||||
shared_inbox: None, // TODO!!! parse endpoints
|
shared_inbox: object.endpoints().get().and_then(|x| Some(x.shared_inbox()?.to_string())),
|
||||||
followers: object.followers().id(),
|
followers: object.followers().id(),
|
||||||
following: object.following().id(),
|
following: object.following().id(),
|
||||||
created: object.published().unwrap_or(chrono::Utc::now()),
|
created: object.published().unwrap_or(chrono::Utc::now()),
|
||||||
|
@ -98,8 +98,11 @@ impl Model {
|
||||||
.set_owner(Some(&self.id))
|
.set_owner(Some(&self.id))
|
||||||
.set_public_key_pem(&self.public_key)
|
.set_public_key_pem(&self.public_key)
|
||||||
))
|
))
|
||||||
|
.set_endpoints(apb::Node::object(
|
||||||
|
serde_json::Value::new_object()
|
||||||
|
.set_shared_inbox(self.shared_inbox.as_deref())
|
||||||
|
))
|
||||||
.set_discoverable(Some(true))
|
.set_discoverable(Some(true))
|
||||||
.set_endpoints(apb::Node::Empty)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ pub mod following;
|
||||||
use axum::extract::{Path, Query, State};
|
use axum::extract::{Path, Query, State};
|
||||||
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter, QuerySelect, SelectColumns};
|
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter, QuerySelect, SelectColumns};
|
||||||
|
|
||||||
use apb::{ActorMut, Node};
|
use apb::{ActorMut, EndpointsMut, Node};
|
||||||
use crate::{errors::UpubError, model::{self, user}, server::{auth::AuthIdentity, fetcher::Fetcher, Context}, url};
|
use crate::{errors::UpubError, model::{self, user}, server::{auth::AuthIdentity, fetcher::Fetcher, Context}, url};
|
||||||
|
|
||||||
use super::{jsonld::LD, JsonLD, TryFetch};
|
use super::{jsonld::LD, JsonLD, TryFetch};
|
||||||
|
@ -73,7 +73,11 @@ pub async fn view(
|
||||||
.set_following(Node::link(url!(ctx, "/users/{id}/following")))
|
.set_following(Node::link(url!(ctx, "/users/{id}/following")))
|
||||||
.set_followers(Node::link(url!(ctx, "/users/{id}/followers")))
|
.set_followers(Node::link(url!(ctx, "/users/{id}/followers")))
|
||||||
.set_following_me(following_me)
|
.set_following_me(following_me)
|
||||||
.set_followed_by_me(followed_by_me);
|
.set_followed_by_me(followed_by_me)
|
||||||
|
.set_endpoints(Node::object(
|
||||||
|
serde_json::Value::new_object()
|
||||||
|
.set_shared_inbox(Some(&url!(ctx, "/inbox")))
|
||||||
|
));
|
||||||
|
|
||||||
if !auth.is(&uid) && !cfg.show_followers_count {
|
if !auth.is(&uid) && !cfg.show_followers_count {
|
||||||
user = user.set_followers_count(None);
|
user = user.set_followers_count(None);
|
||||||
|
|
Loading…
Reference in a new issue