@@ -51,7 +51,7 @@ use settings::Settings;
5151use settings_chain:: { ChainProviders , ProviderFactory } ;
5252use storage:: Database ;
5353use streamer:: { StreamProducer , StreamProducerConfig } ;
54- use swap:: SwapClient ;
54+ use swap:: { OkxApiClient , SwapClient } ;
5555use swapper:: swapper:: GemSwapper ;
5656use webhooks:: WebhooksClient ;
5757use websocket_prices:: PriceObserverConfig ;
@@ -96,6 +96,8 @@ fn mount_routes(rocket: Rocket<Build>, admin_enabled: bool) -> Rocket<Build> {
9696 chain:: transaction:: get_transaction,
9797 referral:: get_rewards_leaderboard,
9898 swap:: post_near_intents_quote,
99+ swap:: okx:: post_okx_quote,
100+ swap:: okx:: post_okx_quote_data,
99101 ] ,
100102 )
101103 . mount (
@@ -184,7 +186,8 @@ async fn rocket_api(settings: Settings) -> Result<Rocket<Build>, Box<dyn std::er
184186 let chain_client = chain:: ChainClient :: new ( ChainProviders :: new ( ProviderFactory :: new_providers ( & settings) ) ) ;
185187 let portfolio_client = PortfolioClient :: new ( database. clone ( ) , price_config) ;
186188 let endpoints = ProviderFactory :: get_chain_endpoints ( & settings) ;
187- let swapper = Arc :: new ( GemSwapper :: new ( Arc :: new ( swapper:: NativeProvider :: new_with_endpoints ( endpoints) ) ) ) ;
189+ let native_provider = Arc :: new ( swapper:: NativeProvider :: new_with_endpoints ( endpoints) ) ;
190+ let swapper = Arc :: new ( GemSwapper :: new ( native_provider. clone ( ) ) ) ;
188191
189192 let retry = streamer:: Retry :: new ( settings. rabbitmq . retry . delay , settings. rabbitmq . retry . timeout ) ;
190193 let rabbitmq_config = StreamProducerConfig :: new ( settings. rabbitmq . url . clone ( ) , retry) ;
@@ -231,6 +234,15 @@ async fn rocket_api(settings: Settings) -> Result<Rocket<Build>, Box<dyn std::er
231234 let redemption_client = RewardsRedemptionClient :: new ( database. clone ( ) , stream_producer. clone ( ) ) ;
232235 let notifications_client = NotificationsClient :: new ( database. clone ( ) ) ;
233236 let near_intents_client = swap:: NearIntentsProxyClient :: new ( cacher_client. clone ( ) ) ;
237+ let okx_api_client = OkxApiClient :: new (
238+ swapper:: okx:: OkxClientConfig {
239+ api_key : settings. swap . okx . key . public . clone ( ) ,
240+ secret_key : settings. swap . okx . key . secret . clone ( ) ,
241+ passphrase : settings. swap . okx . passphrase . clone ( ) ,
242+ project : settings. swap . okx . project . clone ( ) ,
243+ } ,
244+ native_provider. clone ( ) ,
245+ ) ;
234246 let jwt_config = devices:: auth_config:: JwtConfig {
235247 secret : settings. api . auth . jwt . secret . clone ( ) ,
236248 expiry : settings. api . auth . jwt . expiry ,
@@ -264,6 +276,7 @@ async fn rocket_api(settings: Settings) -> Result<Rocket<Build>, Box<dyn std::er
264276 . manage ( Mutex :: new ( wallets_client) )
265277 . manage ( Mutex :: new ( notifications_client) )
266278 . manage ( Mutex :: new ( near_intents_client) )
279+ . manage ( okx_api_client)
267280 . manage ( Mutex :: new ( portfolio_client) )
268281 . manage ( auth_client)
269282 . manage ( stream_producer) ;
0 commit comments