neo3/neo_protocol/responses/
oracle_request.rs

1use 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}