UNPKG

twitter-api-v2-patch

Version:

Strongly typed, full-featured, light, versatile yet powerful Twitter API v1.1 and v2 client for Node.js.

77 lines (76 loc) 2.23 kB
import TwitterPaginator from './TwitterPaginator'; import { CursoredV1Paginator } from './paginator.v1'; /** A generic TwitterPaginator able to consume TweetV1 timelines. */ export class UserSearchV1Paginator extends TwitterPaginator { constructor() { super(...arguments); this._endpoint = 'users/search.json'; } refreshInstanceFromResult(response, isNextPage) { const result = response.data; this._rateLimit = response.rateLimit; if (isNextPage) { this._realData.push(...result); } } getNextQueryParams(maxResults) { var _a; const previousPage = Number((_a = this._queryParams.page) !== null && _a !== void 0 ? _a : '1'); return { ...this._queryParams, page: previousPage + 1, ...maxResults ? { count: maxResults } : {}, }; } getPageLengthFromRequest(result) { return result.data.length; } isFetchLastOver(result) { return !result.data.length; } canFetchNextPage(result) { return result.length > 0; } getItemArray() { return this.users; } /** * Users returned by paginator. */ get users() { return this._realData; } } export class FriendshipsIncomingV1Paginator extends CursoredV1Paginator { constructor() { super(...arguments); this._endpoint = 'friendships/incoming.json'; this._maxResultsWhenFetchLast = 5000; } refreshInstanceFromResult(response, isNextPage) { const result = response.data; this._rateLimit = response.rateLimit; if (isNextPage) { this._realData.ids.push(...result.ids); this._realData.next_cursor = result.next_cursor; } } getPageLengthFromRequest(result) { return result.data.ids.length; } getItemArray() { return this.ids; } /** * Users IDs returned by paginator. */ get ids() { return this._realData.ids; } } export class FriendshipsOutgoingV1Paginator extends FriendshipsIncomingV1Paginator { constructor() { super(...arguments); this._endpoint = 'friendships/outgoing.json'; } }