feat(Jira Software Node): Migrate from soon deprecated endpoints to get issues (#14821)

This commit is contained in:
RomanDavydchuk
2025-04-28 17:17:43 +03:00
committed by GitHub
parent 70b93f2f53
commit 216bdd15fd
4 changed files with 282 additions and 24 deletions

View File

@@ -75,6 +75,33 @@ export async function jiraSoftwareCloudApiRequest(
}
}
export function handlePagination(
body: any,
query: IDataObject,
paginationType: 'offset' | 'token',
responseData?: any,
): boolean {
if (!responseData) {
if (paginationType === 'offset') {
query.startAt = 0;
query.maxResults = 100;
} else {
body.maxResults = 100;
}
return true;
}
if (paginationType === 'offset') {
const nextStartAt = (responseData.startAt as number) + (responseData.maxResults as number);
query.startAt = nextStartAt;
return nextStartAt < responseData.total;
} else {
body.nextPageToken = responseData.nextPageToken as string;
return !!responseData.nextPageToken;
}
}
export async function jiraSoftwareCloudApiRequestAllItems(
this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,
propertyName: string,
@@ -82,29 +109,17 @@ export async function jiraSoftwareCloudApiRequestAllItems(
method: IHttpRequestMethods,
body: any = {},
query: IDataObject = {},
paginationType: 'offset' | 'token' = 'offset',
): Promise<any> {
const returnData: IDataObject[] = [];
let responseData;
query.startAt = 0;
query.maxResults = 100;
if (method !== 'GET') {
body.startAt = 0;
body.maxResults = 100;
}
let hasNextPage = handlePagination(body, query, paginationType);
do {
responseData = await jiraSoftwareCloudApiRequest.call(this, endpoint, method, body, query);
returnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);
query.startAt = (responseData.startAt as number) + (responseData.maxResults as number);
if (method !== 'GET') {
body.startAt = (responseData.startAt as number) + (responseData.maxResults as number);
}
} while (
(responseData.startAt as number) + (responseData.maxResults as number) <
responseData.total
);
hasNextPage = handlePagination(body, query, paginationType, responseData);
} while (hasNextPage);
return returnData;
}