return proper error if fail fetching and dont have profile
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
465533d32b
commit
9251727d57
1 changed files with 86 additions and 67 deletions
|
@ -116,7 +116,8 @@ pub async fn get_displayname_route(
|
||||||
body: Ruma<get_display_name::v3::Request>,
|
body: Ruma<get_display_name::v3::Request>,
|
||||||
) -> Result<get_display_name::v3::Response> {
|
) -> Result<get_display_name::v3::Response> {
|
||||||
if body.user_id.server_name() != services().globals.server_name() {
|
if body.user_id.server_name() != services().globals.server_name() {
|
||||||
let response = services()
|
// Create and update our local copy of the user
|
||||||
|
if let Ok(response) = services()
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(
|
.send_federation_request(
|
||||||
body.user_id.server_name(),
|
body.user_id.server_name(),
|
||||||
|
@ -125,29 +126,37 @@ pub async fn get_displayname_route(
|
||||||
field: None, // we want the full user's profile to update locally too
|
field: None, // we want the full user's profile to update locally too
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
{
|
||||||
|
if !services().users.exists(&body.user_id)? {
|
||||||
|
services().users.create(&body.user_id, None)?;
|
||||||
|
}
|
||||||
|
|
||||||
// Create and update our local copy of the user for only the fields we request for
|
services()
|
||||||
if !services().users.exists(&body.user_id)? {
|
.users
|
||||||
services().users.create(&body.user_id, None)?;
|
.set_displayname(&body.user_id, response.displayname.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_blurhash(&body.user_id, response.blurhash.clone())
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
return Ok(get_display_name::v3::Response {
|
||||||
|
displayname: response.displayname,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
services()
|
if !services().users.exists(&body.user_id)? {
|
||||||
.users
|
// Return 404 if this user doesn't exist and we couldn't fetch it over federation
|
||||||
.set_displayname(&body.user_id, response.displayname.clone())
|
return Err(Error::BadRequest(
|
||||||
.await?;
|
ErrorKind::NotFound,
|
||||||
services()
|
"Profile was not found.",
|
||||||
.users
|
));
|
||||||
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
|
||||||
.await?;
|
|
||||||
services()
|
|
||||||
.users
|
|
||||||
.set_blurhash(&body.user_id, response.blurhash.clone())
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
return Ok(get_display_name::v3::Response {
|
|
||||||
displayname: response.displayname,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(get_display_name::v3::Response {
|
Ok(get_display_name::v3::Response {
|
||||||
|
@ -259,7 +268,8 @@ pub async fn get_avatar_url_route(
|
||||||
body: Ruma<get_avatar_url::v3::Request>,
|
body: Ruma<get_avatar_url::v3::Request>,
|
||||||
) -> Result<get_avatar_url::v3::Response> {
|
) -> Result<get_avatar_url::v3::Response> {
|
||||||
if body.user_id.server_name() != services().globals.server_name() {
|
if body.user_id.server_name() != services().globals.server_name() {
|
||||||
let response = services()
|
// Create and update our local copy of the user
|
||||||
|
if let Ok(response) = services()
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(
|
.send_federation_request(
|
||||||
body.user_id.server_name(),
|
body.user_id.server_name(),
|
||||||
|
@ -268,30 +278,38 @@ pub async fn get_avatar_url_route(
|
||||||
field: None, // we want the full user's profile to update locally as well
|
field: None, // we want the full user's profile to update locally as well
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
{
|
||||||
|
if !services().users.exists(&body.user_id)? {
|
||||||
|
services().users.create(&body.user_id, None)?;
|
||||||
|
}
|
||||||
|
|
||||||
// Create and update our local copy of the user
|
services()
|
||||||
if !services().users.exists(&body.user_id)? {
|
.users
|
||||||
services().users.create(&body.user_id, None)?;
|
.set_displayname(&body.user_id, response.displayname.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_blurhash(&body.user_id, response.blurhash.clone())
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
return Ok(get_avatar_url::v3::Response {
|
||||||
|
avatar_url: response.avatar_url,
|
||||||
|
blurhash: response.blurhash,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
services()
|
if !services().users.exists(&body.user_id)? {
|
||||||
.users
|
// Return 404 if this user doesn't exist and we couldn't fetch it over federation
|
||||||
.set_displayname(&body.user_id, response.displayname.clone())
|
return Err(Error::BadRequest(
|
||||||
.await?;
|
ErrorKind::NotFound,
|
||||||
services()
|
"Profile was not found.",
|
||||||
.users
|
));
|
||||||
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
|
||||||
.await?;
|
|
||||||
services()
|
|
||||||
.users
|
|
||||||
.set_blurhash(&body.user_id, response.blurhash.clone())
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
return Ok(get_avatar_url::v3::Response {
|
|
||||||
avatar_url: response.avatar_url,
|
|
||||||
blurhash: response.blurhash,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(get_avatar_url::v3::Response {
|
Ok(get_avatar_url::v3::Response {
|
||||||
|
@ -310,7 +328,8 @@ pub async fn get_profile_route(
|
||||||
body: Ruma<get_profile::v3::Request>,
|
body: Ruma<get_profile::v3::Request>,
|
||||||
) -> Result<get_profile::v3::Response> {
|
) -> Result<get_profile::v3::Response> {
|
||||||
if body.user_id.server_name() != services().globals.server_name() {
|
if body.user_id.server_name() != services().globals.server_name() {
|
||||||
let response = services()
|
// Create and update our local copy of the user
|
||||||
|
if let Ok(response) = services()
|
||||||
.sending
|
.sending
|
||||||
.send_federation_request(
|
.send_federation_request(
|
||||||
body.user_id.server_name(),
|
body.user_id.server_name(),
|
||||||
|
@ -319,31 +338,31 @@ pub async fn get_profile_route(
|
||||||
field: None,
|
field: None,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
{
|
||||||
|
if !services().users.exists(&body.user_id)? {
|
||||||
|
services().users.create(&body.user_id, None)?;
|
||||||
|
}
|
||||||
|
|
||||||
// Create and update our local copy of the user
|
services()
|
||||||
if !services().users.exists(&body.user_id)? {
|
.users
|
||||||
services().users.create(&body.user_id, None)?;
|
.set_displayname(&body.user_id, response.displayname.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
||||||
|
.await?;
|
||||||
|
services()
|
||||||
|
.users
|
||||||
|
.set_blurhash(&body.user_id, response.blurhash.clone())
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
return Ok(get_profile::v3::Response {
|
||||||
|
displayname: response.displayname,
|
||||||
|
avatar_url: response.avatar_url,
|
||||||
|
blurhash: response.blurhash,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
services()
|
|
||||||
.users
|
|
||||||
.set_displayname(&body.user_id, response.displayname.clone())
|
|
||||||
.await?;
|
|
||||||
services()
|
|
||||||
.users
|
|
||||||
.set_avatar_url(&body.user_id, response.avatar_url.clone())
|
|
||||||
.await?;
|
|
||||||
services()
|
|
||||||
.users
|
|
||||||
.set_blurhash(&body.user_id, response.blurhash.clone())
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
return Ok(get_profile::v3::Response {
|
|
||||||
displayname: response.displayname,
|
|
||||||
avatar_url: response.avatar_url,
|
|
||||||
blurhash: response.blurhash,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !services().users.exists(&body.user_id)? {
|
if !services().users.exists(&body.user_id)? {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue