@@ -48,6 +48,7 @@ pub struct Config {
48
48
pub history_url : Url ,
49
49
pub relayer_urls : Vec < Url > ,
50
50
pub publisher_id : u32 ,
51
+ pub authorization_token : String ,
51
52
pub publish_keypair_path : PathBuf ,
52
53
#[ serde( with = "humantime_serde" , default = "default_publish_interval" ) ]
53
54
pub publish_interval_duration : Duration ,
@@ -86,13 +87,19 @@ impl RelayerSender {
86
87
87
88
async fn connect_to_relayer (
88
89
mut url : Url ,
90
+ token : & str ,
89
91
) -> Result < (
90
92
SplitSink < WebSocketStream < MaybeTlsStream < TcpStream > > , TungsteniteMessage > ,
91
93
SplitStream < WebSocketStream < MaybeTlsStream < TcpStream > > > ,
92
94
) > {
93
95
tracing:: info!( "connecting to the relayer at {}" , url) ;
94
96
url. set_path ( "/v1/transaction" ) ;
95
97
let mut req = url. clone ( ) . into_client_request ( ) ?;
98
+ let headers = req. headers_mut ( ) ;
99
+ headers. insert (
100
+ "Authorization" ,
101
+ HeaderValue :: from_str ( & format ! ( "Bearer {}" , token) ) ?,
102
+ ) ;
96
103
let ( ws_stream, _) = connect_async_with_config ( req, None , true ) . await ?;
97
104
Ok ( ws_stream. split ( ) )
98
105
}
@@ -106,7 +113,8 @@ async fn connect_to_relayers(
106
113
let mut relayer_senders = Vec :: new ( ) ;
107
114
let mut relayer_receivers = Vec :: new ( ) ;
108
115
for url in config. relayer_urls . clone ( ) {
109
- let ( relayer_sender, relayer_receiver) = connect_to_relayer ( url) . await ?;
116
+ let ( relayer_sender, relayer_receiver) =
117
+ connect_to_relayer ( url, & config. authorization_token ) . await ?;
110
118
relayer_senders. push ( relayer_sender) ;
111
119
relayer_receivers. push ( relayer_receiver) ;
112
120
}
0 commit comments