UNPKG

nodeyak

Version:

A library for posting and interacting with the YikYak API

103 lines 7.37 kB
"use strict"; /* eslint-disable functional/prefer-readonly-type */ /* eslint-disable functional/no-this-expression */ /* eslint-disable functional/no-class */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeYak = void 0; const axios_1 = __importDefault(require("axios")); const dayjs_1 = __importDefault(require("dayjs")); const jwt_decode_1 = __importDefault(require("jwt-decode")); const YakBackend = axios_1.default.create({ baseURL: "https://api.yikyak.com/graphql/", timeout: 1000, headers: { 'User-Agent': 'YikYak/92 CFNetwork/1385 Darwin/22.0.0', } }); class NodeYak { 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 (0, jwt_decode_1.default)(this.auth.authToken); const expiresAt = dayjs_1.default.unix(decodedToken.exp); if (!(0, dayjs_1.default)().isAfter(expiresAt)) { return; } } const tokenResponse = await axios_1.default.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_1.default.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; } } } exports.NodeYak = NodeYak; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9EQUFvRDtBQUNwRCxrREFBa0Q7QUFDbEQsd0NBQXdDOzs7Ozs7QUFFeEMsa0RBQTBCO0FBQzFCLGtEQUEwQjtBQUMxQiw0REFBb0M7QUFHcEMsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLEVBQUUsaUNBQWlDO0lBQzFDLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFO1FBQ0wsWUFBWSxFQUFFLHdDQUF3QztLQUN6RDtDQUNKLENBQUMsQ0FBQTtBQTZGRixNQUFhLE9BQU87SUFNaEIsWUFBWSxJQUFzQjtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLHVCQUF1QjtRQUNqQyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUMzQixNQUFNLFlBQVksR0FBcUIsTUFBTSxJQUFBLG9CQUFVLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RSxNQUFNLFNBQVMsR0FBRyxlQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUvQyxJQUFHLENBQUMsSUFBQSxlQUFLLEdBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlCLE9BQU87YUFDUjtTQUNKO1FBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxlQUFLLENBQUMsSUFBSSxDQUFDLHlGQUF5RixFQUNoSSxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLDJCQUEyQixFQUFDO1lBQy9ELE9BQU8sRUFBRTtnQkFDTCxZQUFZLEVBQUUscUVBQXFFO2dCQUNuRix5QkFBeUIsRUFBRSxjQUFjO2dCQUN6QyxrQkFBa0IsRUFBRSx3Q0FBd0M7YUFDL0Q7U0FDSixDQUFDLENBQUE7UUFFRixNQUFNLElBQUksR0FBYyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDeEIsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ25DLENBQUE7UUFFRCxPQUFPO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBUTtRQUNwQixJQUFJO1lBQ0EsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUN4QztRQUFDLE9BQU0sQ0FBQyxFQUFFO1lBQ1AsSUFBRyxlQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNwSDtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7Z0JBQzFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDbkI7WUFDRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJO1lBQ0EsTUFBTSxPQUFPLEdBQUc7Z0JBQ1osYUFBYSxFQUFFLFdBQVc7Z0JBQzFCLEtBQUssRUFDSCwrVUFBK1U7Z0JBQ2pWLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsYUFBYSxFQUFFLEdBQUcsQ0FBQyxTQUFTO3dCQUM1QixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7d0JBQzVCLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHO3dCQUMzRCxrQkFBa0IsRUFBRSxHQUFHLENBQUMsV0FBVzt3QkFDbkMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO3dCQUNkLFNBQVMsRUFBRSxHQUFHLENBQUMsVUFBVTt3QkFDekIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO3dCQUN4QixPQUFPLEVBQUUsRUFBRTtxQkFDWjtpQkFDRjthQUNKLENBQUE7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRTtnQkFDbkQsT0FBTyxFQUFFO29CQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7b0JBQ2xDLGNBQWMsRUFBRSxrQkFBa0I7b0JBQ2xDLFFBQVEsRUFBRSxTQUFTLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHO2lCQUNqRTthQUNKLENBQUMsQ0FBQztZQUVILElBQUcsV0FBVyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTthQUNoRDtTQUVKO1FBQUMsT0FBTSxDQUFDLEVBQUU7WUFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU87U0FDVjtJQUVMLENBQUM7Q0FDSjtBQWhHRCwwQkFnR0MifQ==