@@ -2,7 +2,6 @@ use graph::{
22 anyhow:: Error ,
33 blockchain:: BlockchainKind ,
44 components:: network_provider:: ChainName ,
5- endpoint:: Compression ,
65 env:: ENV_VARS ,
76 firehose:: { SubgraphLimit , SUBGRAPHS_PER_CONN } ,
87 itertools:: Itertools ,
@@ -503,7 +502,6 @@ impl ChainSection {
503502 features,
504503 headers : Default :: default ( ) ,
505504 rules : vec ! [ ] ,
506- compression : Compression :: None ,
507505 } ) ,
508506 } ;
509507 let entry = chains. entry ( name. to_string ( ) ) . or_insert_with ( || Chain {
@@ -707,10 +705,6 @@ pub struct Web3Provider {
707705
708706 #[ serde( default , rename = "match" ) ]
709707 rules : Vec < Web3Rule > ,
710-
711- /// Compression method for RPC requests and responses
712- #[ serde( default ) ]
713- pub compression : Compression ,
714708}
715709
716710impl Web3Provider {
@@ -721,12 +715,16 @@ impl Web3Provider {
721715 }
722716 }
723717
718+ pub fn gzip_compression_enabled ( & self ) -> bool {
719+ self . features . contains ( "compression/gzip" )
720+ }
721+
724722 pub fn limit_for ( & self , node : & NodeId ) -> SubgraphLimit {
725723 self . rules . limit_for ( node)
726724 }
727725}
728726
729- const PROVIDER_FEATURES : [ & str ; 3 ] = [ "traces" , "archive" , "no_eip1898" ] ;
727+ const PROVIDER_FEATURES : [ & str ; 4 ] = [ "traces" , "archive" , "no_eip1898" , "compression/gzip "] ;
730728const DEFAULT_PROVIDER_FEATURES : [ & str ; 2 ] = [ "traces" , "archive" ] ;
731729
732730impl Provider {
@@ -907,7 +905,6 @@ impl<'de> Deserialize<'de> for Provider {
907905 . ok_or_else ( || serde:: de:: Error :: missing_field ( "features" ) ) ?,
908906 headers : headers. unwrap_or_else ( HeaderMap :: new) ,
909907 rules : nodes,
910- compression : Compression :: None ,
911908 } ) ,
912909 } ;
913910
@@ -1226,7 +1223,6 @@ mod tests {
12261223 Chain , Config , FirehoseProvider , Provider , ProviderDetails , Shard , Transport , Web3Provider ,
12271224 } ;
12281225 use graph:: blockchain:: BlockchainKind ;
1229- use graph:: endpoint:: Compression ;
12301226 use graph:: firehose:: SubgraphLimit ;
12311227 use graph:: http:: { HeaderMap , HeaderValue } ;
12321228 use graph:: prelude:: regex:: Regex ;
@@ -1315,7 +1311,6 @@ mod tests {
13151311 features: BTreeSet :: new( ) ,
13161312 headers: HeaderMap :: new( ) ,
13171313 rules: Vec :: new( ) ,
1318- compression: Compression :: None ,
13191314 } ) ,
13201315 } ,
13211316 actual
@@ -1342,7 +1337,6 @@ mod tests {
13421337 features: BTreeSet :: new( ) ,
13431338 headers: HeaderMap :: new( ) ,
13441339 rules: Vec :: new( ) ,
1345- compression: Compression :: None ,
13461340 } ) ,
13471341 } ,
13481342 actual
@@ -1450,7 +1444,6 @@ mod tests {
14501444 features,
14511445 headers,
14521446 rules: Vec :: new( ) ,
1453- compression: Compression :: None ,
14541447 } ) ,
14551448 } ,
14561449 actual
@@ -1476,7 +1469,6 @@ mod tests {
14761469 features: BTreeSet :: new( ) ,
14771470 headers: HeaderMap :: new( ) ,
14781471 rules: Vec :: new( ) ,
1479- compression: Compression :: None ,
14801472 } ) ,
14811473 } ,
14821474 actual
@@ -1846,7 +1838,6 @@ mod tests {
18461838 features: BTreeSet :: new( ) ,
18471839 headers: HeaderMap :: new( ) ,
18481840 rules: Vec :: new( ) ,
1849- compression: Compression :: None ,
18501841 } ) ,
18511842 } ,
18521843 actual
@@ -1860,63 +1851,57 @@ mod tests {
18601851 }
18611852
18621853 #[ test]
1863- fn it_parses_web3_provider_with_compression ( ) {
1864- let actual = toml:: from_str (
1854+ fn it_parses_web3_provider_with_gzip_compression_feature ( ) {
1855+ let actual: Provider = toml:: from_str (
18651856 r#"
18661857 label = "compressed"
1867- details = { type = "web3", url = "http://localhost:8545", features = ["archive"], compression = " gzip" }
1858+ details = { type = "web3", url = "http://localhost:8545", features = ["archive", "compression/ gzip"] }
18681859 "# ,
18691860 )
18701861 . unwrap ( ) ;
18711862
1863+ let mut features = BTreeSet :: new ( ) ;
1864+ features. insert ( "archive" . to_string ( ) ) ;
1865+ features. insert ( "compression/gzip" . to_string ( ) ) ;
1866+
18721867 assert_eq ! (
18731868 Provider {
18741869 label: "compressed" . to_owned( ) ,
18751870 details: ProviderDetails :: Web3 ( Web3Provider {
18761871 transport: Transport :: Rpc ,
18771872 url: "http://localhost:8545" . to_owned( ) ,
1878- features: {
1879- let mut features = BTreeSet :: new( ) ;
1880- features. insert( "archive" . to_string( ) ) ;
1881- features
1882- } ,
1873+ features,
18831874 headers: HeaderMap :: new( ) ,
18841875 rules: Vec :: new( ) ,
1885- compression: Compression :: Gzip ,
18861876 } ) ,
18871877 } ,
18881878 actual
18891879 ) ;
1880+
1881+ match actual. details {
1882+ ProviderDetails :: Web3 ( ref web3) => {
1883+ assert ! ( web3. gzip_compression_enabled( ) ) ;
1884+ }
1885+ _ => panic ! ( "expected Web3 provider" ) ,
1886+ }
18901887 }
18911888
18921889 #[ test]
1893- fn it_parses_web3_provider_with_no_compression ( ) {
1894- let actual = toml:: from_str (
1890+ fn it_parses_web3_provider_without_compression_feature ( ) {
1891+ let actual: Provider = toml:: from_str (
18951892 r#"
18961893 label = "uncompressed"
1897- details = { type = "web3", url = "http://localhost:8545", features = ["archive"], compression = "none" }
1894+ details = { type = "web3", url = "http://localhost:8545", features = ["archive"] }
18981895 "# ,
18991896 )
19001897 . unwrap ( ) ;
19011898
1902- assert_eq ! (
1903- Provider {
1904- label: "uncompressed" . to_owned( ) ,
1905- details: ProviderDetails :: Web3 ( Web3Provider {
1906- transport: Transport :: Rpc ,
1907- url: "http://localhost:8545" . to_owned( ) ,
1908- features: {
1909- let mut features = BTreeSet :: new( ) ;
1910- features. insert( "archive" . to_string( ) ) ;
1911- features
1912- } ,
1913- headers: HeaderMap :: new( ) ,
1914- rules: Vec :: new( ) ,
1915- compression: Compression :: None ,
1916- } ) ,
1917- } ,
1918- actual
1919- ) ;
1899+ match actual. details {
1900+ ProviderDetails :: Web3 ( ref web3) => {
1901+ assert ! ( !web3. gzip_compression_enabled( ) ) ;
1902+ }
1903+ _ => panic ! ( "expected Web3 provider" ) ,
1904+ }
19201905 }
19211906
19221907 #[ test]
0 commit comments