mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-12-01 13:51:10 +00:00
parent
7321a63005
commit
08a0a6d3ce
17 changed files with 95 additions and 36 deletions
|
@ -86,6 +86,7 @@ suspicious = { level = "deny", priority = -1 }
|
|||
uninlined_format_args = "allow"
|
||||
unused_self = "deny"
|
||||
unwrap_used = "deny"
|
||||
unimplemented = "deny"
|
||||
|
||||
[workspace.dependencies]
|
||||
lemmy_api = { version = "=0.19.5", path = "./crates/api" }
|
||||
|
|
|
@ -74,12 +74,18 @@ impl Object for SiteOrCommunity {
|
|||
})
|
||||
}
|
||||
|
||||
async fn delete(self, _data: &Data<Self::DataType>) -> LemmyResult<()> {
|
||||
unimplemented!()
|
||||
async fn delete(self, data: &Data<Self::DataType>) -> LemmyResult<()> {
|
||||
match self {
|
||||
SiteOrCommunity::Site(i) => i.delete(data).await,
|
||||
SiteOrCommunity::Community(c) => c.delete(data).await,
|
||||
}
|
||||
}
|
||||
|
||||
async fn into_json(self, _data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
unimplemented!()
|
||||
async fn into_json(self, data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
Ok(match self {
|
||||
SiteOrCommunity::Site(i) => InstanceOrGroup::Instance(i.into_json(data).await?),
|
||||
SiteOrCommunity::Community(c) => InstanceOrGroup::Group(c.into_json(data).await?),
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
|
|
@ -175,8 +175,9 @@ pub(in crate::activities) async fn receive_remove_action(
|
|||
)
|
||||
.await?;
|
||||
}
|
||||
DeletableObjects::PrivateMessage(_) => unimplemented!(),
|
||||
DeletableObjects::Person { .. } => unimplemented!(),
|
||||
// TODO these need to be implemented yet, for now, return errors
|
||||
DeletableObjects::PrivateMessage(_) => Err(LemmyErrorType::CouldntFindPrivateMessage)?,
|
||||
DeletableObjects::Person(_) => Err(LemmyErrorType::CouldntFindPerson)?,
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -155,8 +155,9 @@ impl UndoDelete {
|
|||
)
|
||||
.await?;
|
||||
}
|
||||
DeletableObjects::PrivateMessage(_) => unimplemented!(),
|
||||
DeletableObjects::Person { .. } => unimplemented!(),
|
||||
// TODO these need to be implemented yet, for now, return errors
|
||||
DeletableObjects::PrivateMessage(_) => Err(LemmyErrorType::CouldntFindPrivateMessage)?,
|
||||
DeletableObjects::Person(_) => Err(LemmyErrorType::CouldntFindPerson)?,
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ use crate::{
|
|||
};
|
||||
use activitypub_federation::{config::Data, traits::ActivityHandler};
|
||||
use lemmy_api_common::context::LemmyContext;
|
||||
use lemmy_utils::error::LemmyResult;
|
||||
use lemmy_utils::{error::LemmyResult, LemmyErrorType};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use url::Url;
|
||||
|
||||
|
@ -117,7 +117,8 @@ impl InCommunity for AnnouncableActivities {
|
|||
CollectionRemove(a) => a.community(context).await,
|
||||
LockPost(a) => a.community(context).await,
|
||||
UndoLockPost(a) => a.community(context).await,
|
||||
Page(_) => unimplemented!(),
|
||||
// TODO this needs to be implemented
|
||||
Page(_) => Err(LemmyErrorType::CouldntFindPost.into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,8 +61,11 @@ impl Object for PostOrComment {
|
|||
}
|
||||
}
|
||||
|
||||
async fn into_json(self, _data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
unimplemented!()
|
||||
async fn into_json(self, data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
Ok(match self {
|
||||
PostOrComment::Post(p) => PageOrNote::Page(Box::new(p.into_json(data).await?)),
|
||||
PostOrComment::Comment(c) => PageOrNote::Note(c.into_json(data).await?),
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
|
|
@ -118,8 +118,19 @@ impl Object for SearchableObjects {
|
|||
}
|
||||
}
|
||||
|
||||
async fn into_json(self, _data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
unimplemented!()
|
||||
async fn into_json(self, data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
Ok(match self {
|
||||
SearchableObjects::Post(p) => SearchableKinds::Page(Box::new(p.into_json(data).await?)),
|
||||
SearchableObjects::Comment(c) => SearchableKinds::Note(c.into_json(data).await?),
|
||||
SearchableObjects::PersonOrCommunity(pc) => match *pc {
|
||||
UserOrCommunity::User(p) => {
|
||||
SearchableKinds::PersonOrGroup(Box::new(PersonOrGroup::Person(p.into_json(data).await?)))
|
||||
}
|
||||
UserOrCommunity::Community(c) => {
|
||||
SearchableKinds::PersonOrGroup(Box::new(PersonOrGroup::Group(c.into_json(data).await?)))
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::{
|
||||
fetcher::user_or_community::{PersonOrGroup, UserOrCommunity},
|
||||
objects::instance::ApubSite,
|
||||
objects::{community::ApubCommunity, instance::ApubSite, person::ApubPerson},
|
||||
protocol::objects::instance::Instance,
|
||||
};
|
||||
use activitypub_federation::{
|
||||
|
@ -41,11 +41,14 @@ impl Object for SiteOrCommunityOrUser {
|
|||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
async fn read_from_id(
|
||||
_object_id: Url,
|
||||
_data: &Data<Self::DataType>,
|
||||
) -> LemmyResult<Option<Self>> {
|
||||
unimplemented!();
|
||||
async fn read_from_id(object_id: Url, data: &Data<Self::DataType>) -> LemmyResult<Option<Self>> {
|
||||
let site = ApubSite::read_from_id(object_id.clone(), data).await?;
|
||||
Ok(match site {
|
||||
Some(o) => Some(SiteOrCommunityOrUser::Site(o)),
|
||||
None => UserOrCommunity::read_from_id(object_id, data)
|
||||
.await?
|
||||
.map(SiteOrCommunityOrUser::UserOrCommunity),
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
@ -56,8 +59,13 @@ impl Object for SiteOrCommunityOrUser {
|
|||
}
|
||||
}
|
||||
|
||||
async fn into_json(self, _data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
unimplemented!()
|
||||
async fn into_json(self, data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
Ok(match self {
|
||||
SiteOrCommunityOrUser::Site(p) => SiteOrPersonOrGroup::Instance(p.into_json(data).await?),
|
||||
SiteOrCommunityOrUser::UserOrCommunity(p) => {
|
||||
SiteOrPersonOrGroup::PersonOrGroup(p.into_json(data).await?)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
@ -75,8 +83,20 @@ impl Object for SiteOrCommunityOrUser {
|
|||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
async fn from_json(_apub: Self::Kind, _data: &Data<Self::DataType>) -> LemmyResult<Self> {
|
||||
unimplemented!();
|
||||
async fn from_json(apub: Self::Kind, data: &Data<Self::DataType>) -> LemmyResult<Self> {
|
||||
Ok(match apub {
|
||||
SiteOrPersonOrGroup::Instance(a) => {
|
||||
SiteOrCommunityOrUser::Site(ApubSite::from_json(a, data).await?)
|
||||
}
|
||||
SiteOrPersonOrGroup::PersonOrGroup(a) => match a {
|
||||
PersonOrGroup::Person(p) => SiteOrCommunityOrUser::UserOrCommunity(UserOrCommunity::User(
|
||||
ApubPerson::from_json(p, data).await?,
|
||||
)),
|
||||
PersonOrGroup::Group(g) => SiteOrCommunityOrUser::UserOrCommunity(
|
||||
UserOrCommunity::Community(ApubCommunity::from_json(g, data).await?),
|
||||
),
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,6 +123,9 @@ impl Actor for SiteOrCommunityOrUser {
|
|||
}
|
||||
|
||||
fn inbox(&self) -> Url {
|
||||
unimplemented!()
|
||||
match self {
|
||||
SiteOrCommunityOrUser::Site(u) => u.inbox(),
|
||||
SiteOrCommunityOrUser::UserOrCommunity(c) => c.inbox(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,8 +65,11 @@ impl Object for UserOrCommunity {
|
|||
}
|
||||
}
|
||||
|
||||
async fn into_json(self, _data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
unimplemented!()
|
||||
async fn into_json(self, data: &Data<Self::DataType>) -> LemmyResult<Self::Kind> {
|
||||
Ok(match self {
|
||||
UserOrCommunity::User(p) => PersonOrGroup::Person(p.into_json(data).await?),
|
||||
UserOrCommunity::Community(p) => PersonOrGroup::Group(p.into_json(data).await?),
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
@ -115,7 +118,10 @@ impl Actor for UserOrCommunity {
|
|||
}
|
||||
|
||||
fn inbox(&self) -> Url {
|
||||
unimplemented!()
|
||||
match self {
|
||||
UserOrCommunity::User(p) => p.inbox(),
|
||||
UserOrCommunity::Community(p) => p.inbox(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ impl Object for ApubSite {
|
|||
}
|
||||
|
||||
async fn delete(self, _data: &Data<Self::DataType>) -> LemmyResult<()> {
|
||||
unimplemented!()
|
||||
Err(LemmyErrorType::CantDeleteSite.into())
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
|
|
@ -73,7 +73,7 @@ impl Object for ApubPrivateMessage {
|
|||
|
||||
async fn delete(self, _context: &Data<Self::DataType>) -> LemmyResult<()> {
|
||||
// do nothing, because pm can't be fetched over http
|
||||
unimplemented!()
|
||||
Err(LemmyErrorType::CouldntFindPrivateMessage.into())
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
|
|
|
@ -193,10 +193,11 @@ impl ActivityHandler for Page {
|
|||
type DataType = LemmyContext;
|
||||
type Error = LemmyError;
|
||||
fn id(&self) -> &Url {
|
||||
unimplemented!()
|
||||
self.id.inner()
|
||||
}
|
||||
// TODO this needs to be implemented
|
||||
fn actor(&self) -> &Url {
|
||||
unimplemented!()
|
||||
self.id.inner()
|
||||
}
|
||||
async fn verify(&self, data: &Data<Self::DataType>) -> LemmyResult<()> {
|
||||
ApubPost::verify(self, self.id.inner(), data).await
|
||||
|
|
|
@ -117,7 +117,7 @@ impl Crud for Comment {
|
|||
type UpdateForm = CommentUpdateForm;
|
||||
type IdType = CommentId;
|
||||
|
||||
/// This is unimplemented, use [[Comment::create]]
|
||||
/// Use [[Comment::create]]
|
||||
async fn create(pool: &mut DbPool<'_>, comment_form: &Self::InsertForm) -> Result<Self, Error> {
|
||||
debug_assert!(false);
|
||||
Comment::create(pool, comment_form, None).await
|
||||
|
|
|
@ -191,9 +191,12 @@ impl Followable for PersonFollower {
|
|||
.get_result::<Self>(conn)
|
||||
.await
|
||||
}
|
||||
|
||||
/// Currently no user following
|
||||
async fn follow_accepted(_: &mut DbPool<'_>, _: CommunityId, _: PersonId) -> Result<Self, Error> {
|
||||
unimplemented!()
|
||||
Err(Error::NotFound)
|
||||
}
|
||||
|
||||
async fn unfollow(pool: &mut DbPool<'_>, form: &PersonFollowerForm) -> Result<usize, Error> {
|
||||
let conn = &mut get_conn(pool).await?;
|
||||
diesel::delete(person_follower::table.find((form.follower_id, form.person_id)))
|
||||
|
|
|
@ -52,7 +52,7 @@ impl Reportable for PrivateMessageReport {
|
|||
_pm_id_: PrivateMessageId,
|
||||
_by_resolver_id: PersonId,
|
||||
) -> Result<usize, Error> {
|
||||
unimplemented!()
|
||||
Err(Error::NotFound)
|
||||
}
|
||||
|
||||
async fn unresolve(
|
||||
|
|
|
@ -20,7 +20,7 @@ impl Crud for Site {
|
|||
|
||||
/// Use SiteView::read_local, or Site::read_from_apub_id instead
|
||||
async fn read(_pool: &mut DbPool<'_>, _site_id: SiteId) -> Result<Option<Self>, Error> {
|
||||
unimplemented!()
|
||||
Err(Error::NotFound)
|
||||
}
|
||||
|
||||
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> {
|
||||
|
|
|
@ -179,6 +179,8 @@ pub enum LemmyErrorType {
|
|||
UrlWithoutDomain,
|
||||
InboxTimeout,
|
||||
Unknown(String),
|
||||
NotAnActor,
|
||||
CantDeleteSite,
|
||||
}
|
||||
|
||||
cfg_if! {
|
||||
|
|
Loading…
Reference in a new issue