Skip to content

Commit

Permalink
feat: swap meaning of status to remaining
Browse files Browse the repository at this point in the history
per discussion in discord

fix: urls for lookups
  • Loading branch information
TobiTenno committed May 30, 2022
1 parent e59541e commit 30876ef
Show file tree
Hide file tree
Showing 8 changed files with 309 additions and 294 deletions.
7 changes: 4 additions & 3 deletions src/embeds/FissureEmbed.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import BaseEmbed from './BaseEmbed.js';

import { assetBase, wikiBase } from '../utilities/CommonFunctions.js';
import { rTime } from '../utilities/Wrappers.js';

const fissureThumb = `${assetBase}${assetBase.endsWith('/') ? '' : '/'}img/fissure-sm.png`;

Expand Down Expand Up @@ -35,15 +36,15 @@ export default class FissureEmbed extends BaseEmbed {

this.fields = fissures.map((f) => ({
name: i18n`${f.missionType} ${era ? '' : f.tier}`,
value: i18n`[${f.eta}] ${f.node} against ${f.enemy}`,
value: `${i18n`${f.node} against ${f.enemy}`}${i18n`\n**Expires ${rTime(f.expiry)}**`}`,
}));
} else if (fissures.length === 0) {
this.description = i18n`Currently no fissures`;
} else {
const f = fissures[0];
this.title = i18n`[${platform.toUpperCase()}] ${f.missionType} ${f.tier}`;
this.description = i18n`${f.node} against ${f.enemy}`;
this.footer.text = i18n`${f.eta} remaining • Expires `;
this.description = `${i18n`${f.node} against ${f.enemy}`}${i18n`\n**Expires ${rTime(f.expiry)}**`}`;
this.footer.text = i18n`Expires `;
this.timestamp = new Date(f.expiry).getTime();
this.thumbnail.url = fissureThumb;
}
Expand Down
4 changes: 2 additions & 2 deletions src/eventHandlers/Ready.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ export default class OnReadyHandle extends Handler {
}

const vs = vallisState
? `${timeDeltaToMinutesString(vsFromNow) || '0m'}: ${vallisState.isWarm ? '❄️' : '🔥'} • `
? `${timeDeltaToMinutesString(vsFromNow) || '0m'}: ${vallisState.isWarm ? '🔥' : '❄️'} • `
: '';
const cs = cetusState ? `${timeDeltaToMinutesString(csFromNow) || '0m'}: ${cetusState.isDay ? '🌕' : '☀️'}` : '';
const cs = cetusState ? `${timeDeltaToMinutesString(csFromNow) || '0m'}: ${cetusState.isDay ? '☀️' : '🌕'}` : '';
return `${vs}${cs}`;
}
return base;
Expand Down
5 changes: 3 additions & 2 deletions src/interactions/tracking/Tracking.js
Original file line number Diff line number Diff line change
Expand Up @@ -389,11 +389,12 @@ export default class Settings extends Interaction {
default:
break;
}
await message.edit({
if (page > chunks.length - 1) page = chunks.length - 1;
if (page < 0) page = 0;
return message.edit({
content: chunks[page],
components: createGroupsRow(),
});
return undefined;
};
buttonCollector.on('collect', buttonHandler);
}
Expand Down
2 changes: 1 addition & 1 deletion src/interactions/warframe/Worldstate.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ export default class WorldState extends Interaction {
new embeds.fissures(eras[eraKey], {
platform,
i18n: ctx.i18n,
era: eras[eraKey][0].tier,
era: eras[eraKey][0]?.tier,
})
);
});
Expand Down
548 changes: 275 additions & 273 deletions src/resources/locales/en.json

Large diffs are not rendered by default.

13 changes: 10 additions & 3 deletions src/utilities/Fetcher.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import http from 'node:http';
import https from 'node:https';
import crypto from 'crypto';
import logger from './Logger.js';

