Skip to content

Commit 094f358

Browse files
committed
fix_page+limit/offset
1 parent fe91e5d commit 094f358

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

src/index.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,19 @@ export class Optimade {
114114
return Optimade.apiVersion(apis);
115115
}
116116

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> {
118118

119119
if (!this.apis[providerId]) { return null; }
120120

121121
const apis = this.apis[providerId].filter(api => api.attributes.available_endpoints.includes('structures'));
122122
const provider = this.providers[providerId];
123123

124124
const structures: Types.StructuresResponse[] = await allSettled(apis.map(async (api: Types.Api) => {
125-
if (page <= 0) { page = 1; }
126125
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}` : '';
129128
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}`);
131130

132131
try {
133132
return await Optimade.getJSON(url, {}, { Origin: 'https://cors.optimade.science', 'X-Requested-With': 'XMLHttpRequest' });
@@ -149,13 +148,13 @@ export class Optimade {
149148
}, []);
150149
}
151150

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>[] {
153152

154-
const results = providerIds.reduce((structures: Promise<any>[], providerId: string) => {
153+
const results = providers.reduce((structures: Promise<any>[], providerId: string) => {
155154
const provider = this.providers[providerId];
156155
if (provider) {
157156
structures.push(allSettled([
158-
this.getStructures(providerId, filter, page, limit),
157+
this.getStructures({ providerId, filter, page, limit, offset }),
159158
Promise.resolve(provider)
160159
]));
161160
}
@@ -173,7 +172,7 @@ export class Optimade {
173172
return !this.isDuplicatedReq(url) ? Optimade.getJSON(url) : null;
174173
}
175174

176-
private wrapUrl(url, tail = '') {
175+
private wrapUrl(url: string, tail = ''): string {
177176
url = this.corsProxyUrl ? `${this.corsProxyUrl}/${url.replace('://', '/').replace('//', '/')}` : url;
178177
return tail ? url.replace(/\/$/, '') + tail : url;
179178
}

0 commit comments

Comments
 (0)