diff --git a/packages/core-api/src/handlers/peers/controller.ts b/packages/core-api/src/handlers/peers/controller.ts index 96c0e9da70..fe8e9a19c0 100644 --- a/packages/core-api/src/handlers/peers/controller.ts +++ b/packages/core-api/src/handlers/peers/controller.ts @@ -1,6 +1,7 @@ import { P2P } from "@arkecosystem/core-interfaces"; import Boom from "@hapi/boom"; import Hapi from "@hapi/hapi"; +import { get } from "dottie"; import semver from "semver"; import { Controller } from "../shared/controller"; @@ -15,7 +16,17 @@ export class PeersController extends Controller { const count: number = result.length; - result = result.slice(0, +request.query.limit || 100); + const limit: number = +request.query.limit || 100; + + let offset: number = +get(request.query, "offset", 0); + + if (offset <= 0 && +request.query.page > 1) { + offset = (+request.query.page - 1) * limit; + } + + if (Number.isNaN(offset)) { + offset = 0; + } const orderBy: string = request.query.orderBy as string; if (orderBy) { @@ -29,6 +40,8 @@ export class PeersController extends Controller { } } + result = result.slice(offset, offset + limit); + return super.toPagination({ rows: result, count }, "peer"); }