Clique Pipelines SDK
The Clique Pipelines SDK
is an open-source library that enables user to access Clique Pipelines Data
easily and quickly. We currently support NodeJS and Web SDKs.
Setup
NodeJS
Add the dependency:
pnpm add @cliqueofficial/clique-pipelines-sdk-node
# OR
yarn add @cliqueofficial/clique-pipelines-sdk-node
# OR
npm install @cliqueofficial/clique-pipelines-sdk-node
Get the client instance:
import { Client } from '@cliqueofficial/clique-pipelines-sdk-node';
const config = {
// Whether the Pipelines Data is retrieved in a TEE environment.
enableTee: true,
// Clique Pipelines Data Service URL,
serviceUrl: 'https://pipelines-server.sit.clique-test.tech',
};
const client = new Client(config);
Web
Add the dependency:
pnpm add @cliqueofficial/clique-pipelines-sdk-web
# OR
yarn add @cliqueofficial/clique-pipelines-sdk-web
# OR
npm install @cliqueofficial/clique-pipelines-sdk-web
Get the client instance:
import { Client } from '@cliqueofficial/clique-pipelines-sdk-web';
const config = {
// Whether the Pipelines Data is retrieved in a TEE environment.
enableTee: true,
// Clique Pipelines Data Service URL,
serviceUrl: 'https://pipelines-server.sit.clique-test.tech',
};
const client = new Client(config);
Pipelines
Common Types
Response
interface Response {
id: number;
attestation?: {
id: string;
type: 'SGX';
isvEnclaveQuoteBody: string;
};
signature?: string;
result: Record<string, any>;
}
The attestation
and signature
will be undefined
if you disable TEE
.
Twitter
userInfo
interface TwitterUserInfo {
idStr: string;
name: string;
screenName: string;
profileImageUrlHttps: string;
description: string;
fastFollowersCount: number;
favouritesCount: number;
followersCount: number;
friendsCount: number;
mediaCount: number;
statusesCount: number;
createdAt: string;
isBlueVerified: boolean;
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.twitter.userInfo(oauthAccessToken);
const userInfo = response.result[response.id]; // TwitterUserInfo
Steam
userInfo
export interface SteamUserInfo {
steamId: string;
communityVisibilityState: number;
profileState: number;
personaName: string;
profileUrl: string;
lastLogOff: number;
timeCreated: number;
personaState: number;
locCountryCode: string;
}
const steamId = 'xxxxxx';
const response: Response = await client.steam.userInfo(steamId);
const userInfo = response.result[response.id]; // SteamUserInfo
listBadge
interface SteamBadges {
badges: {
badgeId: number;
completionTime: number;
level: number;
scarcity: number;
xp: number;
}[];
}
const steamId = 'xxxxxx';
const response: Response = await client.steam.listBadges(steamId);
const badges = response.result[response.id].badges; // SteamBadges
userOwnedGames
export interface SteamPlayerOwnedGame {
appId: string;
name: string;
playtimeForever: number;
imgIconUrl: string;
hasCommunityVisibleStats: boolean;
playtimeWindowsForever: number;
playtimeMacForever: number;
playtimeLinuxForever: number;
playtimeDeckForever: number;
rtimeLastPlayed: number;
playtimeDisconnected: number;
}
export interface SteamUserOwnedGames {
games: SteamPlayerOwnedGame[];
gameCount: number;
}
const steamId = 'xxxxxx';
const response: Response = await client.steam.userOwnedGames(steamId);
const userOwnedGames = response.result[response.id]; // SteamUserOwnedGames
gameStats
interface SteamGameStatsRequest {
// how many top data
top?: number;
}
export interface SteamGameStats {
sumMoneySpentOnGames: number;
listCategory: {
gameId: number;
category: string[];
}[];
sumHoursPlayed: string;
sumOwnedGames: number;
topPlayedGames: {
gameId: number;
name: string;
hours: string;
}[];
gamePlayedTime: {
name: string;
time: number;
}[];
topGenresByHours: {
name: string;
hours: string;
}[];
topCategoriesByHours: {
name: string;
hours: string;
}[];
ownedGameNames: string[];
userGameAchievements: {
steamId: string;
gameName: string;
achievements: {
apiName: string;
name: string;
achieved: boolean;
unlockTime: number;
description: string;
}[];
}[];
sumAchievedAchievement: number;
}
const steamId = 'xxxxxx';
const request: SteamGameStatsRequest = {};
const response: Response = await client.steam.gameStats(steamId, request);
const gameStats = response.result[response.id]; // SteamGameStats
Discord
userInfo
interface DiscordUserInfo {
id: string;
username: string;
discriminator: string;
publicFlags: number;
flags: number;
globalName: string;
mfaEnabled: boolean;
locale: string;
premiumType: number;
createdAt: number;
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.discord.userInfo(oauthAccessToken);
const userInfo = response.result[response.id]; // DiscordUserInfo
isMemberOf
interface DiscordIsMemberOf {
isMemberOf: boolean;
}
const botToken = 'xxxxxx';
const serverId = 'xxxxxx';
const uid = 'xxxxxx';
const response: Response = await client.discord.isMemberOf({
botToken, serverId, uid,
});
const isMemberOf = response.result[response.id].isMemberOf;
timeJoined
interface DiscordTimeJoined {
joinedAt: number;
}
const botToken = 'xxxxxx';
const serverId = 'xxxxxx';
const uid = 'xxxxxx';
const response: Response = await client.discord.timeJoined({
botToken, serverId, uid,
});
const timeJoined = response.result[response.id].joinedAt;
numInvites
interface DiscordNumInvites {
numInvites: number;
}
const botToken = 'xxxxxx';
const serverId = 'xxxxxx';
const uid = 'xxxxxx';
const response: Response = await client.discord.numInvites({
botToken, serverId, uid,
});
const numInvites = response.result[response.id].numInvites;
userRoles
interface DiscordUserRoles {
roles: string[];
}
const botToken = 'xxxxxx';
const serverId = 'xxxxxx';
const uid = 'xxxxxx';
const response: Response = await client.discord.userRoles({
botToken, serverId, uid,
});
const userRoles = response.result[response.id].userRoles;
GitHub
userInfo
interface GithubUserInfo {
id: number;
name: string;
login: string;
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.github.userInfo(oauthAccessToken);
const userInfo = response.result[response.id]; // GithubUserInfo
stats
interface GithubStats {
name: string;
login: string;
followers: number;
totalPRs: number;
totalCommits: number;
totalIssues: number;
totalStars: number;
contributedTo: number;
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.github.stats(oauthAccessToken);
const stats = response.result[response.id]; // GithubStats
Spotify
userInfo
interface SpotifyUserInfo {
id: number;
country: string;
displayName: string;
followers: number;
email: string;
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.spotify.userInfo(oauthAccessToken);
const userInfo = response.result[response.id]; // SpotifyUserInfo
topTracks
interface SpotifyTopTracksStats {
top10Artists: string[];
top10Genres: string[];
topTracks: string[];
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.spotify.topTracks(oauthAccessToken);
const topTracks = response.result[response.id]; // SpotifyTopTracksStats
followedArtists
interface SpotifyArtist {
id: string;
genres: string[];
name: string;
imageUrl: string;
}
interface SpotifyFollowedArtists {
artists: SpotifyArtist[];
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.spotify.followedArtists(oauthAccessToken);
const followedArtists = response.result[response.id]; // SpotifyFollowedArtists
recentPlayedTracks
interface SpotifyTrack {
id: string;
name: string;
}
interface SpotifyRecentPlayedTrack {
tracks: SpotifyTrack[];
}
const oauthAccessToken = 'xxxxxx';
const response: Response = await client.spotify.recentPlayedTracks(oauthAccessToken);
const recentPlayedTracks = response.result[response.id]; // SpotifyRecentPlayedTrack[]
Last updated