File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ import {
21
21
getBestListingsAPIPath ,
22
22
getCancelOrderPath ,
23
23
} from "./apiPaths" ;
24
+ import { OpenSeaRatelimitError } from "./errors" ;
24
25
import {
25
26
BuildOfferResponse ,
26
27
GetCollectionResponse ,
@@ -755,6 +756,19 @@ export class OpenSeaAPI {
755
756
756
757
const response = await req . send ( ) ;
757
758
if ( ! response . ok ( ) ) {
759
+ if ( response . statusCode === 599 ) {
760
+ let retryAfter : number | undefined ;
761
+ const retryAfterHeader =
762
+ response . headers [ "retry-after" ] || response . headers [ "Retry-After" ] ;
763
+ if ( retryAfterHeader ) {
764
+ retryAfter = parseInt ( retryAfterHeader , 10 ) ;
765
+ }
766
+ throw new OpenSeaRatelimitError (
767
+ `${ response . statusCode } ${ response . statusMessage } ` ,
768
+ retryAfter ,
769
+ response . bodyJson ,
770
+ ) ;
771
+ }
758
772
// If an errors array is returned, throw with the error messages.
759
773
const errors = response . bodyJson ?. errors ;
760
774
if ( errors ?. length > 0 ) {
Original file line number Diff line number Diff line change
1
+ export class OpenSeaRatelimitError extends Error {
2
+ public retryAfter ?: number ;
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ public responseBody ?: any ;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ constructor ( message : string , retryAfter ?: number , responseBody ?: any ) {
7
+ super ( message ) ;
8
+ this . name = "OpenSeaRatelimitError" ;
9
+ this . retryAfter = retryAfter ;
10
+ this . responseBody = responseBody ;
11
+ }
12
+ }
You can’t perform that action at this time.
0 commit comments