Bring back handling RecordNotFound

Apparently this can also happen. It's all weird, but eh, let's just handle that too
This commit is contained in:
Aleksei Voronov 2024-11-17 19:29:31 +01:00
parent 7ec26c1bef
commit a27e947059
1 changed files with 24 additions and 0 deletions

View File

@ -115,6 +115,7 @@ impl Bluesky {
let profile_output = match result { let profile_output = match result {
Ok(profile_output) => profile_output, Ok(profile_output) => profile_output,
Err(e) if is_missing_repo_error(&e) => return Ok(None), Err(e) if is_missing_repo_error(&e) => return Ok(None),
Err(e) if is_record_not_found_error(&e) => return Ok(None),
Err(e) => return Err(e.into()), Err(e) => return Err(e.into()),
}; };
@ -197,6 +198,29 @@ where
) )
} }
fn is_record_not_found_error<T>(error: &atrium_xrpc::error::Error<T>) -> bool
where
T: Debug,
{
use atrium_xrpc::error::{Error, ErrorResponseBody, XrpcError, XrpcErrorKind};
matches!(error,
Error::XrpcResponse(XrpcError {
status,
error:
Some(XrpcErrorKind::Undefined(ErrorResponseBody {
error: Some(error_code),
message: Some(error_message),
})),
}) if
// FIXME: This is this way instead of pattern matching because atrium's
// version of http is pegged at like 0.2.x and it does not
// re-export it so we have no way of referencing the real type
status.as_u16() == StatusCode::BAD_REQUEST.as_u16()
&& error_code == "RecordNotFound"
)
}
fn is_unable_to_resolve_handle_error<T>(error: &atrium_xrpc::error::Error<T>) -> bool fn is_unable_to_resolve_handle_error<T>(error: &atrium_xrpc::error::Error<T>) -> bool
where where
T: Debug, T: Debug,