@@ -17,6 +17,7 @@ pub mod reqwest;
1717#[ cfg( feature = "ic-canister-client" ) ]
1818pub mod canister_client;
1919
20+ #[ cfg( feature = "http-outcall" ) ]
2021pub mod http_outcall;
2122
2223const ETH_CHAIN_ID_METHOD : & str = "eth_chainId" ;
@@ -336,7 +337,8 @@ impl<C: Client> EthJsonRcpClient<C> {
336337#[ derive( Debug , Clone , Serialize , Deserialize ) ]
337338pub struct EthGetLogsParams {
338339 /// Addresses of contracts to filter logs for.
339- pub address : Vec < H160 > ,
340+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
341+ pub address : Option < Vec < H160 > > ,
340342
341343 /// Start search logs from this block number.
342344 #[ serde( rename = "fromBlock" ) ]
@@ -347,7 +349,8 @@ pub struct EthGetLogsParams {
347349 pub to_block : BlockNumber ,
348350
349351 /// Filter logs by topics.
350- pub topics : Vec < H256 > ,
352+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
353+ pub topics : Option < Vec < Vec < H256 > > > ,
351354}
352355
353356pub trait Client : Clone + Send + Sync {
@@ -366,22 +369,28 @@ mod tests {
366369 #[ test]
367370 fn test_eth_get_logs_params_serialization ( ) {
368371 let get_logs_params = EthGetLogsParams {
369- address : vec ! [ "0xb59f67a8bff5d8cd03f6ac17265c550ed8f33907"
372+ address : Some ( vec ! [ "0xb59f67a8bff5d8cd03f6ac17265c550ed8f33907"
370373 . parse( )
371- . unwrap( ) ] ,
374+ . unwrap( ) ] ) ,
372375 from_block : BlockNumber :: Number ( 42u64 . into ( ) ) ,
373376 to_block : BlockNumber :: Latest ,
374- topics : vec ! [
375- "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
376- . parse( )
377- . unwrap( ) ,
378- "0x00000000000000000000000000b46c2526e227482e2ebb8f4c69e4674d262e75"
379- . parse( )
380- . unwrap( ) ,
381- "0x00000000000000000000000054a2d42a40f51259dedd1978f6c118a0f0eff078"
382- . parse( )
383- . unwrap( ) ,
384- ] ,
377+ topics : Some ( vec ! [
378+ vec![
379+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
380+ . parse( )
381+ . unwrap( ) ,
382+ ] ,
383+ vec![
384+ "0x00000000000000000000000000b46c2526e227482e2ebb8f4c69e4674d262e75"
385+ . parse( )
386+ . unwrap( ) ,
387+ ] ,
388+ vec![
389+ "0x00000000000000000000000054a2d42a40f51259dedd1978f6c118a0f0eff078"
390+ . parse( )
391+ . unwrap( ) ,
392+ ] ,
393+ ] ) ,
385394 } ;
386395
387396 let json = serde_json:: to_string ( & get_logs_params) . unwrap ( ) ;
@@ -391,9 +400,9 @@ mod tests {
391400 \" fromBlock\" :\" 0x2a\" ,\
392401 \" toBlock\" :\" latest\" ,\
393402 \" topics\" :[\
394- \" 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\" ,\
395- \" 0x00000000000000000000000000b46c2526e227482e2ebb8f4c69e4674d262e75\" ,\
396- \" 0x00000000000000000000000054a2d42a40f51259dedd1978f6c118a0f0eff078\" \
403+ [ \" 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\" ] ,\
404+ [ \" 0x00000000000000000000000000b46c2526e227482e2ebb8f4c69e4674d262e75\" ] ,\
405+ [ \" 0x00000000000000000000000054a2d42a40f51259dedd1978f6c118a0f0eff078\" ] \
397406 ]}";
398407 assert_eq ! ( json, expected_json) ;
399408 }
0 commit comments