const got = require('@/utils/got'); const dayjs = require('dayjs'); const customParseFormat = require('dayjs/plugin/customParseFormat'); module.exports = async (ctx) => { dayjs.extend(customParseFormat); let yesterday = dayjs().subtract(1, 'day'); const dayBefore = yesterday.subtract(1, 'day').format('YYYY-MM-DD'); yesterday = yesterday.format('YYYY-MM-DD'); const guid = `${ctx.params.source}-${ctx.params.target}-${yesterday}`; const cache = await ctx.cache.get(guid); const link = 'https://transferwise.com/tools/exchange-rate-alerts/'; if (cache) { return Promise.resolve(JSON.parse(cache)); } else { const source = ctx.params.source.toUpperCase(); const target = ctx.params.target.toUpperCase(); const api = `https://api.transferwise.com/v1/rates?source=${source}&target=${target}&from=${dayBefore}&to=${dayjs().format('YYYY-MM-DDTHH:mm:ssZ')}&group=day`; const response = await got({ method: 'get', url: api, headers: { Referer: 'https://transferwise.com/tools/exchange-rate-alerts/', authorization: 'Basic OGNhN2FlMjUtOTNjNS00MmFlLThhYjQtMzlkZTFlOTQzZDEwOjliN2UzNmZkLWRjYjgtNDEwZS1hYzc3LTQ5NGRmYmEyZGJjZA==', 'Content-Type': 'application/json', }, }); const data = response.data; const yRate = data[1]; const byRate = data[2]; const trend = yRate.rate > byRate.rate; const diff = (yRate.rate - byRate.rate) / yRate.rate; const percent = (Math.abs(diff) * 100).toFixed(4); const title = `${source}/${target} ${trend ? '📈' : '📉'} @${yRate.rate} ${diff > 0 ? '' : '-'}${percent}%`; const description = `
| Date | Rate |
|---|---|
| ${yesterday} | ${yRate.rate} |
| ${dayBefore} | ${byRate.rate} |