Skip to content

Commit 5b71724

Browse files
committed
Added support for data with hooks.
Closes #16
1 parent 335b515 commit 5b71724

File tree

5 files changed

+56
-17
lines changed

5 files changed

+56
-17
lines changed

src/juno_module.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ impl JunoModule {
146146
Ok(())
147147
}
148148

149-
pub async fn trigger_hook(&mut self, hook: &str) -> Result<()> {
149+
pub async fn trigger_hook(&mut self, hook: &str, data: Value) -> Result<()> {
150150
let hook = hook.to_string();
151-
let request = self.protocol.trigger_hook(hook);
151+
let request = self.protocol.trigger_hook(hook, data);
152152
self.send_request(request).await?;
153153
Ok(())
154154
}

src/models/messages.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ pub enum BaseMessage {
3030
TriggerHookRequest {
3131
request_id: String,
3232
hook: String,
33+
data: Value,
3334
},
3435
TriggerHookResponse {
3536
request_id: String,
3637
hook: Option<String>,
38+
data: Value,
3739
},
3840
DeclareFunctionRequest {
3941
request_id: String,

src/protocol/base_protocol.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,11 @@ impl BaseProtocol {
7575
}
7676
}
7777

78-
pub fn trigger_hook(&self, hook: String) -> BaseMessage {
78+
pub fn trigger_hook(&self, hook: String, data: Value) -> BaseMessage {
7979
BaseMessage::TriggerHookRequest {
8080
request_id: self.generate_request_id(),
8181
hook,
82+
data,
8283
}
8384
}
8485

src/protocol/json_protocol.rs

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,33 @@ pub fn encode(protocol: &BaseProtocol, req: BaseMessage) -> Buffer {
7676
request_keys::TYPE: request_types::REGISTER_HOOK_RESPONSE,
7777
}),
7878

79-
BaseMessage::TriggerHookRequest { request_id, hook } => json!({
80-
request_keys::REQUEST_ID: request_id,
81-
request_keys::TYPE: request_types::TRIGGER_HOOK_REQUEST,
82-
request_keys::HOOK: hook,
83-
}),
79+
BaseMessage::TriggerHookRequest {
80+
request_id,
81+
hook,
82+
data,
83+
} => {
84+
let json_data: Value = data.into();
85+
json!({
86+
request_keys::REQUEST_ID: request_id,
87+
request_keys::TYPE: request_types::TRIGGER_HOOK_REQUEST,
88+
request_keys::HOOK: hook,
89+
request_keys::DATA: json_data,
90+
})
91+
}
8492

85-
BaseMessage::TriggerHookResponse { request_id, hook } => json!({
86-
request_keys::REQUEST_ID: request_id,
87-
request_keys::TYPE: request_types::TRIGGER_HOOK_RESPONSE,
88-
request_keys::HOOK: hook
89-
}),
93+
BaseMessage::TriggerHookResponse {
94+
request_id,
95+
hook,
96+
data,
97+
} => {
98+
let json_data: Value = data.into();
99+
json!({
100+
request_keys::REQUEST_ID: request_id,
101+
request_keys::TYPE: request_types::TRIGGER_HOOK_RESPONSE,
102+
request_keys::HOOK: hook,
103+
request_keys::DATA: json_data,
104+
})
105+
}
90106

91107
BaseMessage::DeclareFunctionRequest {
92108
request_id,
@@ -207,16 +223,32 @@ fn decode_internal(data: &[u8]) -> Option<BaseMessage> {
207223
} else if r#type == 7 {
208224
let request_id = result[request_keys::REQUEST_ID].as_str()?.to_string();
209225
let hook = result[request_keys::HOOK].as_str()?.to_string();
226+
let data = result
227+
.get(request_keys::DATA)
228+
.unwrap_or(&Value::Null)
229+
.clone();
210230

211-
Some(BaseMessage::TriggerHookRequest { request_id, hook })
231+
Some(BaseMessage::TriggerHookRequest {
232+
request_id,
233+
hook,
234+
data: data.into(),
235+
})
212236
} else if r#type == 8 {
213237
let request_id = result[request_keys::REQUEST_ID].as_str()?.to_string();
214238
let hook = match result[request_keys::HOOK].as_str() {
215239
Some(string) => Some(string.to_string()),
216240
None => None,
217241
};
242+
let data = result
243+
.get(request_keys::DATA)
244+
.unwrap_or(&Value::Null)
245+
.clone();
218246

219-
Some(BaseMessage::TriggerHookResponse { request_id, hook })
247+
Some(BaseMessage::TriggerHookResponse {
248+
request_id,
249+
hook,
250+
data: data.into(),
251+
})
220252
} else if r#type == 9 {
221253
let request_id = result[request_keys::REQUEST_ID].as_str()?.to_string();
222254
let function = result[request_keys::FUNCTION].as_str()?.to_string();

tests/models/messages.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ fn check_types_are_storing_values() {
3232
BaseMessage::TriggerHookRequest {
3333
request_id: String::from("request_id"),
3434
hook: String::from("hook"),
35+
data: Value::Null,
3536
},
3637
BaseMessage::TriggerHookResponse {
3738
request_id: String::from("request_id"),
3839
hook: Some(String::from("hook")),
40+
data: Value::Null,
3941
},
4042
BaseMessage::DeclareFunctionRequest {
4143
request_id: String::from("request_id"),
@@ -90,13 +92,15 @@ fn check_types_are_storing_values() {
9092
BaseMessage::RegisterHookResponse { request_id } => {
9193
assert_eq!(request_id, &String::from("request_id"));
9294
}
93-
BaseMessage::TriggerHookRequest { request_id, hook } => {
95+
BaseMessage::TriggerHookRequest { request_id, hook, data } => {
9496
assert_eq!(request_id, &String::from("request_id"));
9597
assert_eq!(hook, &String::from("hook"));
98+
assert_eq!(data, &Value::Null);
9699
}
97-
BaseMessage::TriggerHookResponse { request_id, hook } => {
100+
BaseMessage::TriggerHookResponse { request_id, hook, data } => {
98101
assert_eq!(request_id, &String::from("request_id"));
99102
assert_eq!(hook, &Some(String::from("hook")));
103+
assert_eq!(data, &Value::Null);
100104
}
101105
BaseMessage::DeclareFunctionRequest {
102106
request_id,

0 commit comments

Comments
 (0)