#10 and some refactors

This commit is contained in:
syuilo 2017-01-31 00:50:09 +09:00
parent 3f9e947898
commit 79226e5a6c
2 changed files with 13 additions and 15 deletions

View File

@ -26,6 +26,7 @@
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"html-entities": "1.2.0", "html-entities": "1.2.0",
"request": "2.79.0", "request": "2.79.0",
"require-all": "2.1.0",
"trace-redirect": "1.0.2-1" "trace-redirect": "1.0.2-1"
} }
} }

View File

@ -4,31 +4,28 @@ import ISummary from './isummary';
import IPlugin from './iplugin'; import IPlugin from './iplugin';
import general from './general'; import general from './general';
/* plugins */ const plugins: IPlugin[] = require('require-all')({
import * as amazon from './plugins/amazon'; dirname: __dirname + '/plugins'
import * as wikipedia from './plugins/wikipedia'; });
const plugins: IPlugin[] = [
amazon,
wikipedia
];
export default async (url: string): Promise<ISummary> => { export default async (url: string): Promise<ISummary> => {
const actualUrl = await tracer(url); const actualUrl = await tracer(url);
const _url = URL.parse(actualUrl, true); const _url = URL.parse(actualUrl, true);
const plugin = plugins.filter(plugin => plugin.test(_url))[0]; const match = Object.keys(plugins)
.map(key => plugins[key])
.filter(plugin => plugin.test(_url))[0] as IPlugin;
const summary = plugin const summary = match
? await plugin.summary(_url) ? await match.summary(_url)
: await general(_url); : await general(_url);
Object.keys(summary).forEach(k => { Object.keys(summary).forEach(k => {
if ((<any>summary)[k]) { if (summary[k]) {
(<any>summary)[k] = (<any>summary)[k].trim(); summary[k] = summary[k].trim();
if ((<any>summary)[k] === '') { if (summary[k] === '') {
(<any>summary)[k] = null; summary[k] = null;
} }
} }
}); });