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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
use jsonrpsee_types::error::reject_too_big_request;
use crate::types::error::{ErrorCode, ErrorResponse};
use crate::types::Id;
const JSON: &str = "application/json; charset=utf-8";
const TEXT: &str = "text/plain";
pub fn internal_error() -> hyper::Response<hyper::Body> {
let error = serde_json::to_string(&ErrorResponse::borrowed(ErrorCode::InternalError.into(), Id::Null))
.expect("built from known-good data; qed");
from_template(hyper::StatusCode::INTERNAL_SERVER_ERROR, error, JSON)
}
pub fn host_not_allowed() -> hyper::Response<hyper::Body> {
from_template(hyper::StatusCode::FORBIDDEN, "Provided Host header is not whitelisted.\n".to_owned(), TEXT)
}
pub fn method_not_allowed() -> hyper::Response<hyper::Body> {
from_template(
hyper::StatusCode::METHOD_NOT_ALLOWED,
"Used HTTP Method is not allowed. POST or OPTIONS is required\n".to_owned(),
TEXT,
)
}
pub fn invalid_allow_origin() -> hyper::Response<hyper::Body> {
from_template(
hyper::StatusCode::FORBIDDEN,
"Origin of the request is not whitelisted. CORS headers would not be sent and any side-effects were cancelled as well.\n".to_owned(),
TEXT,
)
}
pub fn invalid_allow_headers() -> hyper::Response<hyper::Body> {
from_template(
hyper::StatusCode::FORBIDDEN,
"Requested headers are not allowed for CORS. CORS headers would not be sent and any side-effects were cancelled as well.\n".to_owned(),
TEXT,
)
}
pub fn too_large(limit: u32) -> hyper::Response<hyper::Body> {
let error = serde_json::to_string(&ErrorResponse::borrowed(reject_too_big_request(limit), Id::Null))
.expect("built from known-good data; qed");
from_template(hyper::StatusCode::PAYLOAD_TOO_LARGE, error, JSON)
}
pub fn malformed() -> hyper::Response<hyper::Body> {
let error = serde_json::to_string(&ErrorResponse::borrowed(ErrorCode::ParseError.into(), Id::Null))
.expect("built from known-good data; qed");
from_template(hyper::StatusCode::BAD_REQUEST, error, JSON)
}
fn from_template<S: Into<hyper::Body>>(
status: hyper::StatusCode,
body: S,
content_type: &'static str,
) -> hyper::Response<hyper::Body> {
hyper::Response::builder()
.status(status)
.header("content-type", hyper::header::HeaderValue::from_static(content_type))
.body(body.into())
.expect("Unable to parse response body for type conversion")
}
pub fn ok_response(body: String) -> hyper::Response<hyper::Body> {
from_template(hyper::StatusCode::OK, body, JSON)
}
pub fn unsupported_content_type() -> hyper::Response<hyper::Body> {
from_template(
hyper::StatusCode::UNSUPPORTED_MEDIA_TYPE,
"Supplied content type is not allowed. Content-Type: application/json is required\n".to_owned(),
TEXT,
)
}