@crosspost/sdk
Version:
SDK for interacting with the Crosspost API
81 lines (75 loc) • 2.08 kB
text/typescript
import type {
AccountActivityQuery,
AccountActivityResponse,
AccountPostsQuery,
AccountPostsResponse,
ActivityLeaderboardQuery,
ActivityLeaderboardResponse,
ApiResponse,
} from '@crosspost/types';
import { makeRequest, type RequestOptions } from '../core/request.ts';
/**
* Activity-related API operations
*/
export class ActivityApi {
private options: RequestOptions;
/**
* Creates an instance of ActivityApi
* @param options Request options
*/
constructor(options: RequestOptions) {
this.options = options;
}
/**
* Gets the global activity leaderboard
* @param query Optional query parameters
* @returns A promise resolving with the leaderboard response
*/
async getLeaderboard(
query?: ActivityLeaderboardQuery,
): Promise<ApiResponse<ActivityLeaderboardResponse>> {
return makeRequest<ActivityLeaderboardResponse, never, Record<string, unknown>>(
'GET',
'/api/activity',
this.options,
undefined,
query,
);
}
/**
* Gets activity for a specific account
* @param signerId The NEAR account ID
* @param query Optional query parameters
* @returns A promise resolving with the account activity response
*/
async getAccountActivity(
signerId: string,
query?: AccountActivityQuery,
): Promise<ApiResponse<AccountActivityResponse>> {
return makeRequest<AccountActivityResponse, never, Record<string, unknown>>(
'GET',
`/api/activity/${signerId}`,
this.options,
undefined,
query,
);
}
/**
* Gets posts for a specific account
* @param signerId The NEAR account ID
* @param query Optional query parameters
* @returns A promise resolving with the account posts response
*/
async getAccountPosts(
signerId: string,
query?: AccountPostsQuery,
): Promise<ApiResponse<AccountPostsResponse>> {
return makeRequest<AccountPostsResponse, never, Record<string, unknown>>(
'GET',
`/api/activity/${signerId}/posts`,
this.options,
undefined,
query,
);
}
}