params are optional apparently
This commit is contained in:
parent
fffbda468d
commit
3427f5eab9
@ -259,7 +259,11 @@ impl Web3ProxyApp {
|
|||||||
let cache_key = (
|
let cache_key = (
|
||||||
best_head_block_number,
|
best_head_block_number,
|
||||||
request.method.clone(),
|
request.method.clone(),
|
||||||
request.params.to_string(),
|
request
|
||||||
|
.params
|
||||||
|
.clone()
|
||||||
|
.map(|x| x.to_string())
|
||||||
|
.unwrap_or_else(|| "[]".to_string()),
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some(cached) = self.response_cache.read().await.get(&cache_key) {
|
if let Some(cached) = self.response_cache.read().await.get(&cache_key) {
|
||||||
|
@ -293,11 +293,11 @@ impl ActiveRequestHandle {
|
|||||||
pub async fn request(
|
pub async fn request(
|
||||||
self,
|
self,
|
||||||
method: &str,
|
method: &str,
|
||||||
params: &serde_json::value::RawValue,
|
params: &Option<Box<serde_json::value::RawValue>>,
|
||||||
) -> Result<Box<RawValue>, ethers::prelude::ProviderError> {
|
) -> Result<Box<RawValue>, ethers::prelude::ProviderError> {
|
||||||
// TODO: this should probably be trace level and use a span
|
// TODO: this should probably be trace level and use a span
|
||||||
// TODO: it would be nice to have the request id on this
|
// TODO: it would be nice to have the request id on this
|
||||||
trace!("Sending {}({}) to {}", method, params.to_string(), self.0);
|
trace!("Sending {}({:?}) to {}", method, params, self.0);
|
||||||
|
|
||||||
let response = match &self.0.provider {
|
let response = match &self.0.provider {
|
||||||
Web3Provider::Http(provider) => provider.request(method, params).await,
|
Web3Provider::Http(provider) => provider.request(method, params).await,
|
||||||
|
@ -114,7 +114,7 @@ impl Web3Connections {
|
|||||||
&self,
|
&self,
|
||||||
active_request_handle: ActiveRequestHandle,
|
active_request_handle: ActiveRequestHandle,
|
||||||
method: &str,
|
method: &str,
|
||||||
params: &RawValue,
|
params: &Option<Box<RawValue>>,
|
||||||
) -> Result<Box<RawValue>, ethers::prelude::ProviderError> {
|
) -> Result<Box<RawValue>, ethers::prelude::ProviderError> {
|
||||||
let response = active_request_handle.request(method, params).await;
|
let response = active_request_handle.request(method, params).await;
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ impl Web3Connections {
|
|||||||
self: Arc<Self>,
|
self: Arc<Self>,
|
||||||
active_request_handles: Vec<ActiveRequestHandle>,
|
active_request_handles: Vec<ActiveRequestHandle>,
|
||||||
method: String,
|
method: String,
|
||||||
params: Box<RawValue>,
|
params: Option<Box<RawValue>>,
|
||||||
response_sender: flume::Sender<anyhow::Result<Box<RawValue>>>,
|
response_sender: flume::Sender<anyhow::Result<Box<RawValue>>>,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
let mut unordered_futures = FuturesUnordered::new();
|
let mut unordered_futures = FuturesUnordered::new();
|
||||||
|
@ -9,7 +9,7 @@ pub struct JsonRpcRequest {
|
|||||||
// pub jsonrpc: Box<RawValue>,
|
// pub jsonrpc: Box<RawValue>,
|
||||||
pub id: Box<RawValue>,
|
pub id: Box<RawValue>,
|
||||||
pub method: String,
|
pub method: String,
|
||||||
pub params: Box<RawValue>,
|
pub params: Option<Box<RawValue>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Debug for JsonRpcRequest {
|
impl fmt::Debug for JsonRpcRequest {
|
||||||
@ -176,7 +176,7 @@ mod tests {
|
|||||||
|
|
||||||
assert_eq!(output.id.to_string(), "1");
|
assert_eq!(output.id.to_string(), "1");
|
||||||
assert_eq!(output.method, "eth_blockNumber");
|
assert_eq!(output.method, "eth_blockNumber");
|
||||||
assert_eq!(output.params.to_string(), "[]");
|
assert_eq!(output.params.unwrap().to_string(), "[]");
|
||||||
|
|
||||||
// test deserializing it into an enum
|
// test deserializing it into an enum
|
||||||
let output: JsonRpcRequestEnum = serde_json::from_str(input).unwrap();
|
let output: JsonRpcRequestEnum = serde_json::from_str(input).unwrap();
|
||||||
@ -196,7 +196,7 @@ mod tests {
|
|||||||
assert_eq!(output[0].id.to_string(), "27");
|
assert_eq!(output[0].id.to_string(), "27");
|
||||||
assert_eq!(output[0].method, "eth_getCode");
|
assert_eq!(output[0].method, "eth_getCode");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
output[0].params.to_string(),
|
output[0].params.as_ref().unwrap().to_string(),
|
||||||
r#"["0x5ba1e12693dc8f9c48aad8770482f4739beed696","0xe0e6a4"]"#
|
r#"["0x5ba1e12693dc8f9c48aad8770482f4739beed696","0xe0e6a4"]"#
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -207,7 +207,5 @@ mod tests {
|
|||||||
let output: JsonRpcRequestEnum = serde_json::from_str(input).unwrap();
|
let output: JsonRpcRequestEnum = serde_json::from_str(input).unwrap();
|
||||||
|
|
||||||
assert!(matches!(output, JsonRpcRequestEnum::Batch(_)));
|
assert!(matches!(output, JsonRpcRequestEnum::Batch(_)));
|
||||||
|
|
||||||
assert_eq!(0, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user