Compare commits

...

2 Commits
5.7.0 ... 5.8.0

Author SHA1 Message Date
weakmap@gmail.com
265ea58bab correct version 2022-12-11 20:08:40 +01:00
weakmap@gmail.com
ab5ee59d72 ugrading dependencies | fixing tests | supporting multiple provider of the same type 2022-12-11 20:07:18 +01:00
14 changed files with 1231 additions and 1272 deletions

View File

@@ -2,6 +2,12 @@ Newer release changelog see https://github.com/orangecoding/fredy/releases
------------ ------------
###### [V5.5.0]
- Upgrading dependencies
- fixing provider
- allow multiple instances of 1 provider
- __BREAKING__: Minimum node version is now 16
###### [V5.4.6] ###### [V5.4.6]
- Adding Instana node.js monitoring - Adding Instana node.js monitoring
- -

View File

@@ -31,33 +31,20 @@ setInterval(
if (isDuringWorkingHoursOrNotSet) { if (isDuringWorkingHoursOrNotSet) {
config.lastRun = Date.now(); config.lastRun = Date.now();
const fetchedProvider = provider
.filter((provider) => provider.endsWith('.js'))
.map((pro) => require(`${path}/${pro}`));
jobStorage jobStorage
.getJobs() .getJobs()
.filter((job) => job.enabled) .filter((job) => job.enabled)
.forEach((job) => { .forEach((job) => {
const providerIds = job.provider.map((provider) => provider.id); job.provider
.filter((p) => fetchedProvider.find((fp) => fp.metaInformation.id === p.id) != null)
provider .forEach(async (prov) => {
.filter((provider) => provider.endsWith('.js')) const pro = fetchedProvider.find((fp) => fp.metaInformation.id === prov.id);
.map((pro) => require(`${path}/${pro}`)) pro.init(prov, job.blacklist);
.filter((provider) => providerIds.indexOf(provider.metaInformation.id) !== -1) await new FredyRuntime(pro.config, job.notificationAdapter, prov.id, job.id, similarityCache).execute();
.forEach(async (pro) => {
const providerId = pro.metaInformation.id;
if (providerId == null || providerId.length === 0) {
throw new Error('Provider id must not be empty. => ' + pro);
}
const providerConfig = job.provider.find((jobProvider) => jobProvider.id === providerId);
if (providerConfig == null) {
throw new Error(`Provider Config for provider with id ${providerId} not found.`);
}
pro.init(providerConfig, job.blacklist);
await new FredyRuntime(
pro.config,
job.notificationAdapter,
providerId,
job.id,
similarityCache
).execute();
setLastJobExecution(job.id); setLastJobExecution(job.id);
}); });
}); });

View File

@@ -1,6 +1,6 @@
{ {
"name": "fredy", "name": "fredy",
"version": "5.7.0", "version": "5.8.0",
"description": "[F]ind [R]eal [E]states [d]amn eas[y].", "description": "[F]ind [R]eal [E]states [d]amn eas[y].",
"scripts": { "scripts": {
"start": "node index.js", "start": "node index.js",
@@ -47,7 +47,7 @@
}, },
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=14.0.0", "node": ">=16.0.0",
"npm": ">=7.0.0" "npm": ">=7.0.0"
}, },
"browserslist": [ "browserslist": [
@@ -59,61 +59,61 @@
"dependencies": { "dependencies": {
"@rematch/core": "2.2.0", "@rematch/core": "2.2.0",
"@rematch/loading": "2.1.2", "@rematch/loading": "2.1.2",
"@sendgrid/mail": "7.6.2", "@sendgrid/mail": "7.7.0",
"axios": "0.27.2", "axios": "0.27.2",
"better-sqlite3": "7.5.1", "better-sqlite3": "8.0.1",
"body-parser": "1.20.0", "body-parser": "1.20.1",
"cookie-session": "2.0.0", "cookie-session": "2.0.0",
"handlebars": "4.7.7", "handlebars": "4.7.7",
"highcharts": "10.0.0", "highcharts": "10.3.2",
"highcharts-react-official": "3.1.0", "highcharts-react-official": "3.1.0",
"lowdb": "1.0.0", "lowdb": "1.0.0",
"markdown": "^0.5.0", "markdown": "^0.5.0",
"nanoid": "3.3.3", "nanoid": "3.3.3",
"node-mailjet": "3.3.13", "node-mailjet": "3.3.13",
"query-string": "7.1.1", "query-string": "7.1.3",
"react": "17.0.2", "react": "17.0.2",
"react-dom": "17.0.2", "react-dom": "17.0.2",
"react-redux": "8.0.1", "react-redux": "8.0.5",
"react-router": "5.2.1", "react-router": "5.2.1",
"react-router-dom": "5.3.0", "react-router-dom": "5.3.0",
"react-switch": "^6.0.0", "react-switch": "6.0.0",
"redux": "4.2.0", "redux": "4.2.0",
"redux-thunk": "2.4.1", "redux-thunk": "2.4.2",
"restana": "4.9.4", "restana": "4.9.7",
"semantic-ui-react": "2.1.2", "semantic-ui-react": "2.1.4",
"serve-static": "1.15.0", "serve-static": "1.15.0",
"slack": "11.0.2", "slack": "11.0.2",
"string-similarity": "^4.0.4", "string-similarity": "^4.0.4",
"x-ray": "2.3.4" "x-ray": "2.3.4"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.17.9", "@babel/core": "7.20.5",
"@babel/preset-env": "7.16.11", "@babel/preset-env": "7.20.2",
"@babel/preset-react": "7.16.7", "@babel/preset-react": "7.18.6",
"babel-eslint": "10.1.0", "babel-eslint": "10.1.0",
"babel-loader": "8.2.5", "babel-loader": "8.2.5",
"chai": "4.3.6", "chai": "4.3.7",
"clean-webpack-plugin": "4.0.0", "clean-webpack-plugin": "4.0.0",
"copy-webpack-plugin": "10.2.4", "copy-webpack-plugin": "10.2.4",
"css-loader": "6.7.1", "css-loader": "6.7.2",
"eslint": "7.32.0", "eslint": "7.32.0",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "8.5.0",
"eslint-plugin-react": "7.29.4", "eslint-plugin-react": "7.31.11",
"file-loader": "6.2.0", "file-loader": "6.2.0",
"history": "5.3.0", "history": "5.3.0",
"husky": "4.3.8", "husky": "4.3.8",
"less": "4.1.2", "less": "4.1.3",
"less-loader": "10.2.0", "less-loader": "10.2.0",
"lint-staged": "12.4.1", "lint-staged": "12.4.1",
"mocha": "9.2.2", "mocha": "9.2.2",
"prettier": "2.6.2", "prettier": "2.8.1",
"proxyquire": "2.1.3", "proxyquire": "2.1.3",
"redux-logger": "3.0.6", "redux-logger": "3.0.6",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",
"style-loader": "3.3.1", "style-loader": "3.3.1",
"url-loader": "4.1.1", "url-loader": "4.1.1",
"webpack": "5.72.0", "webpack": "5.75.0",
"webpack-cli": "4.9.2", "webpack-cli": "4.9.2",
"webpack-dev-server": "3.11.2", "webpack-dev-server": "3.11.2",
"webpack-merge": "5.8.0" "webpack-merge": "5.8.0"

View File

@@ -22,7 +22,7 @@ describe('#einsAImmobilien testsuite()', () => {
it('should test einsAImmobilien provider', async () => { it('should test einsAImmobilien provider', async () => {
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'einsAImmobilien', similarityCache);
fredy.execute().then((listings) => { fredy.execute().then((listings) => {
expect(listings).to.be.a('array'); expect(listings).to.be.a('array');

View File

@@ -21,7 +21,7 @@ describe('#immonet testsuite()', () => {
it('should test immonet provider', async () => { it('should test immonet provider', async () => {
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'immonet', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');

View File

@@ -29,7 +29,7 @@ describe('#immoscout testsuite()', () => {
return; return;
} }
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'immoscout', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');

View File

@@ -21,7 +21,7 @@ describe('#immoswp testsuite()', () => {
it('should test immoswp provider', async () => { it('should test immoswp provider', async () => {
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'immoswp', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');

View File

@@ -20,7 +20,7 @@ describe('#immowelt testsuite()', () => {
}); });
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'immowelt', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');

View File

@@ -20,7 +20,7 @@ describe('#kleinanzeigen testsuite()', () => {
}); });
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'kleinanzeigen', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');
@@ -31,10 +31,8 @@ describe('#kleinanzeigen testsuite()', () => {
notificationObj.payload.forEach((notify) => { notificationObj.payload.forEach((notify) => {
/** check the actual structure **/ /** check the actual structure **/
expect(notify.id).to.be.a('number'); expect(notify.id).to.be.a('number');
expect(notify.size).to.be.a('string');
expect(notify.title).to.be.a('string'); expect(notify.title).to.be.a('string');
expect(notify.link).to.be.a('string'); expect(notify.link).to.be.a('string');
expect(notify.price).to.be.a('string');
expect(notify.address).to.be.a('string'); expect(notify.address).to.be.a('string');
/** check the values if possible **/ /** check the values if possible **/

View File

@@ -20,7 +20,7 @@ describe('#neubauKompass testsuite()', () => {
it('should test neubauKompass provider', async () => { it('should test neubauKompass provider', async () => {
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'neubauKompass', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');

View File

@@ -20,7 +20,7 @@ describe('#wgGesucht testsuite()', () => {
it('should test wgGesucht provider', async () => { it('should test wgGesucht provider', async () => {
return await new Promise((resolve) => { return await new Promise((resolve) => {
const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'test1', similarityCache); const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'wgGesucht', similarityCache);
fredy.execute().then((listing) => { fredy.execute().then((listing) => {
expect(listing).to.be.a('array'); expect(listing).to.be.a('array');
const notificationObj = mockNotification.get(); const notificationObj = mockNotification.get();

View File

@@ -81,7 +81,6 @@ export default function JobMutator() {
<ProviderMutator <ProviderMutator
visible={providerCreationVisible} visible={providerCreationVisible}
onVisibilityChanged={(visible) => setProviderCreationVisibility(visible)} onVisibilityChanged={(visible) => setProviderCreationVisibility(visible)}
selected={providerData}
onData={(data) => { onData={(data) => {
setProviderData([...providerData, data]); setProviderData([...providerData, data]);
}} }}

View File

@@ -16,7 +16,7 @@ const sortProvider = (a, b) => {
return 0; return 0;
}; };
export default function ProviderMutator({ onVisibilityChanged, visible = false, selected = [], onData } = {}) { export default function ProviderMutator({ onVisibilityChanged, visible = false, onData } = {}) {
const provider = useSelector((state) => state.provider); const provider = useSelector((state) => state.provider);
const [selectedProvider, setSelectedProvider] = useState(null); const [selectedProvider, setSelectedProvider] = useState(null);
const [providerUrl, setProviderUrl] = useState(null); const [providerUrl, setProviderUrl] = useState(null);
@@ -107,8 +107,6 @@ export default function ProviderMutator({ onVisibilityChanged, visible = false,
text: pro.name, text: pro.name,
}; };
}) })
//filter out those, that have already been selected
.filter((option) => selected.find((selectedOption) => selectedOption.id === option.key) == null)
.sort(sortProvider)} .sort(sortProvider)}
onChange={(e, { value }) => { onChange={(e, { value }) => {
const selectedProvider = provider.find((pro) => pro.id === value); const selectedProvider = provider.find((pro) => pro.id === value);

2399
yarn.lock

File diff suppressed because it is too large Load Diff