1use crate::schema::SchemaParseError;
2use ragit_fs::FileError;
3use std::string::FromUtf8Error;
4
5mod json_type;
6
7pub use json_type::JsonType;
8
9#[derive(Debug)]
10pub enum Error {
11 RoleMissing,
12 InvalidPdl(String),
13 InvalidTurnSeparator(String),
14 InvalidInlineBlock,
15 InvalidImageType(String),
16 InvalidRole(String),
17 FileError(FileError),
18 Utf8Error(FromUtf8Error),
19 SchemaParseError(SchemaParseError),
20 JsonTypeError {
21 expected: JsonType,
22 got: JsonType,
23 },
24
25 JsonSerdeError(serde_json::Error),
27
28 Base64DecodeError(base64::DecodeError),
30
31 TeraError(tera::Error),
33}
34
35impl From<SchemaParseError> for Error {
36 fn from(e: SchemaParseError) -> Error {
37 match e {
38 SchemaParseError::Utf8Error(e) => Error::Utf8Error(e),
39 e => Error::SchemaParseError(e),
40 }
41 }
42}
43
44impl From<serde_json::Error> for Error {
45 fn from(e: serde_json::Error) -> Error {
46 Error::JsonSerdeError(e)
47 }
48}
49
50impl From<FromUtf8Error> for Error {
51 fn from(e: FromUtf8Error) -> Error {
52 Error::Utf8Error(e)
53 }
54}
55
56impl From<FileError> for Error {
57 fn from(e: FileError) -> Error {
58 Error::FileError(e)
59 }
60}
61
62impl From<tera::Error> for Error {
63 fn from(e: tera::Error) -> Error {
64 Error::TeraError(e)
65 }
66}
67
68impl From<base64::DecodeError> for Error {
69 fn from(e: base64::DecodeError) -> Error {
70 Error::Base64DecodeError(e)
71 }
72}