nodeyak
Version:
A library for posting and interacting with the YikYak API
100 lines • 7.13 kB
JavaScript
/* eslint-disable functional/prefer-readonly-type */
/* eslint-disable functional/no-this-expression */
/* eslint-disable functional/no-class */
import axios from "axios";
import dayjs from "dayjs";
import jwt_decode from "jwt-decode";
const YakBackend = axios.create({
baseURL: "https://api.yikyak.com/graphql/",
timeout: 1000,
headers: {
'User-Agent': 'YikYak/92 CFNetwork/1385 Darwin/22.0.0',
}
});
export class NodeYak {
/**
* The authorization to use when posting to the API.
*/
auth;
constructor(auth) {
this.auth = auth;
}
/**
* This checks to see if the authorization token is expired, and if so, it uses the refresh
* token to get a new authorization token.
*/
async checkAuthorizationToken() {
if (this.auth.authToken !== '') {
const decodedToken = await jwt_decode(this.auth.authToken);
const expiresAt = dayjs.unix(decodedToken.exp);
if (!dayjs().isAfter(expiresAt)) {
return;
}
}
const tokenResponse = await axios.post('https://securetoken.googleapis.com/v1/token?key=AIzaSyCg5PmGOUQPAG_FeZQZ5O42xAIolkmSjaA', `refresh_token=${this.auth.refreshToken}&grant_type=refresh_token`, {
headers: {
'User-Agent': 'FirebaseAuth.iOS/9.0.0 com.yikyak.2/1.6.3 iPhone/16.0 hw/iPhone13_3',
'x-ios-bundle-identifier': 'com.yikyak.2',
'x-client-version': 'iOS/FirebaseSDK/9.0.0/FirebaseCore-iOS'
}
});
const data = tokenResponse.data;
this.auth = {
authToken: data.id_token,
refreshToken: data.refresh_token
};
return;
}
/**
* Post a new Yak
* @param yak The yak to post.
*/
async createYak(yak) {
try {
await this.checkAuthorizationToken();
}
catch (e) {
if (axios.isAxiosError(e)) {
console.error(`Error using refresh token:\nERROR ${e.response.status}: ${e.response.statusText} - ${e.message}`);
}
else {
console.error("An unexpected error occured while checking authorization:");
console.error(e);
}
return;
}
try {
const payload = {
operationName: "CreateYak",
query: "mutation CreateYak($input: CreateYakInput!) {\n createYak(input: $input) {\n __typename\n errors {\n __typename\n code\n field\n message\n }\n yak {\n __typename\n id\n text\n interestAreas\n distance\n userColor\n secondaryUserColor\n userEmoji\n }\n }\n}",
variables: {
input: {
interestAreas: yak.locations,
isIncognito: yak.isIncognito,
point: `POINT(${yak.postedFrom.lat} ${yak.postedFrom.lon})`,
secondaryUserColor: yak.secondColor,
text: yak.text,
userColor: yak.firstColor,
userEmoji: yak.userEmoji,
videoId: '',
},
}
};
const yakResponse = await YakBackend.post('', payload, {
headers: {
Authorization: this.auth.authToken,
'Content-Type': 'application/json',
Location: `POINT(${yak.postedFrom.lat} ${yak.postedFrom.lon})`,
}
});
if (yakResponse.status === 200) {
console.log('Successfully posted a new Yak.');
}
}
catch (e) {
console.error(e);
return;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFFeEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFHcEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLEVBQUUsaUNBQWlDO0lBQzFDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFO1FBQ0wsWUFBWSxFQUFFLHdDQUF3QztLQUN6RDtDQUNKLENBQUMsQ0FBQTtBQTZGRixNQUFNLE9BQU8sT0FBTztJQUNoQjs7T0FFRztJQUNILElBQUksQ0FBbUI7SUFFdkIsWUFBWSxJQUFzQjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLHVCQUF1QjtRQUNqQyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUMzQixNQUFNLFlBQVksR0FBcUIsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUvQyxJQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM5QixPQUFPO2FBQ1I7U0FDSjtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyx5RkFBeUYsRUFDaEksaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSwyQkFBMkIsRUFBQztZQUMvRCxP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