@@ -2,6 +2,7 @@ use crate::v1::chat_completion::{ChatCompletionRequest, ChatCompletionResponse};
22use crate :: v1:: completion:: { CompletionRequest , CompletionResponse } ;
33use crate :: v1:: edit:: { EditRequest , EditResponse } ;
44use crate :: v1:: embedding:: { EmbeddingRequest , EmbeddingResponse } ;
5+ use crate :: v1:: error:: APIError ;
56use crate :: v1:: file:: {
67 FileDeleteRequest , FileDeleteResponse , FileListResponse , FileRetrieveContentRequest ,
78 FileRetrieveContentResponse , FileRetrieveRequest , FileRetrieveResponse , FileUploadRequest ,
@@ -12,7 +13,6 @@ use crate::v1::image::{
1213 ImageVariationRequest , ImageVariationResponse ,
1314} ;
1415use reqwest:: Response ;
15- use std:: io:: Error ;
1616
1717const APU_URL_V1 : & str = "https://api.openai.com/v1" ;
1818
@@ -29,7 +29,7 @@ impl Client {
2929 & self ,
3030 path : & str ,
3131 params : & T ,
32- ) -> Result < Response , Error > {
32+ ) -> Result < Response , APIError > {
3333 let client = reqwest:: Client :: new ( ) ;
3434 let url = format ! ( "{APU_URL_V1}{path}" ) ;
3535 let res = client
@@ -45,16 +45,15 @@ impl Client {
4545 match res {
4646 Ok ( res) => match res. status ( ) . is_success ( ) {
4747 true => Ok ( res) ,
48- false => Err ( Error :: new (
49- std:: io:: ErrorKind :: Other ,
50- format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
51- ) ) ,
48+ false => Err ( APIError {
49+ message : format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
50+ } ) ,
5251 } ,
5352 Err ( e) => Err ( self . new_error ( e) ) ,
5453 }
5554 }
5655
57- pub async fn get ( & self , path : & str ) -> Result < Response , Error > {
56+ pub async fn get ( & self , path : & str ) -> Result < Response , APIError > {
5857 let client = reqwest:: Client :: new ( ) ;
5958 let url = format ! ( "{APU_URL_V1}{path}" ) ;
6059 let res = client
@@ -69,16 +68,15 @@ impl Client {
6968 match res {
7069 Ok ( res) => match res. status ( ) . is_success ( ) {
7170 true => Ok ( res) ,
72- false => Err ( Error :: new (
73- std:: io:: ErrorKind :: Other ,
74- format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
75- ) ) ,
71+ false => Err ( APIError {
72+ message : format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
73+ } ) ,
7674 } ,
7775 Err ( e) => Err ( self . new_error ( e) ) ,
7876 }
7977 }
8078
81- pub async fn delete ( & self , path : & str ) -> Result < Response , Error > {
79+ pub async fn delete ( & self , path : & str ) -> Result < Response , APIError > {
8280 let client = reqwest:: Client :: new ( ) ;
8381 let url = format ! ( "{APU_URL_V1}{path}" ) ;
8482 let res = client
@@ -93,16 +91,15 @@ impl Client {
9391 match res {
9492 Ok ( res) => match res. status ( ) . is_success ( ) {
9593 true => Ok ( res) ,
96- false => Err ( Error :: new (
97- std:: io:: ErrorKind :: Other ,
98- format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
99- ) ) ,
94+ false => Err ( APIError {
95+ message : format ! ( "{}: {}" , res. status( ) , res. text( ) . await . unwrap( ) ) ,
96+ } ) ,
10097 } ,
10198 Err ( e) => Err ( self . new_error ( e) ) ,
10299 }
103100 }
104101
105- pub async fn completion ( & self , req : CompletionRequest ) -> Result < CompletionResponse , Error > {
102+ pub async fn completion ( & self , req : CompletionRequest ) -> Result < CompletionResponse , APIError > {
106103 let res = self . post ( "/completions" , & req) . await ?;
107104 let r = res. json :: < CompletionResponse > ( ) . await ;
108105 match r {
@@ -111,7 +108,7 @@ impl Client {
111108 }
112109 }
113110
114- pub async fn edit ( & self , req : EditRequest ) -> Result < EditResponse , Error > {
111+ pub async fn edit ( & self , req : EditRequest ) -> Result < EditResponse , APIError > {
115112 let res = self . post ( "/edits" , & req) . await ?;
116113 let r = res. json :: < EditResponse > ( ) . await ;
117114 match r {
@@ -123,7 +120,7 @@ impl Client {
123120 pub async fn image_generation (
124121 & self ,
125122 req : ImageGenerationRequest ,
126- ) -> Result < ImageGenerationResponse , Error > {
123+ ) -> Result < ImageGenerationResponse , APIError > {
127124 let res = self . post ( "/images/generations" , & req) . await ?;
128125 let r = res. json :: < ImageGenerationResponse > ( ) . await ;
129126 match r {
@@ -132,7 +129,7 @@ impl Client {
132129 }
133130 }
134131
135- pub async fn image_edit ( & self , req : ImageEditRequest ) -> Result < ImageEditResponse , Error > {
132+ pub async fn image_edit ( & self , req : ImageEditRequest ) -> Result < ImageEditResponse , APIError > {
136133 let res = self . post ( "/images/edits" , & req) . await ?;
137134 let r = res. json :: < ImageEditResponse > ( ) . await ;
138135 match r {
@@ -144,7 +141,7 @@ impl Client {
144141 pub async fn image_variation (
145142 & self ,
146143 req : ImageVariationRequest ,
147- ) -> Result < ImageVariationResponse , Error > {
144+ ) -> Result < ImageVariationResponse , APIError > {
148145 let res = self . post ( "/images/variations" , & req) . await ?;
149146 let r = res. json :: < ImageVariationResponse > ( ) . await ;
150147 match r {
@@ -153,7 +150,7 @@ impl Client {
153150 }
154151 }
155152
156- pub async fn embedding ( & self , req : EmbeddingRequest ) -> Result < EmbeddingResponse , Error > {
153+ pub async fn embedding ( & self , req : EmbeddingRequest ) -> Result < EmbeddingResponse , APIError > {
157154 let res = self . post ( "/embeddings" , & req) . await ?;
158155 let r = res. json :: < EmbeddingResponse > ( ) . await ;
159156 match r {
@@ -162,7 +159,7 @@ impl Client {
162159 }
163160 }
164161
165- pub async fn file_list ( & self ) -> Result < FileListResponse , Error > {
162+ pub async fn file_list ( & self ) -> Result < FileListResponse , APIError > {
166163 let res = self . get ( "/files" ) . await ?;
167164 let r = res. json :: < FileListResponse > ( ) . await ;
168165 match r {
@@ -171,7 +168,10 @@ impl Client {
171168 }
172169 }
173170
174- pub async fn file_upload ( & self , req : FileUploadRequest ) -> Result < FileUploadResponse , Error > {
171+ pub async fn file_upload (
172+ & self ,
173+ req : FileUploadRequest ,
174+ ) -> Result < FileUploadResponse , APIError > {
175175 let res = self . post ( "/files" , & req) . await ?;
176176 let r = res. json :: < FileUploadResponse > ( ) . await ;
177177 match r {
@@ -180,7 +180,10 @@ impl Client {
180180 }
181181 }
182182
183- pub async fn file_delete ( & self , req : FileDeleteRequest ) -> Result < FileDeleteResponse , Error > {
183+ pub async fn file_delete (
184+ & self ,
185+ req : FileDeleteRequest ,
186+ ) -> Result < FileDeleteResponse , APIError > {
184187 let res = self
185188 . delete ( & format ! ( "{}/{}" , "/files" , req. file_id) )
186189 . await ?;
@@ -194,7 +197,7 @@ impl Client {
194197 pub async fn file_retrieve (
195198 & self ,
196199 req : FileRetrieveRequest ,
197- ) -> Result < FileRetrieveResponse , Error > {
200+ ) -> Result < FileRetrieveResponse , APIError > {
198201 let res = self . get ( & format ! ( "{}/{}" , "/files" , req. file_id) ) . await ?;
199202 let r = res. json :: < FileRetrieveResponse > ( ) . await ;
200203 match r {
@@ -206,7 +209,7 @@ impl Client {
206209 pub async fn file_retrieve_content (
207210 & self ,
208211 req : FileRetrieveContentRequest ,
209- ) -> Result < FileRetrieveContentResponse , Error > {
212+ ) -> Result < FileRetrieveContentResponse , APIError > {
210213 let res = self
211214 . get ( & format ! ( "{}/{}/content" , "/files" , req. file_id) )
212215 . await ?;
@@ -220,7 +223,7 @@ impl Client {
220223 pub async fn chat_completion (
221224 & self ,
222225 req : ChatCompletionRequest ,
223- ) -> Result < ChatCompletionResponse , Error > {
226+ ) -> Result < ChatCompletionResponse , APIError > {
224227 let res = self . post ( "/chat/completions" , & req) . await ?;
225228 let r = res. json :: < ChatCompletionResponse > ( ) . await ;
226229 match r {
@@ -229,7 +232,9 @@ impl Client {
229232 }
230233 }
231234
232- fn new_error ( & self , err : reqwest:: Error ) -> Error {
233- Error :: new ( std:: io:: ErrorKind :: Other , err)
235+ fn new_error ( & self , err : reqwest:: Error ) -> APIError {
236+ APIError {
237+ message : err. to_string ( ) ,
238+ }
234239 }
235240}
0 commit comments