-
Notifications
You must be signed in to change notification settings - Fork 0
/
some_exception.rs
41 lines (32 loc) · 966 Bytes
/
some_exception.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//! # Some Exception
//!
//! Trow an exception when something went wrong.
use std::io::Cursor;
use rocket::Request;
use rocket::response::{self, Response, Responder};
use rocket::http::ContentType;
use serde_json;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SomeException {
code: ExceptionCode,
message: String,
}
impl SomeException {
pub fn build() -> Self {
SomeException {
code: UNDEFINED_EXCEPTION,
message: "".to_string(),
}
}
setter!(code: ExceptionCode, message: String);
}
impl<'r> Responder<'r> for SomeException {
fn respond_to(self, _: &Request) -> response::Result<'r> {
Response::build()
.header(ContentType::new("application", "json"))
.sized_body(Cursor::new(serde_json::to_string(&self).unwrap()))
.ok()
}
}
type ExceptionCode = i32;
const UNDEFINED_EXCEPTION: ExceptionCode = 0;