@@ -114,20 +114,19 @@ export class Optimade {
114
114
return Optimade . apiVersion ( apis ) ;
115
115
}
116
116
117
- async getStructures ( providerId : string , filter = '' , page = 1 , limit : number ) : Promise < Types . StructuresResponse [ ] | Types . ResponseError > {
117
+ async getStructures ( { providerId , filter, page , limit , offset } : { providerId : string ; filter : string ; page : number ; limit : number ; offset : number ; } ) : Promise < Types . StructuresResponse [ ] | Types . ResponseError > {
118
118
119
119
if ( ! this . apis [ providerId ] ) { return null ; }
120
120
121
121
const apis = this . apis [ providerId ] . filter ( api => api . attributes . available_endpoints . includes ( 'structures' ) ) ;
122
122
const provider = this . providers [ providerId ] ;
123
123
124
124
const structures : Types . StructuresResponse [ ] = await allSettled ( apis . map ( async ( api : Types . Api ) => {
125
- if ( page <= 0 ) { page = 1 ; }
126
125
const pageLimit = limit ? `&page_limit=${ limit } ` : '' ;
127
- const pageNumber = page ? `&page_number=${ page - 1 } ` : '' ;
128
- const pageOffset = limit && page ? `&page_offset=${ limit * ( page - 1 ) } ` : '' ;
126
+ const pageNumber = page ? `&page_number=${ page } ` : '' ;
127
+ const pageOffset = offset ? `&page_offset=${ offset } ` : '' ;
129
128
const params = filter ? `${ pageLimit + pageNumber + pageOffset } ` : `?${ pageLimit } ` ;
130
- const url : string = this . wrapUrl ( Optimade . apiVersionUrl ( api ) , filter ? `/structures?filter=${ filter + params } ` : `/structures${ params } ` ) ;
129
+ const url = this . wrapUrl ( Optimade . apiVersionUrl ( api ) , filter ? `/structures?filter=${ filter + params } ` : `/structures${ params } ` ) ;
131
130
132
131
try {
133
132
return await Optimade . getJSON ( url , { } , { Origin : 'https://cors.optimade.science' , 'X-Requested-With' : 'XMLHttpRequest' } ) ;
@@ -149,13 +148,13 @@ export class Optimade {
149
148
} , [ ] ) ;
150
149
}
151
150
152
- getStructuresAll ( providerIds : string [ ] , filter = '' , page = 1 , limit : number , batch = true ) : Promise < Promise < Types . StructuresResult > [ ] > | Promise < Types . StructuresResult > [ ] {
151
+ getStructuresAll ( { providers , filter, page , limit , offset , batch = true } : { providers : string [ ] ; filter : string ; page : number ; limit : number ; offset : number ; batch ?: boolean ; } ) : Promise < Promise < Types . StructuresResult > [ ] > | Promise < Types . StructuresResult > [ ] {
153
152
154
- const results = providerIds . reduce ( ( structures : Promise < any > [ ] , providerId : string ) => {
153
+ const results = providers . reduce ( ( structures : Promise < any > [ ] , providerId : string ) => {
155
154
const provider = this . providers [ providerId ] ;
156
155
if ( provider ) {
157
156
structures . push ( allSettled ( [
158
- this . getStructures ( providerId , filter , page , limit ) ,
157
+ this . getStructures ( { providerId, filter, page, limit, offset } ) ,
159
158
Promise . resolve ( provider )
160
159
] ) ) ;
161
160
}
@@ -173,7 +172,7 @@ export class Optimade {
173
172
return ! this . isDuplicatedReq ( url ) ? Optimade . getJSON ( url ) : null ;
174
173
}
175
174
176
- private wrapUrl ( url , tail = '' ) {
175
+ private wrapUrl ( url : string , tail = '' ) : string {
177
176
url = this . corsProxyUrl ? `${ this . corsProxyUrl } /${ url . replace ( '://' , '/' ) . replace ( '//' , '/' ) } ` : url ;
178
177
return tail ? url . replace ( / \/ $ / , '' ) + tail : url ;
179
178
}
0 commit comments