Skip to content

Commit e19569c

Browse files
committed
Add the ability to use local optimization_config
Upd #216
1 parent 6e0fa5a commit e19569c

1 file changed

Lines changed: 30 additions & 6 deletions

File tree

src/main/optimization.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
11
/* eslint-disable global-require */
2+
import fs from 'fs';
3+
import path from 'path';
24
import { downloadFile } from './utils/webutils';
35

46
// Here we can access optimizable filters and its optimization percentages
57
// eslint-disable-next-line max-len
6-
const OPTIMIZATION_PERCENT_URL = 'https://chrome.adtidy.org/optimization_config/percent.json?key=4DDBE80A3DA94D819A00523252FB6380';
7-
// eslint-disable-next-line max-len
8-
const OPTIMIZATION_STATS_URL = 'https://chrome.adtidy.org/filters/{0}/stats.json?key=4DDBE80A3DA94D819A00523252FB6380';
8+
const OPTIMIZATION_KEY = '4DDBE80A3DA94D819A00523252FB6380';
9+
export const OPTIMIZATION_PERCENT_URL = `https://chrome.adtidy.org/optimization_config/percent.json?key=${OPTIMIZATION_KEY}`;
10+
11+
export const getOptimizationStatsUrl = (filterId) =>
12+
// eslint-disable-next-line implicit-arrow-linebreak
13+
`https://chrome.adtidy.org/filters/${filterId}/stats.json?key=${OPTIMIZATION_KEY}`;
14+
15+
const downloadOptimizationStats = (filterId) =>
16+
// eslint-disable-next-line implicit-arrow-linebreak
17+
downloadFile(getOptimizationStatsUrl(filterId));
918

1019
let optimizationEnabled = true;
1120

1221
let filtersOptimizationPercent = null;
1322

23+
let localOptimizationConfigDir = null;
24+
25+
export const setLocalOptimizationConfigDir = (dir) => {
26+
localOptimizationConfigDir = dir;
27+
};
28+
1429
/**
1530
* Downloads and caches filters optimization percentages configuration
1631
*/
@@ -20,7 +35,11 @@ export const getFiltersOptimizationPercent = () => {
2035
}
2136

2237
if (filtersOptimizationPercent === null) {
23-
filtersOptimizationPercent = JSON.parse(downloadFile(OPTIMIZATION_PERCENT_URL));
38+
const content = localOptimizationConfigDir
39+
? fs.readFileSync(path.join(localOptimizationConfigDir, 'percent.json'), 'utf-8')
40+
: downloadFile(OPTIMIZATION_PERCENT_URL);
41+
42+
filtersOptimizationPercent = JSON.parse(content);
2443
}
2544

2645
if (filtersOptimizationPercent.config.length === 0) {
@@ -40,12 +59,17 @@ export const getFilterOptimizationConfig = (filterId) => {
4059
}
4160

4261
// config: [{filterId: 1, percent: 45}, ...]
43-
const filterOptimizationPercent = getFiltersOptimizationPercent().config
62+
const filterOptimizationPercent = getFiltersOptimizationPercent()
63+
.config // eslint-disable-next-line
4464
.find((config) => config.filterId === filterId);
4565

4666
let optimizationConfig = null;
4767
if (optimizationEnabled && filterOptimizationPercent) {
48-
optimizationConfig = JSON.parse(downloadFile(OPTIMIZATION_STATS_URL.replace('{0}', filterId)));
68+
const content = localOptimizationConfigDir
69+
? fs.readFileSync(path.join(localOptimizationConfigDir, `${filterId}_stats.json`), 'utf-8')
70+
: downloadOptimizationStats(filterId);
71+
72+
optimizationConfig = JSON.parse(content);
4973
if (!optimizationConfig || !optimizationConfig.groups || optimizationConfig.groups.length === 0) {
5074
throw new Error(`Unable to retrieve optimization stats for ${filterId}`);
5175
}

0 commit comments

Comments
 (0)