forked from
microcosm.blue/microcosm-rs
Constellation, Spacedust, Slingshot, UFOs: atproto crates and services for microcosm
1use crate::ErrorResponseObject;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum ConsumerError {
6 #[error(transparent)]
7 JetstreamConnectionError(#[from] jetstream::error::ConnectionError),
8 #[error(transparent)]
9 JetstreamConfigValidationError(#[from] jetstream::error::ConfigValidationError),
10 #[error("jetstream ended")]
11 JetstreamEnded,
12 #[error("delay queue output dropped")]
13 DelayQueueOutputDropped,
14}
15
16#[derive(Debug, Error)]
17pub enum ServerError {
18 #[error("server build error: {0}")]
19 AcmeBuildError(std::io::Error),
20 #[error("server exited: {0}")]
21 ServerExited(std::io::Error),
22}
23
24#[derive(Debug, Error)]
25pub enum IdentityError {
26 #[error("whatever: {0}")]
27 WhateverError(String),
28 #[error("bad DID: {0}")]
29 BadDid(&'static str),
30 #[error("identity types got mixed up: {0}")]
31 IdentityValTypeMixup(String),
32 #[error("foyer error: {0}")]
33 FoyerError(#[from] foyer::Error),
34
35 #[error("failed to resolve: {0}")]
36 ResolutionFailed(#[from] atrium_identity::Error),
37 // #[error("identity resolved but no handle found for user")]
38 // NoHandle,
39 #[error("found handle {0:?} but it appears invalid: {1}")]
40 InvalidHandle(String, &'static str),
41
42 #[error("could not convert atrium did doc to partial mini doc: {0}")]
43 BadDidDoc(String),
44
45 #[error("wrong key for clearing refresh queue: {0}")]
46 RefreshQueueKeyError(&'static str),
47}
48
49#[derive(Debug, Error)]
50pub enum HealthCheckError {
51 #[error("failed to send checkin: {0}")]
52 HealthCheckError(#[from] reqwest::Error),
53}
54
55#[derive(Debug, Error)]
56pub enum MainTaskError {
57 #[error(transparent)]
58 ConsumerTaskError(#[from] ConsumerError),
59 #[error(transparent)]
60 ServerTaskError(#[from] ServerError),
61 #[error(transparent)]
62 IdentityTaskError(#[from] IdentityError),
63 #[error(transparent)]
64 HealthCheckError(#[from] HealthCheckError),
65 #[error("firehose cache failed to close: {0}")]
66 FirehoseCacheCloseError(foyer::Error),
67}
68
69#[derive(Debug, Error)]
70pub enum RecordError {
71 #[error("identity error: {0}")]
72 IdentityError(#[from] IdentityError),
73 #[error("repo could not be validated as either a DID or an atproto handle")]
74 BadRepo,
75 #[error("could not get record: {0}")]
76 NotFound(&'static str),
77 #[error("could nto parse pds url: {0}")]
78 UrlParseError(#[from] url::ParseError),
79 #[error("reqwest send failed: {0}")]
80 SendError(reqwest::Error),
81 #[error("reqwest raised for status: {0}")]
82 StatusError(reqwest::Error),
83 #[error("reqwest failed to parse json: {0}")]
84 ParseJsonError(reqwest::Error),
85 #[error("upstream getRecord did not include a CID")]
86 MissingUpstreamCid,
87 #[error("upstream CID was not valid: {0}")]
88 BadUpstreamCid(String),
89 #[error("upstream atproto-looking bad request")]
90 UpstreamBadRequest(ErrorResponseObject),
91 #[error("upstream non-atproto bad request")]
92 UpstreamBadBadNotGoodRequest(reqwest::Error),
93}