nodeyak
Version:
A library for posting and interacting with the YikYak API
103 lines • 7.37 kB
JavaScript
;
/* 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==