Skip to content
This repository was archived by the owner on May 28, 2023. It is now read-only.

Commit 48a21a9

Browse files
committed
fix(pr): extract decorate backend url function
1 parent 10d7ba7 commit 48a21a9

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

src/api/catalog.ts

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import bodybuilder from 'bodybuilder'
99
import loadCustomFilters from '../helpers/loadCustomFilters'
1010
import { elasticsearch, SearchQuery } from 'storefront-query-builder'
1111
import { apiError } from '../lib/util'
12-
import querystring from 'querystring'
1312

1413
async function _cacheStorageHandler (config, result, hash, tags) {
1514
if (config.server.useOutputCache && cache) {
@@ -111,36 +110,6 @@ export default ({config, db}) => async function (req, res, body) {
111110
const s = Date.now()
112111
const reqHash = sha3_224(`${JSON.stringify(requestBody)}${req.url}`)
113112
const dynamicRequestHandler = () => {
114-
// filter request parameters
115-
if (config.elasticsearch.useRequestFilter && typeof config.entities[entityType] === 'object') {
116-
const urlParts = elasticBackendUrl.split('?')
117-
const { includeFields, excludeFields } = config.entities[entityType]
118-
119-
const filteredParams = Object.keys(req.query)
120-
.filter(key => !config.elasticsearch.requestParamsBlacklist.includes(key))
121-
.reduce((object, key) => {
122-
object[key] = req.query[key]
123-
return object
124-
}, {})
125-
126-
let _source_include = includeFields || []
127-
let _source_exclude = excludeFields || []
128-
129-
if (!config.elasticsearch.overwriteRequestSourceParams) {
130-
const requestSourceInclude = req.query._source_include || []
131-
const requestSourceExclude = req.query._source_exclude || []
132-
_source_include = [...includeFields, ...requestSourceInclude]
133-
_source_exclude = [...excludeFields, ...requestSourceExclude]
134-
}
135-
136-
const urlParams = {
137-
...filteredParams,
138-
_source_include,
139-
_source_exclude
140-
}
141-
elasticBackendUrl = `${urlParts[0]}?${querystring.stringify(urlParams)}`
142-
}
143-
144113
request({ // do the elasticsearch request
145114
uri: elasticBackendUrl,
146115
method: req.method,

src/lib/elastic.js

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const _ = require('lodash')
33
const fs = require('fs');
44
const jsonFile = require('jsonfile')
55
const es = require('@elastic/elasticsearch')
6+
const querystring = require('querystring')
67

78
function _updateQueryStringParameter (uri, key, value) {
89
var re = new RegExp('([?&])' + key + '=.*?(&|#|$)', 'i');
@@ -31,6 +32,39 @@ function adjustIndexName (indexName, entityType, config) {
3132
}
3233
}
3334

35+
function decorateBackendUrl (entityType, url, req, config) {
36+
if (config.elasticsearch.useRequestFilter && typeof config.entities[entityType] === 'object') {
37+
const urlParts = url.split('?')
38+
const { includeFields, excludeFields } = config.entities[entityType]
39+
40+
const filteredParams = Object.keys(req.query)
41+
.filter(key => !config.elasticsearch.requestParamsBlacklist.includes(key))
42+
.reduce((object, key) => {
43+
object[key] = req.query[key]
44+
return object
45+
}, {})
46+
47+
let _source_include = includeFields || []
48+
let _source_exclude = excludeFields || []
49+
50+
if (!config.elasticsearch.overwriteRequestSourceParams) {
51+
const requestSourceInclude = req.query._source_include || []
52+
const requestSourceExclude = req.query._source_exclude || []
53+
_source_include = [...includeFields, ...requestSourceInclude]
54+
_source_exclude = [...excludeFields, ...requestSourceExclude]
55+
}
56+
57+
const urlParams = {
58+
...filteredParams,
59+
_source_include,
60+
_source_exclude
61+
}
62+
url = `${urlParts[0]}?${querystring.stringify(urlParams)}`
63+
}
64+
65+
return url
66+
}
67+
3468
function adjustBackendProxyUrl (req, indexName, entityType, config) {
3569
let url
3670
const queryString = require('query-string');
@@ -58,7 +92,8 @@ function adjustBackendProxyUrl (req, indexName, entityType, config) {
5892
if (!url.startsWith('http')) {
5993
url = config.elasticsearch.protocol + '://' + url
6094
}
61-
return url
95+
96+
return decorateBackendUrl(entityType, url, req, config)
6297
}
6398

6499
function adjustQuery (esQuery, entityType, config) {

0 commit comments

Comments
 (0)