mirror of https://github.com/tycrek/ass
parent
fce1b30e3f
commit
cb41aeaa3c
@ -1,7 +1,47 @@
|
|||||||
|
import fs from 'fs-extra';
|
||||||
|
import { UserConfiguration, UserConfigTypeChecker } from 'ass';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a boolean if the provided value is a number
|
||||||
|
*/
|
||||||
|
const numChecker = (val: string) => {
|
||||||
|
try { parseInt(val); return true; }
|
||||||
|
catch (err) { return false; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User-config property type checker functions
|
||||||
|
*/
|
||||||
|
const Checkers: UserConfigTypeChecker = {
|
||||||
|
uploadsDir: (val) => {
|
||||||
|
try { fs.accessSync(val); return true; }
|
||||||
|
catch (err) { return false; }
|
||||||
|
},
|
||||||
|
idType: (val) => {
|
||||||
|
const options = ['random', 'original', 'gfycat', 'timestamp', 'zws'];
|
||||||
|
return options.includes(val);
|
||||||
|
},
|
||||||
|
idSize: numChecker,
|
||||||
|
gfySize: numChecker,
|
||||||
|
maximumFileSize: numChecker,
|
||||||
|
}
|
||||||
|
|
||||||
export class UserConfig {
|
export class UserConfig {
|
||||||
private config: UserConfiguration;
|
private config: UserConfiguration;
|
||||||
public getConfig = () => this.config;
|
public getConfig = () => this.config;
|
||||||
|
|
||||||
constructor(config?: UserConfiguration) {
|
constructor(config?: UserConfiguration) {
|
||||||
|
if (config != null) this.config = this.parseConfig(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
private parseConfig(config: UserConfiguration) {
|
||||||
|
if (!Checkers.uploadsDir(config.uploadsDir)) throw new Error(`Unable to access uploads directory: ${config.uploadsDir}`);
|
||||||
|
if (!Checkers.idType(config.idType)) throw new Error(`Invalid ID type: ${config.idType}`);
|
||||||
|
if (!Checkers.idSize(config.idSize)) throw new Error(`Invalid ID size: ${config.idSize}`);
|
||||||
|
if (!Checkers.gfySize(config.gfySize)) throw new Error(`Invalid Gfy size: ${config.gfySize}`);
|
||||||
|
if (!Checkers.maximumFileSize(config.maximumFileSize)) throw new Error(`Invalid maximum file size: ${config.maximumFileSize}`);
|
||||||
|
|
||||||
|
// All is fine, carry on!
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue