11use crate :: types:: { BundleId , MempoolEvent , TransactionId } ;
22use anyhow:: Result ;
33use async_trait:: async_trait;
4- use aws_config:: BehaviorVersion ;
5- use aws_sdk_s3:: { primitives:: ByteStream , Client as S3Client } ;
6- use base64;
4+ use aws_sdk_s3:: primitives:: ByteStream ;
5+ use aws_sdk_s3:: Client as S3Client ;
76use serde:: { Deserialize , Serialize } ;
87use std:: collections:: HashSet ;
98use std:: fmt;
@@ -51,14 +50,7 @@ pub struct S3MempoolEventWriter {
5150}
5251
5352impl S3MempoolEventWriter {
54- pub async fn new ( bucket : String ) -> Result < Self > {
55- let config = aws_config:: defaults ( BehaviorVersion :: latest ( ) ) . load ( ) . await ;
56- let s3_client = S3Client :: new ( & config) ;
57-
58- Ok ( Self { s3_client, bucket } )
59- }
60-
61- pub fn with_client ( s3_client : S3Client , bucket : String ) -> Self {
53+ pub fn new ( s3_client : S3Client , bucket : String ) -> Self {
6254 Self { s3_client, bucket }
6355 }
6456
@@ -197,7 +189,6 @@ impl S3MempoolEventWriter {
197189 async fn put_object_idempotent ( & self , key : & str , data : Vec < u8 > ) -> Result < ( ) > {
198190 let md5_digest = md5:: compute ( & data) ;
199191 let content_hash_hex = format ! ( "{:x}" , md5_digest) ;
200- let content_hash_base64 = base64:: encode ( & md5_digest[ ..] ) ;
201192
202193 if let Ok ( existing) = self . get_object_etag ( key) . await {
203194 if existing. trim_matches ( '"' ) == content_hash_hex {
@@ -211,14 +202,13 @@ impl S3MempoolEventWriter {
211202 }
212203
213204 let data_size = data. len ( ) ;
214- let stream = ByteStream :: from ( data) ;
205+ let body = ByteStream :: from ( data) ;
215206
216207 self . s3_client
217208 . put_object ( )
218209 . bucket ( & self . bucket )
219210 . key ( key)
220- . body ( stream)
221- . content_md5 ( & content_hash_base64)
211+ . body ( body)
222212 . send ( )
223213 . await ?;
224214
@@ -240,7 +230,7 @@ impl S3MempoolEventWriter {
240230 . send ( )
241231 . await ?;
242232
243- Ok ( response. e_tag ( ) . unwrap_or_default ( ) . to_string ( ) )
233+ Ok ( response. e_tag ( ) . unwrap_or ( "" ) . to_string ( ) )
244234 }
245235
246236 async fn get_bundle_transaction_hashes ( & self , bundle_id : BundleId ) -> Result < Vec < String > > {
@@ -292,7 +282,7 @@ impl S3MempoolEventWriter {
292282 . await ?;
293283
294284 let body = response. body . collect ( ) . await ?;
295- Ok ( String :: from_utf8 ( body. to_vec ( ) ) ?)
285+ Ok ( String :: from_utf8 ( body. into_bytes ( ) . to_vec ( ) ) ?)
296286 }
297287}
298288
0 commit comments