@@ -203,34 +203,38 @@ export async function getCloudinaryUrl(options: CloudinaryOptions) {
203
203
}
204
204
205
205
let results
206
+ const maxAttempts = 3 ;
206
207
207
- if ( canSignUpload ) {
208
- // We need an API Key and Secret to use signed uploading
209
-
210
- try {
211
- results = await cloudinary . uploader . upload ( fullPath , {
212
- ...uploadOptions ,
213
- } )
214
- } catch ( error ) {
215
- console . error ( `[Cloudinary] ${ ERROR_ASSET_UPLOAD } ` )
216
- console . error ( `[Cloudinary] \tpath: ${ fullPath } ` )
217
- throw Error ( ERROR_ASSET_UPLOAD )
218
- }
219
- } else {
220
- // If we want to avoid signing our uploads, we don't need our API Key and Secret,
221
- // however, we need to provide an uploadPreset
208
+ for ( let attempt = 0 ; attempt < maxAttempts ; attempt ++ ) {
222
209
try {
223
- results = await cloudinary . uploader . unsigned_upload (
224
- fullPath ,
225
- uploadPreset ,
226
- {
210
+ if ( canSignUpload ) {
211
+ // We need an API Key and Secret to use signed uploading
212
+ results = await cloudinary . uploader . upload ( fullPath , {
227
213
...uploadOptions ,
228
- } ,
229
- )
214
+ } )
215
+ break ;
216
+ }
217
+ else {
218
+ // If we want to avoid signing our uploads, we don't need our API Key and Secret,
219
+ // however, we need to provide an uploadPreset
220
+ results = await cloudinary . uploader . unsigned_upload (
221
+ fullPath ,
222
+ uploadPreset ,
223
+ {
224
+ ...uploadOptions ,
225
+ } ,
226
+ )
227
+ break ;
228
+ }
230
229
} catch ( error ) {
231
- console . error ( `[Cloudinary] ${ ERROR_ASSET_UPLOAD } ` )
232
- console . error ( `[Cloudinary] path: ${ fullPath } ` )
233
- throw Error ( ERROR_ASSET_UPLOAD )
230
+ console . error ( `[Cloudinary] Attempt ${ attempt + 1 } - ${ ERROR_ASSET_UPLOAD } ` ) ;
231
+ console . error ( `[Cloudinary] Attempt ${ attempt + 1 } - \tpath: ${ fullPath } ` )
232
+ if ( attempt === maxAttempts - 1 ) {
233
+ // If it's the last attempt, rethrow the error or handle it accordingly
234
+ throw Error ( ERROR_ASSET_UPLOAD ) ;
235
+ } else {
236
+ await new Promise ( resolve => setTimeout ( resolve , 500 ) ) ;
237
+ }
234
238
}
235
239
}
236
240
0 commit comments