neo3/neo_protocol/responses/
oracle_request.rs1use std::hash::{Hash, Hasher};
2
3use primitive_types::{H160, H256};
4use serde::{Deserialize, Serialize};
5
6use crate::neo3::prelude::{
7 deserialize_h256, deserialize_script_hash, serialize_h256, serialize_script_hash,
8};
9
10#[derive(Serialize, Deserialize, PartialEq, Eq, Hash, Clone)]
11pub struct OracleRequest {
12 #[serde(rename = "requestid")]
13 pub request_id: i32,
14
15 #[serde(rename = "originaltxid")]
16 #[serde(deserialize_with = "deserialize_h256")]
17 #[serde(serialize_with = "serialize_h256")]
18 pub original_transaction_hash: H256,
19
20 #[serde(rename = "gasforresponse")]
21 pub gas_for_response: i32,
22
23 pub url: String,
24
25 pub filter: String,
26
27 #[serde(rename = "callbackcontract")]
28 #[serde(deserialize_with = "deserialize_script_hash")]
29 #[serde(serialize_with = "serialize_script_hash")]
30 pub callback_contract: H160,
31
32 #[serde(rename = "callbackmethod")]
33 pub callback_method: String,
34
35 #[serde(rename = "userdata")]
36 pub user_data: String,
37}
38
39impl OracleRequest {
40 pub fn new(
41 request_id: i32,
42 original_transaction_hash: H256,
43 gas_for_response: i32,
44 url: String,
45 filter: String,
46 callback_contract: H160,
47 callback_method: String,
48 user_data: String,
49 ) -> Self {
50 Self {
51 request_id,
52 original_transaction_hash,
53 gas_for_response,
54 url,
55 filter,
56 callback_contract,
57 callback_method,
58 user_data,
59 }
60 }
61}