From 09aa6c207435fb04b5597851b6911f25fbeeb7d7 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Mon, 20 Jun 2022 09:33:26 +0300 Subject: [PATCH 1/8] Use inner max limit for internal public api calls --- .../loc.api/helpers/limit-param.helpers.js | 17 +++++++++---- workers/loc.api/helpers/prepare-response.js | 25 ++++++++++++------- workers/loc.api/service.report.js | 23 ++++++++++++----- 3 files changed, 45 insertions(+), 20 deletions(-) diff --git a/workers/loc.api/helpers/limit-param.helpers.js b/workers/loc.api/helpers/limit-param.helpers.js index 172377a5..e842eb43 100644 --- a/workers/loc.api/helpers/limit-param.helpers.js +++ b/workers/loc.api/helpers/limit-param.helpers.js @@ -36,19 +36,26 @@ const getMethodLimit = (sendLimit, method, methodsLimits = {}) => { } = selectedMethod const { isMax, - isInnerMax + isInnerMax, + isNotMoreThanInnerMax } = { ...sendLimit } + const limit = Number.isInteger(sendLimit?.limit) + ? sendLimit?.limit + : sendLimit + const base = Number.isInteger(limit) + ? limit + : defVal + if (isInnerMax) { return innerMax } if (isMax) { return max } - - const base = Number.isInteger(sendLimit) - ? sendLimit - : defVal + if (isNotMoreThanInnerMax) { + return getLimitNotMoreThan(base, innerMax) + } return getLimitNotMoreThan(base, max) } diff --git a/workers/loc.api/helpers/prepare-response.js b/workers/loc.api/helpers/prepare-response.js index de4de336..61ffdfb8 100644 --- a/workers/loc.api/helpers/prepare-response.js +++ b/workers/loc.api/helpers/prepare-response.js @@ -250,10 +250,10 @@ const _getParams = ( } const { params } = { ...args } - const { isInnerMax } = { ...opts } + const { isInnerMax, isNotMoreThanInnerMax } = { ...opts } const limit = isInnerMax ? { isInnerMax } - : params.limit + : { limit: params.limit, isNotMoreThanInnerMax } const paramsObj = { ...cloneDeep(params), end: getDateNotMoreNow(params.end), @@ -329,11 +329,15 @@ const _isNotContainedSameMts = ( return false } - const { isMax = true, isInnerMax } = { ...opts } + const { + isMax = true, + isInnerMax, + isNotMoreThanInnerMax + } = { ...opts } const firstElem = { ...apiRes[0] } const mts = firstElem[datePropName] const methodLimit = getMethodLimit( - { isMax, isInnerMax }, + { isMax, isInnerMax, isNotMoreThanInnerMax }, methodApi ) @@ -484,7 +488,8 @@ const prepareApiResponse = ( datePropName, symbPropName, requireFields, - parseFieldsFn + parseFieldsFn, + isNotMoreThanInnerMax } = { ...params } const schemaName = _getSchemaNameByMethodName(methodApi) @@ -498,17 +503,19 @@ const prepareApiResponse = ( getREST, args, methodApi, - symbPropName + symbPropName, + { isNotMoreThanInnerMax } ) const isNotContainedSameMts = _isNotContainedSameMts( resData.apiRes, methodApi, datePropName, - resData.paramsObj.limit + resData.paramsObj.limit, + { isNotMoreThanInnerMax } ) const opts = isNotContainedSameMts - ? { isMax: true } - : { isInnerMax: true } + ? { isMax: true, isNotMoreThanInnerMax } + : { isInnerMax: true, isNotMoreThanInnerMax } const { apiRes, paramsObj diff --git a/workers/loc.api/service.report.js b/workers/loc.api/service.report.js index bb13eba3..70ddc220 100644 --- a/workers/loc.api/service.report.js +++ b/workers/loc.api/service.report.js @@ -226,7 +226,11 @@ class ReportService extends Api { getTickersHistory (space, args, cb) { return this._responder(() => { - const { symbol: s } = { ...args.params } + const { + params, + isNotMoreThanInnerMax + } = args ?? {} + const { symbol: s } = params ?? {} const symbol = s && typeof s === 'string' ? [s] : s @@ -244,7 +248,8 @@ class ReportService extends Api { 'tickersHistory', { datePropName: 'mtsUpdate', - requireFields: ['symbol'] + requireFields: ['symbol'], + isNotMoreThanInnerMax } ) }, 'getTickersHistory', args, cb) @@ -353,6 +358,7 @@ class ReportService extends Api { getPublicTrades (space, args, cb) { return this._responder(() => { + const { isNotMoreThanInnerMax } = args ?? {} const _args = { ...args, auth: {} @@ -362,7 +368,8 @@ class ReportService extends Api { _args, 'publicTrades', { - datePropName: 'mts' + datePropName: 'mts', + isNotMoreThanInnerMax } ) }, 'getPublicTrades', args, cb) @@ -399,11 +406,14 @@ class ReportService extends Api { getCandles (space, args, cb) { return this._responder(() => { - const { params } = { ...args } + const { + params, + isNotMoreThanInnerMax + } = args ?? {} const { section = 'hist', timeframe = '1D' - } = { ...params } + } = params ?? {} const _args = { ...args, auth: {}, @@ -418,7 +428,8 @@ class ReportService extends Api { _args, 'candles', { - datePropName: 'mts' + datePropName: 'mts', + isNotMoreThanInnerMax } ) }, 'getCandles', args, cb) From 510c16536d4871174227fde3e3f4caa9a69ef0a3 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 29 Jun 2022 12:45:43 +0300 Subject: [PATCH 2/8] Add supported languages list --- workers/loc.api/queue/send-mail/languages.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 workers/loc.api/queue/send-mail/languages.js diff --git a/workers/loc.api/queue/send-mail/languages.js b/workers/loc.api/queue/send-mail/languages.js new file mode 100644 index 00000000..12013361 --- /dev/null +++ b/workers/loc.api/queue/send-mail/languages.js @@ -0,0 +1,16 @@ +'use strict' + +module.exports = { + en: 'en', + 'en-US': 'en', + ru: 'ru', + 'zh-CN': 'zh-CN', + 'zh-TW': 'zh-TW', + tr: 'tr', + 'tr-TR': 'tr', + es: 'es-EM', + 'es-EM': 'es-EM', + pt: 'pt-BR', + 'pt-PT': 'pt-BR', + 'pt-BR': 'pt-BR' +} From e3ff7e6d4db7425c85966259a04640fec7e372e1 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 29 Jun 2022 12:46:26 +0300 Subject: [PATCH 3/8] Extend request language param validation list --- workers/loc.api/helpers/schema.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/helpers/schema.js b/workers/loc.api/helpers/schema.js index c7fe90b2..61dc6529 100644 --- a/workers/loc.api/helpers/schema.js +++ b/workers/loc.api/helpers/schema.js @@ -56,7 +56,20 @@ const dateFormat = { } const language = { type: 'string', - enum: ['en', 'ru', 'zh-CN', 'zh-TW', 'es-EM', 'tr', 'pt-PT'] + enum: [ + 'en', + 'en-US', + 'ru', + 'zh-CN', + 'zh-TW', + 'tr', + 'tr-TR', + 'es', + 'es-EM', + 'pt', + 'pt-PT', + 'pt-BR' + ] } const paramsSchemaForPayInvoiceList = { From 8df6f40672a183fa17cf32e13f43d6710d60fccd Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 29 Jun 2022 12:47:02 +0300 Subject: [PATCH 4/8] Change translation name from pt-PT to pt-BR --- workers/loc.api/queue/send-mail/translations/email.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/loc.api/queue/send-mail/translations/email.yml b/workers/loc.api/queue/send-mail/translations/email.yml index 78c6b5a9..8f6dad5f 100644 --- a/workers/loc.api/queue/send-mail/translations/email.yml +++ b/workers/loc.api/queue/send-mail/translations/email.yml @@ -82,7 +82,7 @@ tr: download: indir pgpSignature: bir PGP dijital imza dosyası -pt-PT: +pt-BR: template: subject: Seu relatório está pronto btnText: Baixar CSV From a7d49e7838283e9bf292c1a5287155b217bc76f0 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Wed, 29 Jun 2022 12:47:26 +0300 Subject: [PATCH 5/8] Add aliases to languages to follow ui --- workers/loc.api/queue/send-mail/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/workers/loc.api/queue/send-mail/index.js b/workers/loc.api/queue/send-mail/index.js index 52831fec..fa1c7630 100644 --- a/workers/loc.api/queue/send-mail/index.js +++ b/workers/loc.api/queue/send-mail/index.js @@ -5,6 +5,8 @@ const fs = require('fs') const pug = require('pug') const yaml = require('js-yaml') +const LANGUAGES = require('./languages') + const basePathToViews = path.join(__dirname, 'views') const pathToTrans = path.join( __dirname, @@ -79,7 +81,8 @@ module.exports = (grcBfxReq) => { presigned_url: url, language = 'en' } = { ...data } - const translate = _getTranslator(language) + const normLang = LANGUAGES?.[language] ?? 'en' + const translate = _getTranslator(normLang) const subject = translate( configs.subject, 'template.subject' @@ -104,7 +107,7 @@ module.exports = (grcBfxReq) => { text, subject, button, - language + language: normLang } return grcBfxReq({ From 28b364fe32c5e0b31d6413f86089b9e5afc2e06e Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 30 Jun 2022 13:39:38 +0300 Subject: [PATCH 6/8] Add orders metadata to csv --- workers/loc.api/generate-csv/csv.job.data.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workers/loc.api/generate-csv/csv.job.data.js b/workers/loc.api/generate-csv/csv.job.data.js index e381cc5e..d015e874 100644 --- a/workers/loc.api/generate-csv/csv.job.data.js +++ b/workers/loc.api/generate-csv/csv.job.data.js @@ -654,7 +654,8 @@ class CsvJobData { priceTrailing: 'TRAILING PRICE', mtsCreate: 'CREATED', mtsUpdate: 'UPDATED', - status: 'STATUS' + status: 'STATUS', + meta: 'METADATA' }, formatSettings: { mtsUpdate: 'date', From 2649523def093d93cd4f4f769ef203bebeee30a5 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 30 Jun 2022 13:40:37 +0300 Subject: [PATCH 7/8] Add orders metadata to mock data --- test/helpers/mock-data.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/helpers/mock-data.js b/test/helpers/mock-data.js index 0c9f215a..24884da3 100644 --- a/test/helpers/mock-data.js +++ b/test/helpers/mock-data.js @@ -305,7 +305,13 @@ module.exports = new Map([ null, false, null, - null + null, + null, + null, + 'BFX', + null, + null, + { _$F7: 1 } ]] ], [ From 9c5497d8211762671fa0e064068e971704bf1693 Mon Sep 17 00:00:00 2001 From: Vladimir Voronkov Date: Thu, 30 Jun 2022 13:40:57 +0300 Subject: [PATCH 8/8] Add orders metadata to test case --- test/1-api.spec.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/1-api.spec.js b/test/1-api.spec.js index 7310393b..e16c3e77 100644 --- a/test/1-api.spec.js +++ b/test/1-api.spec.js @@ -1356,7 +1356,9 @@ describe('API', () => { 'priceAuxLimit', 'notify', 'placedId', - 'amountExecuted' + 'amountExecuted', + 'routing', + 'meta' ]) })