const retryCodes = [429].concat(
Expand All @@ -9,9 +10,13 @@ const redirectCodes = [302, 301].concat(
(process.env.JSON_CACHE_REDIRECT_CODES || '').split(',').map((code) => parseInt(code.trim(), 10))
);

const hash = (input) => {
return crypto.createHash('md5').update(input).digest('hex');
};

const fetch = (url, { maxRetry = 10, headers } = { maxRetry: 10, headers: {} }) => {
logger.debug(`Fetching... ${url}`);
const protocol = url.startsWith('https') ? https : http;
// eslint-disable-next-line new-cap
return new Promise((resolve) => {
const request = protocol.get(url, { headers }, (response) => {
const body = [];
Expand All @@ -24,7 +29,7 @@ const fetch = (url, { maxRetry = 10, headers } = { maxRetry: 10, headers: {} })
.catch(logger.error);
}, 1000);
} else if ((response.statusCode > 499 || retryCodes.includes(response.statusCode)) && maxRetry > 0) {
maxRetry -= 1; // eslint-disable-line no-param-reassign
maxRetry -= 1;
setTimeout(() => {
fetch(url, { maxRetry, headers })
.then((d) => resolve(d))
Expand All @@ -37,7 +42,9 @@ const fetch = (url, { maxRetry = 10, headers } = { maxRetry: 10, headers: {} })
} else {
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => {
resolve(JSON.parse(body.join('')));
const d = body.join('');
logger.debug(`${url} :: ${hash(d)}`);
resolve(JSON.parse(d));
});
}
});
Expand Down
16 changes: 10 additions & 6 deletions src/utilities/WorldStateCache.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import EventEmitter from 'events';
import cron from 'cron';

import fetch from './Fetcher.js';
import logger from './Logger.js';
import { apiBase } from './CommonFunctions.js';

const Job = cron.CronJob;

const worldStateURLs = {
pc: `${apiBase}/pc?language=en`,
ps4: `${apiBase}/ps4?language=en`,
xb1: `${apiBase}/xb1?language=en`,
swi: `${apiBase}/swi?language=en`,
pc: `${apiBase}/pc/?language=en`,
ps4: `${apiBase}/ps4/?language=en`,
xb1: `${apiBase}/xb1/?language=en`,
swi: `${apiBase}/swi/?language=en`,
};

export default class WorldStateCache extends EventEmitter {
Expand All @@ -19,7 +23,7 @@ export default class WorldStateCache extends EventEmitter {
this.lastUpdated = undefined;
this.updating = undefined;
this.platform = platform;
this.updateInterval = setInterval(() => this.update(), timeout);
this.updateJob = new Job(`0 */${timeout / 60000} * * * *`, this.update.bind(this), undefined, true);
this.update();
}

Expand All @@ -33,7 +37,7 @@ export default class WorldStateCache extends EventEmitter {
async update() {
try {
this.lastUpdated = Date.now();
this.currentData = await fetch(`${this.url}&ts=${Date.now()}`);
this.currentData = await fetch(this.url);
this.updating = undefined;
this.emit('newData', this.platform, this.currentData);
return this.currentData;
Expand Down
8 changes: 4 additions & 4 deletions src/utilities/WorldStateClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ export default class WorldStateClient {
if (!WorldStateClient.#weapons) {
(async function init() {
if (!WorldStateClient.#weapons) {
WorldStateClient.#weapons = await fetch(`${apiBase}/weapons?language=en`);
const misc = (await fetch(`${apiBase}/items?language=en`)).filter((i) =>
WorldStateClient.#weapons = await fetch(`${apiBase}/weapons/?language=en`);
const misc = (await fetch(`${apiBase}/items/?language=en`)).filter((i) =>
i?.uniqueName?.includes('OperatorAmplifiers')
);
WorldStateClient.#weapons.push(...misc);
Expand All @@ -50,7 +50,7 @@ export default class WorldStateClient {
if (!WorldStateClient.#mods) {
(async function init() {
if (!WorldStateClient.#mods) {
WorldStateClient.#mods = await fetch(`${apiBase}/mods?language=en`);
WorldStateClient.#mods = await fetch(`${apiBase}/mods/?language=en`);
}
})();
}
Expand Down Expand Up @@ -134,7 +134,7 @@ export default class WorldStateClient {
this.#logger.error(`invalid request: ${endpoint} not an ENDPOINTS.WORLDSTATE`);
return undefined;
}
return fetch(`${apiBase}/${platform.toLowerCase()}/${endpoint}?language=${language}&ts=${Date.now()}`, {
return fetch(`${apiBase}/${platform.toLowerCase()}/${endpoint}/?language=${language}&ts=${Date.now()}`, {
headers: {
platform,
'Accept-Language': language,
Expand Down

0 comments on commit 30876ef

Please sign in to comment.