@@ -160,7 +160,7 @@ impl<C: Config> Client<C> {
160
160
}
161
161
162
162
/// Make a GET request to {path} and deserialize the response body
163
- pub ( crate ) async fn get < O > ( & self , path : & str ) -> Result < O , OpenAIError >
163
+ pub async fn get < O > ( & self , path : & str ) -> Result < O , OpenAIError >
164
164
where
165
165
O : DeserializeOwned ,
166
166
{
@@ -316,13 +316,22 @@ impl<C: Config> Client<C> {
316
316
317
317
backoff:: future:: retry ( self . backoff . clone ( ) , || async {
318
318
let request = request_maker ( ) . await . map_err ( backoff:: Error :: Permanent ) ?;
319
- let response = client
319
+ let mut response = client
320
320
. execute ( request)
321
321
. await
322
322
. map_err ( OpenAIError :: Reqwest )
323
323
. map_err ( backoff:: Error :: Permanent ) ?;
324
324
325
325
let status = response. status ( ) ;
326
+
327
+ // Handle bad base URLs
328
+ if status. as_u16 ( ) == 404 {
329
+ response = response
330
+ . error_for_status ( )
331
+ . map_err ( OpenAIError :: Reqwest )
332
+ . map_err ( backoff:: Error :: Permanent ) ?;
333
+ } ;
334
+
326
335
let bytes = response
327
336
. bytes ( )
328
337
. await
@@ -378,7 +387,7 @@ impl<C: Config> Client<C> {
378
387
}
379
388
380
389
/// Make HTTP POST request to receive SSE
381
- pub async fn post_stream < I , O , E > (
390
+ pub async fn post_stream < I , O , E > (
382
391
& self ,
383
392
path : & str ,
384
393
request : I ,
@@ -479,7 +488,7 @@ where
479
488
String :: from_utf8_lossy( message. data. as_bytes( ) ) ,
480
489
) ;
481
490
Err ( Into :: < E > :: into ( e) )
482
- } ,
491
+ }
483
492
Ok ( output) => Ok ( output) ,
484
493
} ;
485
494
0 commit comments