UNPKG

nodeyak

Version:

A library for posting and interacting with the YikYak API

100 lines 7.13 kB
/* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFFeEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFHcEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLEVBQUUsaUNBQWlDO0lBQzFDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFO1FBQ0wsWUFBWSxFQUFFLHdDQUF3QztLQUN6RDtDQUNKLENBQUMsQ0FBQTtBQTZGRixNQUFNLE9BQU8sT0FBTztJQUNoQjs7T0FFRztJQUNILElBQUksQ0FBbUI7SUFFdkIsWUFBWSxJQUFzQjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLHVCQUF1QjtRQUNqQyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUMzQixNQUFNLFlBQVksR0FBcUIsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUvQyxJQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM5QixPQUFPO2FBQ1I7U0FDSjtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyx5RkFBeUYsRUFDaEksaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSwyQkFBMkIsRUFBQztZQUMvRCxPQUFPLEVBQUU7Z0JBQ0wsWUFBWSxFQUFFLHFFQUFxRTtnQkFDbkYseUJBQXlCLEVBQUUsY0FBYztnQkFDekMsa0JBQWtCLEVBQUUsd0NBQXdDO2FBQy9EO1NBQ0osQ0FBQyxDQUFBO1FBRUYsTUFBTSxJQUFJLEdBQWMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNuQyxDQUFBO1FBRUQsT0FBTztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVE7UUFDcEIsSUFBSTtZQUNBLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDeEM7UUFBQyxPQUFNLENBQUMsRUFBRTtZQUNQLElBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDcEg7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFBO2dCQUMxRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ25CO1lBQ0QsT0FBTztTQUNWO1FBRUQsSUFBSTtZQUNBLE1BQU0sT0FBTyxHQUFHO2dCQUNaLGFBQWEsRUFBRSxXQUFXO2dCQUMxQixLQUFLLEVBQ0gsK1VBQStVO2dCQUNqVixTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLGFBQWEsRUFBRSxHQUFHLENBQUMsU0FBUzt3QkFDNUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO3dCQUM1QixLQUFLLEVBQUUsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRzt3QkFDM0Qsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLFdBQVc7d0JBQ25DLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTt3QkFDZCxTQUFTLEVBQUUsR0FBRyxDQUFDLFVBQVU7d0JBQ3pCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUzt3QkFDeEIsT0FBTyxFQUFFLEVBQUU7cUJBQ1o7aUJBQ0Y7YUFDSixDQUFBO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUU7Z0JBQ25ELE9BQU8sRUFBRTtvQkFDTCxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO29CQUNsQyxjQUFjLEVBQUUsa0JBQWtCO29CQUNsQyxRQUFRLEVBQUUsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRztpQkFDakU7YUFDSixDQUFDLENBQUM7WUFFSCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7YUFDaEQ7U0FFSjtRQUFDLE9BQU0sQ0FBQyxFQUFFO1lBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPO1NBQ1Y7SUFFTCxDQUFDO0NBQ0oifQ==