Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Register
Sign in
Toggle navigation
Menu
UPSMF
knowledge-mw-service
Commits
4853e358
Commit
4853e358
authored
6 years ago
by
loganathan.shanmugam@tarento.com
Committed by
kochhar
6 years ago
Browse files
Options
Download
Patches
Plain Diff
Issue #SB-4854 fix: Integrated config helper with meta filter
parent
c9dc3c7b
master
dependabot/npm_and_yarn/src/async-2.6.4
dependabot/npm_and_yarn/src/decode-uri-component-0.2.2
dependabot/npm_and_yarn/src/flat-and-mocha-5.0.2
dependabot/npm_and_yarn/src/handlebars-4.7.7
dependabot/npm_and_yarn/src/jsonwebtoken-9.0.0
dependabot/npm_and_yarn/src/lodash-4.17.21
dependabot/npm_and_yarn/src/minimist-and-project-sunbird/telemetry-sdk-and-handlebars-and-mkdirp-1.2.8
release-3.6.0
release-4.3.0
release-4.8.0
release-5.2.0
release-5.3.0
release-5.6.0
release-6.0.0
v1.13.3
v1.13
v1.12
v1.11.1
v1.11
v1.10.1
v1.10
v1.9
tmp-testPR
tmp-sunbird-bootcamp
tmp-rjshrjndrn-patch-1
tmp-revert-118-testPR
tmp-revert-110-logs
tmp-revert-99-revert-98-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-98-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-96-rjshrjndrn-patch-1
tmp-release-sonarcloud
tmp-release-2.6.0
tmp-release-2.3.0
tmp-release-2.1.1
tmp-release-2.1.0
tmp-release-2.1.0_pluginSearch
tmp-release-2.0.0
tmp-release-1.15
tmp-release-1.14.3
tmp-release-1.14
tmp-release-1.14-sp3
tmp-refactored-dev-deploy
tmp-master
tmp-loadtest
tmp-load-testing
tmp-jenkins-test
tmp-jenkins-pipeline
tmp-final-variable-refac
tmp-dial-assemble-api
tmp-content-update-read
tmp-circleci
release-5.6.0_RC1
release-5.2.0_RC1
release-4.8.5_RC1
release-4.8.0_RC2
release-4.8.0_RC1
release-4.3.0_RC1
release-3.8.0_RC3
release-3.8.0_RC2
release-3.8.0_RC1
release-3.7.0_RC2
release-3.7.0_RC1
release-3.6.0_RC1
release-3.2.0_RC2
release-3.2.0_RC1
release-3.1.0
release-3.1.0_RC2
release-3.1.0_RC1
release-3.0.1_RC1
release-3.0.0
release-3.0.0_RC1
release-2.10.0
release-2.10.0_RC2
release-2.10.0_RC1
release-2.9.0_RC3
release-2.9.0_RC2
release-2.9.0_RC1
release-2.8.0
release-2.8.0_RC4
release-2.8.0_RC3
release-2.8.0_RC2
release-2.8.0_RC1
release-2.7.0
release-2.7.0_RC2
release-2.7.0_RC1
release-2.6.0
release-2.6.0_RC4
release-2.6.0_RC3
release-2.6.0_RC2
release-2.6.0_RC1
release-2.3.0
release-2.3.0_RC2
release-2.3.0_RC1
release-2.1.1_RC1
release-2.1.0_RC2
release-2.1.0_RC1
release-2.0.0
release-2.0.0_RC5
release-2.0.0_RC4
release-2.0.0_RC3
release-2.0.0_RC2
release-2.0.0_RC1
release-1.15.0
release-1.15_RC7
release-1.15_RC6
release-1.15_RC5
release-1.15_RC4
release-1.15_RC3
release-1.15_RC2
release-1.15_RC1
release-1.14.0
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
src/app.js
+6
-3
src/app.js
src/contentMetaFilter.js
+67
-17
src/contentMetaFilter.js
src/helpers/configHelper.js
+2
-94
src/helpers/configHelper.js
src/package.json
+1
-0
src/package.json
src/test/helpers/configHelperSpec.js
+4
-23
src/test/helpers/configHelperSpec.js
with
80 additions
and
137 deletions
+80
-137
src/app.js
+
6
−
3
View file @
4853e358
...
@@ -11,7 +11,6 @@ var configUtil = require('sb-config-util')
...
@@ -11,7 +11,6 @@ var configUtil = require('sb-config-util')
const
contentProvider
=
require
(
'
sb_content_provider_util
'
)
const
contentProvider
=
require
(
'
sb_content_provider_util
'
)
var
contentMetaProvider
=
require
(
'
./contentMetaFilter
'
)
var
contentMetaProvider
=
require
(
'
./contentMetaFilter
'
)
var
configHelper
=
require
(
'
./helpers/configHelper
'
)
// TODO below configuration should to be refactored in a seperate file
// TODO below configuration should to be refactored in a seperate file
const
contentProviderConfigPath
=
path
.
join
(
__dirname
,
'
/config/contentProviderApiConfig.json
'
)
const
contentProviderConfigPath
=
path
.
join
(
__dirname
,
'
/config/contentProviderApiConfig.json
'
)
...
@@ -121,8 +120,12 @@ if (defaultChannel) {
...
@@ -121,8 +120,12 @@ if (defaultChannel) {
'
start service Eg: sunbird_environment = dev, sunbird_instance = sunbird
'
)
'
start service Eg: sunbird_environment = dev, sunbird_instance = sunbird
'
)
process
.
exit
(
1
)
process
.
exit
(
1
)
}
}
configUtil
.
setConfig
(
'
META_FILTER_REQUEST_JSON
'
,
contentMetaProvider
.
getMetaFilterConfig
())
contentMetaProvider
.
getMetaFilterConfig
().
then
((
configStr
)
=>
{
configHelper
.
updateConfig
()
configUtil
.
setConfig
(
'
META_FILTER_REQUEST_JSON
'
,
configStr
)
}).
catch
((
err
)
=>
{
console
.
log
(
'
error in getting meta filters
'
,
err
)
process
.
exit
(
1
)
})
})
})
}
else
{
}
else
{
console
.
log
(
'
error in fetching default channel
'
,
defaultChannel
,
err
,
res
)
console
.
log
(
'
error in fetching default channel
'
,
defaultChannel
,
err
,
res
)
...
...
This diff is collapsed.
Click to expand it.
src/contentMetaFilter.js
+
67
−
17
View file @
4853e358
...
@@ -3,29 +3,67 @@ var LOG = require('sb_logger_util')
...
@@ -3,29 +3,67 @@ var LOG = require('sb_logger_util')
var
path
=
require
(
'
path
'
)
var
path
=
require
(
'
path
'
)
var
filename
=
path
.
basename
(
__filename
)
var
filename
=
path
.
basename
(
__filename
)
var
_
=
require
(
'
lodash
'
)
var
_
=
require
(
'
lodash
'
)
var
configHelper
=
require
(
'
./helpers/configHelper.js
'
)
var
cron
=
require
(
'
node-cron
'
)
var
channelRefreshCronStr
=
process
.
env
.
sunbird_content_service_channel_refresh_cron
var
ischannelRefreshEnabled
=
false
var
async
=
require
(
'
asyncawait/async
'
);
var
await
=
require
(
'
asyncawait/await
'
);
// Function to generate the Config Array
// Function to generate the Config Array
function
generateConfigString
(
metaFiltersArray
)
{
var
configArray
=
{}
var
generateConfigString
=
async
(
function
(
metaFiltersArray
)
{
_
.
forOwn
(
metaFiltersArray
,
function
(
value
,
key
)
{
var
configArray
=
{}
const
allowedMetadata
=
value
[
0
]
_
.
forOwn
(
metaFiltersArray
,
function
(
value
,
key
)
{
const
blackListedMetadata
=
value
[
1
]
var
allowedMetadata
=
value
[
0
]
if
((
allowedMetadata
&&
allowedMetadata
.
length
>
0
)
&&
(
blackListedMetadata
&&
blackListedMetadata
.
length
>
0
))
{
var
blackListedMetadata
=
value
[
1
]
configArray
[
key
]
=
_
.
difference
(
allowedMetadata
,
blackListedMetadata
)
if
(
key
===
'
channel
'
&&
_
.
includes
(
allowedMetadata
,
'
$.instance.all
'
))
{
}
else
if
(
allowedMetadata
&&
allowedMetadata
.
length
>
0
)
{
if
(
channelRefreshCronStr
&&
!
ischannelRefreshEnabled
)
{
configArray
[
key
]
=
allowedMetadata
setChannelRefreshTask
()
}
else
if
(
blackListedMetadata
&&
blackListedMetadata
.
length
>
0
)
{
ischannelRefreshEnabled
=
true
configArray
[
key
]
=
{
'
ne
'
:
blackListedMetadata
}
}
}
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
})
filename
,
'
generateConfigString
'
,
'
allowed channels
'
,
allowedMetadata
))
var
allChannels
=
await
(
configHelper
.
getAllChannelsFromAPI
())
allowedMetadata
=
_
.
pull
(
allowedMetadata
,
'
$.instance.all
'
).
concat
(
allChannels
)
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
generateConfigString
'
,
'
all whitelisted channels count
'
,
allowedMetadata
.
length
))
configArray
[
key
]
=
getconfigStringFromMeta
(
allowedMetadata
,
blackListedMetadata
)
}
else
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
generateConfigString
'
,
'
allowed metadata
'
,
allowedMetadata
))
configArray
[
key
]
=
getconfigStringFromMeta
(
allowedMetadata
,
blackListedMetadata
)
}
})
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
generateConfigString
'
,
'
config array
'
,
configArray
))
return
configArray
})
/**
* This function generates the config string for given allowed and blacklisted channels
* @param allowedMetadata array of metadata item to be allowed in filters
* @param blackListedMetadata array of metadata item to be blacklisted or ignored
* @returns Js object or array which contains the allowed whitelisted meta items
*/
function
getconfigStringFromMeta
(
allowedMetadata
,
blackListedMetadata
)
{
var
configString
=
{}
if
((
allowedMetadata
&&
allowedMetadata
.
length
>
0
)
&&
(
blackListedMetadata
&&
blackListedMetadata
.
length
>
0
))
{
configString
=
_
.
difference
(
allowedMetadata
,
blackListedMetadata
)
}
else
if
(
allowedMetadata
&&
allowedMetadata
.
length
>
0
)
{
configString
=
allowedMetadata
}
else
if
(
blackListedMetadata
&&
blackListedMetadata
.
length
>
0
)
{
configString
=
{
'
ne
'
:
blackListedMetadata
}
}
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
get
FilterConfig
'
,
'
config
array
'
,
config
Array
))
filename
,
'
get
configStringFromMeta
'
,
'
config
string
'
,
config
String
))
return
config
Array
return
config
String
}
}
// function to generate the search filter and return JSON Object
// function to generate the search filter and return JSON Object
function
getMetaFilterConfig
()
{
function
getMetaFilterConfig
()
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getFilterConfig
'
,
'
environment info
'
,
process
.
env
))
filename
,
'
get
Meta
FilterConfig
'
,
'
environment info
'
,
process
.
env
))
var
allowedChannels
=
process
.
env
.
sunbird_content_service_whitelisted_channels
var
allowedChannels
=
process
.
env
.
sunbird_content_service_whitelisted_channels
?
process
.
env
.
sunbird_content_service_whitelisted_channels
.
split
(
'
,
'
)
:
[]
?
process
.
env
.
sunbird_content_service_whitelisted_channels
.
split
(
'
,
'
)
:
[]
var
blackListedChannels
=
process
.
env
.
sunbird_content_service_blacklisted_channels
var
blackListedChannels
=
process
.
env
.
sunbird_content_service_blacklisted_channels
...
@@ -70,4 +108,16 @@ function getFilterJSONfromConfigService () {
...
@@ -70,4 +108,16 @@ function getFilterJSONfromConfigService () {
throw
new
Error
(
'
Config service is unavailable
'
)
throw
new
Error
(
'
Config service is unavailable
'
)
}
}
/**
* This function executes the scheduler cron job to refresh the whitelisted
* channels based given cron interval string 'channelRefreshCronStr'
*/
function
setChannelRefreshTask
()
{
cron
.
schedule
(
channelRefreshCronStr
,
function
()
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
setChannelRefreshTask
'
,
'
running scheduler task
'
,
channelRefreshCronStr
))
getMetaFilterConfig
()
})
}
module
.
exports
.
getMetaFilterConfig
=
getMetaFilterConfig
module
.
exports
.
getMetaFilterConfig
=
getMetaFilterConfig
This diff is collapsed.
Click to expand it.
src/helpers/configHelper.js
+
2
−
94
View file @
4853e358
...
@@ -5,12 +5,6 @@ var LOG = require('sb_logger_util')
...
@@ -5,12 +5,6 @@ var LOG = require('sb_logger_util')
const
contentProvider
=
require
(
'
sb_content_provider_util
'
)
const
contentProvider
=
require
(
'
sb_content_provider_util
'
)
var
async
=
require
(
'
async
'
)
var
async
=
require
(
'
async
'
)
var
_
=
require
(
'
lodash
'
)
var
_
=
require
(
'
lodash
'
)
var
configUtil
=
require
(
'
sb-config-util
'
)
var
channelRefreshCronStr
=
process
.
env
.
sunbird_content_service_channel_refresh_cron
var
cron
=
require
(
'
node-cron
'
)
const
whiteListedChannelList
=
process
.
env
.
sunbird_content_service_whitelisted_channels
const
blackListedChannelList
=
process
.
env
.
sunbird_content_service_blacklisted_channels
var
ischannelRefreshEnabled
=
false
/**
/**
* This function executes the org search lms API to get all orgs
* This function executes the org search lms API to get all orgs
...
@@ -31,67 +25,9 @@ function getRootOrgs (requestObj, cb) {
...
@@ -31,67 +25,9 @@ function getRootOrgs (requestObj, cb) {
})
})
}
}
/**
* This function returns the config string based on condition for channel filters which
* contains the whitelisted channels
* @returns Promise which contains the allowed whitelisted channels
*/
function
getFilterConfig
()
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getFilterConfig
'
,
'
environment info
'
,
process
.
env
))
var
allowedChannels
=
whiteListedChannelList
?
whiteListedChannelList
.
split
(
'
,
'
)
:
[]
var
blackListedChannels
=
blackListedChannelList
?
blackListedChannelList
.
split
(
'
,
'
)
:
[]
if
(
_
.
includes
(
allowedChannels
,
'
$.instance.all
'
))
{
if
(
channelRefreshCronStr
&&
!
ischannelRefreshEnabled
)
{
setChannelRefreshTask
()
ischannelRefreshEnabled
=
true
}
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getFilterConfig
'
,
'
allowed channels
'
,
allowedChannels
))
getAllChannelsFromAPI
().
then
(
allChannels
=>
{
allowedChannels
=
_
.
pull
(
allowedChannels
,
'
$.instance.all
'
).
concat
(
allChannels
)
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getFilterConfig
'
,
'
all whitelisted channels count
'
,
allowedChannels
.
length
))
resolve
(
getconfigStringFromChannels
(
allowedChannels
,
blackListedChannels
))
},
(
err
)
=>
{
console
.
log
(
err
)
LOG
.
error
(
utilsService
.
getLoggerData
({},
'
ERROR
'
,
filename
,
'
getFilterConfig
'
,
'
getAllChannelsFromAPI callback
'
,
err
))
reject
(
err
)
})
}
else
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getFilterConfig
'
,
'
allowed channels
'
,
allowedChannels
))
resolve
(
getconfigStringFromChannels
(
allowedChannels
,
blackListedChannels
))
}
})
}
/**
* This function generates the config string for given allowed and blacklisted channels
* @param allowedChannels array of channels to be allowed in filters
* @param blacklistedchannels array of channels to be blacklisted or ignored
* @returns Js object or array which contains the allowed whitelisted channels
*/
function
getconfigStringFromChannels
(
allowedChannels
,
blackListedChannels
)
{
var
configString
=
{}
if
((
allowedChannels
&&
allowedChannels
.
length
>
0
)
&&
(
blackListedChannels
&&
blackListedChannels
.
length
>
0
))
{
configString
=
_
.
difference
(
allowedChannels
,
blackListedChannels
)
}
else
if
(
allowedChannels
&&
allowedChannels
.
length
>
0
)
{
configString
=
allowedChannels
}
else
if
(
blackListedChannels
&&
blackListedChannels
.
length
>
0
)
{
configString
=
{
'
ne
'
:
blackListedChannels
}
}
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
getconfigStringFromChannels
'
,
'
config string
'
,
configString
))
return
configString
}
/**
/**
* This method gets all channels through 'getRootOrgs' method response
* This method gets all channels through 'getRootOrgs' method response
* data asynchronously and return callback
* data asynchronously and return back a promise
* @param cb callback method which takes error and allchannels as param
* @returns promise
* @returns promise
*/
*/
function
getAllChannelsFromAPI
()
{
function
getAllChannelsFromAPI
()
{
...
@@ -148,34 +84,6 @@ function getAllChannelsFromAPI () {
...
@@ -148,34 +84,6 @@ function getAllChannelsFromAPI () {
})
})
}
}
/**
* This method sets the given channel filter value to the config utils
* @param configString configstring which contains the whitelisted channels
*/
function
updateConfig
()
{
getFilterConfig
().
then
((
configString
)
=>
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
updateConfig
'
,
'
config string
'
,
configString
))
configUtil
.
setConfig
(
'
CHANNEL_FILTER_QUERY_STRING
'
,
configString
)
},
(
err
)
=>
{
LOG
.
error
(
utilsService
.
getLoggerData
({},
'
ERROR
'
,
filename
,
'
updateConfig
'
,
'
error
'
,
err
))
})
}
/**
* This function executes the scheduler cron job to refresh the whitelisted
* channels based given cron interval string 'channelRefreshCronStr'
*/
function
setChannelRefreshTask
()
{
cron
.
schedule
(
channelRefreshCronStr
,
function
()
{
LOG
.
info
(
utilsService
.
getLoggerData
({},
'
INFO
'
,
filename
,
'
setChannelRefreshTask
'
,
'
running scheduler task
'
,
channelRefreshCronStr
))
updateConfig
()
})
}
module
.
exports
=
{
module
.
exports
=
{
updateConfig
:
updateConfig
,
getAllChannelsFromAPI
:
getAllChannelsFromAPI
getFilterConfig
:
getFilterConfig
}
}
This diff is collapsed.
Click to expand it.
src/package.json
+
1
−
0
View file @
4853e358
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
"license"
:
"ISC"
,
"license"
:
"ISC"
,
"dependencies"
:
{
"dependencies"
:
{
"async"
:
"^2.4.0"
,
"async"
:
"^2.4.0"
,
"asyncawait"
:
"^1.0.7"
,
"azure-storage"
:
"2.7.0"
,
"azure-storage"
:
"2.7.0"
,
"body-parser"
:
"^1.14.2"
,
"body-parser"
:
"^1.14.2"
,
"cassandra-driver"
:
"^3.4.1"
,
"cassandra-driver"
:
"^3.4.1"
,
...
...
This diff is collapsed.
Click to expand it.
src/test/helpers/configHelperSpec.js
+
4
−
23
View file @
4853e358
var
configHelper
=
require
(
'
../../helpers/configHelper
'
)
var
configHelper
=
require
(
'
../../helpers/configHelper
'
)
describe
(
'
configuration helper methods
'
,
function
()
{
describe
(
'
configuration helper methods
'
,
function
()
{
it
(
'
should set the configuration
'
,
function
()
{
it
(
'
should get all the channels
'
,
function
()
{
spyOn
(
configHelper
,
'
getFilterConfig
'
)
spyOn
(
configHelper
,
'
getRootOrgs
'
)
configHelper
.
updateConfig
()
configHelper
.
getAllChannelsFromAPI
().
then
((
configStr
)
=>
{
expect
(
configHelper
.
getFilterConfig
).
toHaveBeenCalled
()
expect
(
configStr
.
length
).
toBeGreaterThanOrEqual
(
0
)
})
})
describe
(
'
configuration string
'
,
function
()
{
it
(
'
should return the config string with all channels when $.instance.all is present
'
,
function
(
done
)
{
process
.
env
.
sunbird_content_service_whitelisted_channels
=
'
505c7c48ac6dc1edc9b08f21db5a571d,b00bc992ef25f1a9a8d63291e20efc8d,$.instance.all
'
process
.
env
.
sunbird_content_service_blacklisted_channels
=
'
b00bc992ef25f1a9a8d63291e20efc8d
'
configHelper
.
getFilterConfig
().
then
(
function
(
configStr
)
{
expect
(
configStr
.
length
).
toBeGreaterThanOrEqual
(
process
.
env
.
sunbird_content_service_whitelisted_channels
.
length
)
done
()
})
})
it
(
'
should return the config string with whitelisted channels
'
,
function
(
done
)
{
process
.
env
.
sunbird_content_service_whitelisted_channels
=
'
505c7c48ac6dc1edc9b08f21db5a571d,b00bc992ef25f1a9a8d63291e20efc8d
'
process
.
env
.
sunbird_content_service_blacklisted_channels
=
'
b00bc992ef25f1a9a8d63291e20efc8d
'
configHelper
.
getFilterConfig
().
then
(
function
(
configStr
)
{
expect
(
configStr
.
length
).
toBeLessThanOrEqual
(
process
.
env
.
sunbird_content_service_whitelisted_channels
.
length
)
done
()
})
})
})
})
})
})
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets