import axios from 'axios' import { Client as NotionClient } from '@notionhq/client' const RATE_URL = 'https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml' const RATE_REGEXP = //g export default { returnFailed(code, message) { process.stdout.write(JSON.stringify({ complete: 1, code: code, description: message }) + "\n") }, returnSuccess() { process.stdout.write(JSON.stringify({ complete: 1, code: 0 }) + "\n") }, async fetchExchangeRateData(baseCurrency) { if (baseCurrency === null) { baseCurrency = 'CNY' } const result = { EUR: 1.0 } const resp = await axios.get(RATE_URL) const matches = [...resp.data.matchAll(RATE_REGEXP)] let baseRate = .0 matches.forEach(item => { if (baseCurrency === item[1]) { baseRate = parseFloat(item[2]) } result[item[1]] = parseFloat(item[2]) }) for (let key in result) { result[key] = baseRate / result[key] } return result }, async updateRate(NOTION_KEY, DATABASE_ID, rateMap) { const notion = new NotionClient({auth: NOTION_KEY}) const database = await notion.databases.query({database_id: DATABASE_ID}) for (const page of database.results) { let currency = page.properties['Currency']['title'][0]['plain_text'] if (!currency in rateMap) { continue; } await notion.pages.update({ page_id: page.id, properties: { Rate: { number: rateMap[currency] } } }) } } }