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 MainTaskError {
51 #[error(transparent)]
52 ConsumerTaskError(#[from] ConsumerError),
53 #[error(transparent)]
54 ServerTaskError(#[from] ServerError),
55 #[error(transparent)]
56 IdentityTaskError(#[from] IdentityError),
57}
58
59#[derive(Debug, Error)]
60pub enum RecordError {
61 #[error("identity error: {0}")]
62 IdentityError(#[from] IdentityError),
63 #[error("repo could not be validated as either a DID or an atproto handle")]
64 BadRepo,
65 #[error("could not get record: {0}")]
66 NotFound(&'static str),
67 #[error("could nto parse pds url: {0}")]
68 UrlParseError(#[from] url::ParseError),
69 #[error("reqwest send failed: {0}")]
70 SendError(reqwest::Error),
71 #[error("reqwest raised for status: {0}")]
72 StatusError(reqwest::Error),
73 #[error("reqwest failed to parse json: {0}")]
74 ParseJsonError(reqwest::Error),
75 #[error("upstream getRecord did not include a CID")]
76 MissingUpstreamCid,
77 #[error("upstream CID was not valid: {0}")]
78 BadUpstreamCid(String),
79 #[error("upstream atproto-looking bad request")]
80 UpstreamBadRequest(ErrorResponseObject),
81 #[error("upstream non-atproto bad request")]
82 UpstreamBadBadNotGoodRequest(reqwest::Error),
83}