Swap name and preferredUsername apub fields

This commit is contained in:
Felix Ableitner 2020-10-16 22:44:40 +02:00
parent 571c71392e
commit 06a6bab2c1
3 changed files with 29 additions and 27 deletions

View file

@ -52,8 +52,8 @@ Receives activities from user: `Follow`, `Undo/Follow`, `Create`, `Update`, `Lik
"@context": "https://www.w3.org/ns/activitystreams", "@context": "https://www.w3.org/ns/activitystreams",
"id": "https://enterprise.lemmy.ml/c/main", "id": "https://enterprise.lemmy.ml/c/main",
"type": "Group", "type": "Group",
"name": "main", "preferredUsername": "main",
"preferredUsername": "The Main Community", "name": "The Main Community",
"category": { "category": {
"identifier": "1", "identifier": "1",
"name": "Discussion" "name": "Discussion"
@ -90,8 +90,8 @@ Receives activities from user: `Follow`, `Undo/Follow`, `Create`, `Update`, `Lik
| Field Name | Mandatory | Description | | Field Name | Mandatory | Description |
|---|---|---| |---|---|---|
| `name` | yes | Name of the actor | | `preferredUsername` | yes | Name of the actor |
| `preferredUsername` | yes | Displayname | | `name` | yes | Title of the community |
| `category` | yes | Hardcoded list of categories, see https://dev.lemmy.ml/api/v1/categories | | `category` | yes | Hardcoded list of categories, see https://dev.lemmy.ml/api/v1/categories |
| `sensitive` | yes | True indicates that all posts in the community are nsfw | | `sensitive` | yes | True indicates that all posts in the community are nsfw |
| `attributedTo` | yes | First the community creator, then all the remaining moderators | | `attributedTo` | yes | First the community creator, then all the remaining moderators |
@ -121,8 +121,8 @@ Sends and receives activities from/to other users: `Create/Note`, `Update/Note`,
"@context": "https://www.w3.org/ns/activitystreams", "@context": "https://www.w3.org/ns/activitystreams",
"id": "https://enterprise.lemmy.ml/u/picard", "id": "https://enterprise.lemmy.ml/u/picard",
"type": "Person", "type": "Person",
"name": "riker", "preferredUsername": "picard",
"preferredUsername": "Jean-Luc Picard", "name": "Jean-Luc Picard",
"summary": "The user bio", "summary": "The user bio",
"icon": { "icon": {
"type": "Image", "type": "Image",
@ -148,8 +148,8 @@ Sends and receives activities from/to other users: `Create/Note`, `Update/Note`,
| Field Name | Mandatory | Description | | Field Name | Mandatory | Description |
|---|---|---| |---|---|---|
| `name` | yes | Name of the actor | | `preferredUsername` | yes | Name of the actor |
| `preferredUsername` | no | Displayname | | `name` | no | The user's displayname |
| `summary` | no | User bio | | `summary` | no | User bio |
| `icon` | no | The user's avatar, shown next to the username | | `icon` | no | The user's avatar, shown next to the username |
| `image` | no | The user's banner, shown on top of the profile | | `image` | no | The user's banner, shown on top of the profile |

View file

@ -51,7 +51,7 @@ impl ToApub for Community {
group group
.set_context(activitystreams::context()) .set_context(activitystreams::context())
.set_id(Url::parse(&self.actor_id)?) .set_id(Url::parse(&self.actor_id)?)
.set_name(self.name.to_owned()) .set_name(self.title.to_owned())
.set_published(convert_datetime(self.published)) .set_published(convert_datetime(self.published))
.set_many_attributed_tos(moderators); .set_many_attributed_tos(moderators);
@ -78,7 +78,7 @@ impl ToApub for Community {
let mut ap_actor = ApActor::new(self.get_inbox_url()?, group); let mut ap_actor = ApActor::new(self.get_inbox_url()?, group);
ap_actor ap_actor
.set_preferred_username(self.title.to_owned()) .set_preferred_username(self.name.to_owned())
.set_outbox(self.get_outbox_url()?) .set_outbox(self.get_outbox_url()?)
.set_followers(self.get_followers_url()?) .set_followers(self.get_followers_url()?)
.set_endpoints(Endpoints { .set_endpoints(Endpoints {
@ -126,6 +126,11 @@ impl FromApub for CommunityForm {
let creator = get_or_fetch_and_upsert_user(creator_uri, context).await?; let creator = get_or_fetch_and_upsert_user(creator_uri, context).await?;
let name = group let name = group
.inner
.preferred_username()
.context(location_info!())?
.to_string();
let title = group
.inner .inner
.name() .name()
.context(location_info!())? .context(location_info!())?
@ -134,11 +139,6 @@ impl FromApub for CommunityForm {
.as_xsd_string() .as_xsd_string()
.context(location_info!())? .context(location_info!())?
.to_string(); .to_string();
let title = group
.inner
.preferred_username()
.context(location_info!())?
.to_string();
// TODO: should be parsed as html and tags like <script> removed (or use markdown source) // TODO: should be parsed as html and tags like <script> removed (or use markdown source)
// -> same for post.content etc // -> same for post.content etc
let description = group let description = group

View file

@ -30,7 +30,6 @@ impl ToApub for User_ {
person person
.set_context(activitystreams::context()) .set_context(activitystreams::context())
.set_id(Url::parse(&self.actor_id)?) .set_id(Url::parse(&self.actor_id)?)
.set_name(self.name.to_owned())
.set_published(convert_datetime(self.published)); .set_published(convert_datetime(self.published));
if let Some(u) = self.updated { if let Some(u) = self.updated {
@ -53,16 +52,17 @@ impl ToApub for User_ {
person.set_summary(bio.to_owned()); person.set_summary(bio.to_owned());
} }
if let Some(i) = self.preferred_username.to_owned() {
person.set_name(i);
}
let mut ap_actor = ApActor::new(self.get_inbox_url()?, person); let mut ap_actor = ApActor::new(self.get_inbox_url()?, person);
ap_actor.set_preferred_username(self.name.to_owned());
ap_actor.set_endpoints(Endpoints { ap_actor.set_endpoints(Endpoints {
shared_inbox: Some(self.get_shared_inbox_url()?), shared_inbox: Some(self.get_shared_inbox_url()?),
..Default::default() ..Default::default()
}); });
if let Some(i) = &self.preferred_username {
ap_actor.set_preferred_username(i.to_owned());
}
Ok(Ext1::new(ap_actor, self.get_public_key_ext()?)) Ok(Ext1::new(ap_actor, self.get_public_key_ext()?))
} }
fn to_tombstone(&self) -> Result<Tombstone, LemmyError> { fn to_tombstone(&self) -> Result<Tombstone, LemmyError> {
@ -104,15 +104,17 @@ impl FromApub for UserForm {
None => None, None => None,
}; };
let name = person let name: String = person
.name() .inner
.context(location_info!())? .preferred_username()
.one()
.context(location_info!())?
.as_xsd_string()
.context(location_info!())? .context(location_info!())?
.to_string(); .to_string();
let preferred_username = person.inner.preferred_username().map(|u| u.to_string()); let preferred_username: Option<String> = person
.name()
.map(|n| n.one())
.flatten()
.map(|n| n.to_owned().xsd_string())
.flatten();
// TODO a limit check (like the API does) might need to be done // TODO a limit check (like the API does) might need to be done
// here when we federate to other platforms. Same for preferred_username // here when we federate to other platforms. Same for preferred_username