Skip to content

Commit e151a7a

Browse files
committed
sentry - validator messages - list & create examples
1 parent d101974 commit e151a7a

File tree

4 files changed

+136
-15
lines changed

4 files changed

+136
-15
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
use primitives::sentry::ValidatorMessagesCreateRequest;
2+
use serde_json::{from_value, json};
3+
4+
fn main() {
5+
// This request is generated using the Ethereum Adapter
6+
let request_json = json!({
7+
"messages": [
8+
{
9+
"type": "ApproveState",
10+
"stateRoot": "a1e2f6ee08185ae06e3212e56ad1e0fcbae95ac8939871eb96e1ee3016234321",
11+
"signature": "0xb2ce0010ad5867a4fb4acbde6525c261d76b592d290cb22af120573565168a2e49381e84d4f409c0989fa171dd687bf68b7eeff5b595c845cec8e9b8b1738dbd1c",
12+
"isHealthy": true
13+
},
14+
{
15+
"type": "NewState",
16+
"stateRoot": "a1e2f6ee08185ae06e3212e56ad1e0fcbae95ac8939871eb96e1ee3016234321",
17+
"signature": "0x508bef21e91d5337ad71791503748fe0d7ee7592db90179be6f948570290d00b72e103b0d262452809ace183ebf83375072b4a359b6e441f2ad6f58b8552c8fa1b",
18+
"earners": {
19+
"0x80690751969B234697e9059e04ed72195c3507fa": "5",
20+
"0xE882ebF439207a70dDcCb39E13CA8506c9F45fD9": "100000",
21+
"0xf3f583AEC5f7C030722Fe992A5688557e1B86ef7": "3"
22+
},
23+
"spenders": {
24+
"0xaCBaDA2d5830d1875ae3D2de207A1363B316Df2F": "100008"
25+
}
26+
},
27+
{
28+
"type": "Heartbeat",
29+
"signature": "0x3afda200de4ac36d5c8f1a53da0ffdca5077b556a53fb56bb9a79def1c06f972547b0099731b1ac9b4a26c183e2ea66b8cd1759cdc1513e3436d182e9592ae0e1b",
30+
"stateRoot": "fa8f11b8aa6322905846f96219c855920b4449b18f0ceea97552e3880c5e4a9a",
31+
"timestamp": "2022-08-09T14:45:28.121225273Z"
32+
}
33+
]
34+
});
35+
36+
let request: ValidatorMessagesCreateRequest =
37+
from_value(request_json).expect("Should deserialize");
38+
39+
println!("{request:#?}");
40+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use primitives::sentry::ValidatorMessagesListQuery;
2+
3+
fn main() {
4+
// Empty query - default values only
5+
{
6+
let empty_query = "";
7+
let query: ValidatorMessagesListQuery = serde_qs::from_str(empty_query).unwrap();
8+
9+
assert_eq!(None, query.limit);
10+
}
11+
// Query with set limit
12+
{
13+
let query_str = "limit=200";
14+
let query: ValidatorMessagesListQuery = serde_qs::from_str(query_str).unwrap();
15+
16+
assert_eq!(Some(200), query.limit);
17+
}
18+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
use primitives::sentry::ValidatorMessagesListResponse;
2+
use serde_json::{from_value, json};
3+
4+
fn main() {
5+
// This response is generated using the Ethereum Adapter
6+
let response_json = json!({
7+
"messages": [
8+
{
9+
"from": "0xf3f583AEC5f7C030722Fe992A5688557e1B86ef7",
10+
"received": "2022-08-09T14:45:43.110Z",
11+
"msg": {
12+
"type": "ApproveState",
13+
"stateRoot": "a1e2f6ee08185ae06e3212e56ad1e0fcbae95ac8939871eb96e1ee3016234321",
14+
"signature": "0xb2ce0010ad5867a4fb4acbde6525c261d76b592d290cb22af120573565168a2e49381e84d4f409c0989fa171dd687bf68b7eeff5b595c845cec8e9b8b1738dbd1c",
15+
"isHealthy": true
16+
}
17+
},
18+
{
19+
"from": "0x80690751969B234697e9059e04ed72195c3507fa",
20+
"received": "2022-08-09T14:45:38.090Z",
21+
"msg": {
22+
"type": "NewState",
23+
"stateRoot": "a1e2f6ee08185ae06e3212e56ad1e0fcbae95ac8939871eb96e1ee3016234321",
24+
"signature": "0x508bef21e91d5337ad71791503748fe0d7ee7592db90179be6f948570290d00b72e103b0d262452809ace183ebf83375072b4a359b6e441f2ad6f58b8552c8fa1b",
25+
"earners": {
26+
"0x80690751969B234697e9059e04ed72195c3507fa": "5",
27+
"0xE882ebF439207a70dDcCb39E13CA8506c9F45fD9": "100000",
28+
"0xf3f583AEC5f7C030722Fe992A5688557e1B86ef7": "3"
29+
},
30+
"spenders": {
31+
"0xaCBaDA2d5830d1875ae3D2de207A1363B316Df2F": "100008"
32+
}
33+
}
34+
},
35+
{
36+
"from": "0xf3f583AEC5f7C030722Fe992A5688557e1B86ef7",
37+
"received": "2022-08-09T14:45:28.160Z",
38+
"msg": {
39+
"type": "Heartbeat",
40+
"signature": "0x3afda200de4ac36d5c8f1a53da0ffdca5077b556a53fb56bb9a79def1c06f972547b0099731b1ac9b4a26c183e2ea66b8cd1759cdc1513e3436d182e9592ae0e1b",
41+
"stateRoot": "fa8f11b8aa6322905846f96219c855920b4449b18f0ceea97552e3880c5e4a9a",
42+
"timestamp": "2022-08-09T14:45:28.121225273Z"
43+
}
44+
}
45+
]
46+
});
47+
48+
let response: ValidatorMessagesListResponse =
49+
from_value(response_json).expect("Should deserialize");
50+
51+
println!("{response:#?}");
52+
}

sentry/src/routes.rs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,36 +88,47 @@
8888
//! #### GET `/v5/channel/:id/validator-messages`
8989
//!
9090
//! - GET `/v5/channel/:id/validator-messages/:addr` - filter by the given [`ValidatorId`]
91-
//! - GET `/v5/channel/:id/validator-messages/:addr/:validator_messages` - filters by the given [`ValidatorId`] and a
92-
//! [`Validator message types`][`MessageTypes`].
93-
//! - `:validator_messages` - url encoded list of [`Validator message types`][`MessageTypes`] separated by a `+`.
91+
//! - GET `/v5/channel/:id/validator-messages/:addr/:validator_messages` - filters by the given [`ValidatorId`] and
92+
//! Validator [`MessageTypes`].
93+
//! - `:validator_messages` - url encoded list of Validator [`MessageTypes`] separated by a `+`.
9494
//!
9595
//! E.g. `NewState+ApproveState` becomes `NewState%2BApproveState`
9696
//!
9797
//! The route is handled by [`channel::validator_message::list_validator_messages()`].
9898
//!
99-
//! Request query parameters: [ValidatorMessagesListQuery](primitives::sentry::ValidatorMessagesListQuery)
99+
//! Request query parameters: [`ValidatorMessagesListQuery`](primitives::sentry::ValidatorMessagesListQuery)
100100
//!
101-
//! Response: [ValidatorMessagesListResponse](primitives::sentry::ValidatorMessagesListResponse)
101+
//! Response: [`ValidatorMessagesListResponse`](primitives::sentry::ValidatorMessagesListResponse)
102+
//!
103+
//! ##### Examples
104+
//!
105+
//! Query:
106+
//!
107+
//! ```
108+
#![doc = include_str!("../../primitives/examples/validator_messages_list_query.rs")]
109+
//! ```
110+
//!
111+
//! Response:
112+
//!
113+
//! ```
114+
#![doc = include_str!("../../primitives/examples/validator_messages_list_response.rs")]
115+
//! ```
102116
//!
103117
//! #### POST `/v5/channel/:id/validator-messages` (auth required)
104118
//!
105119
//! The route is handled by [`channel::validator_message::create_validator_messages()`].
106120
//!
107121
//! Request body (json): [`ValidatorMessagesCreateRequest`](primitives::sentry::ValidatorMessagesCreateRequest)
108122
//!
109-
//! ##### Examples:
123+
//! Response: [`SuccessResponse`]
110124
//!
111-
//! ```json
112-
//! {
113-
//! "messages": [
114-
//! /// validator messages
115-
//! ...
116-
//! ]
117-
//! }
118-
//! ```
125+
//! ##### Examples
126+
//!
127+
//! Request:
119128
//!
120-
//! Validator messages: [`MessageTypes`]
129+
//! ```
130+
#![doc = include_str!("../../primitives/examples/validator_messages_create_request.rs")]
131+
//! ```
121132
//!
122133
//! #### GET `/v5/channel/:id/last-approved`
123134
//!

0 commit comments

Comments
 (0)