import {Injectable} from "@angular/core"; import {Converter} from "./converter/converter"; import {Base64Encoder} from "./converter/base64encoder"; import {Base64Decoder} from "./converter/base64decoder"; import {URIEncoder} from "./converter/uriencoder"; import {URIDecoder} from "./converter/uridecoder"; import {URIComponentEncoder} from "./converter/uricomponentencoder"; import {URIComponentDecoder} from "./converter/uricomponentdecoder"; import {HTMLEntitiesEncoder} from "./converter/htmlentitiesencoder"; import {HTMLEntitiesDecoder} from "./converter/htmlentitiesdecoder"; import {DecToHexConverter} from "./converter/dectohexconverter"; import {HexToDecConverter} from "./converter/hextodecconverter"; import {DecToBinConverter} from "./converter/dectobinconverter"; import {BinToDecConverter} from "./converter/bintodecconverter"; import {QuotedPrintableDecoder} from "./converter/quotedprintabledecoder"; import {QuotedPrintableEncoder} from "./converter/quotedprintableencoder"; import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service"; import {PunycodeEncoder} from "./converter/punycodeencoder"; import {PunycodeDecoder} from "./converter/punycodedecoder"; import {UTF8Encoder} from "./converter/utf8encoder"; import {UTF8Decoder} from "./converter/utf8decoder"; @Injectable() export class ConverterRegistryService { private converters:Converter[] = []; constructor(private wrapper:NativeLibraryWrapperService) { this.init(); } public getAllConverters():Converter[] { return this.converters; } public getConverter(id:string):Converter { for (let i = 0; i < this.converters.length; i++) { if (this.converters[i].getId() == id) { return this.converters[i]; } } return undefined; } private init():void { this.registerConverter(new Base64Encoder()); this.registerConverter(new Base64Decoder()); this.registerConverter(new URIEncoder()); this.registerConverter(new URIDecoder()); this.registerConverter(new URIComponentEncoder()); this.registerConverter(new URIComponentDecoder()); this.registerConverter(new HTMLEntitiesEncoder()); this.registerConverter(new HTMLEntitiesDecoder()); this.registerConverter(new QuotedPrintableEncoder(this.wrapper)); this.registerConverter(new QuotedPrintableDecoder(this.wrapper)); this.registerConverter(new DecToHexConverter()); this.registerConverter(new HexToDecConverter()); this.registerConverter(new DecToBinConverter()); this.registerConverter(new BinToDecConverter()); this.registerConverter(new PunycodeEncoder(this.wrapper)); this.registerConverter(new PunycodeDecoder(this.wrapper)); this.registerConverter(new UTF8Encoder(this.wrapper)); this.registerConverter(new UTF8Decoder(this.wrapper)); } private registerConverter(converter:Converter):void { this.converters.forEach((c:Converter) => { if (c.getId() == converter.getId()) { throw new Error("Converter-ID " + converter.getId() + " is already registered!"); } }); this.converters.push(converter); } }