diff --git a/src/importers/aviraCsvImporter.ts b/src/importers/aviraCsvImporter.ts new file mode 100644 index 0000000000..d704028624 --- /dev/null +++ b/src/importers/aviraCsvImporter.ts @@ -0,0 +1,41 @@ +import { BaseImporter } from './baseImporter'; +import { Importer } from './importer'; + +import { ImportResult } from '../models/domain/importResult'; + +import { CipherView } from '../models/view/cipherView'; +import { LoginView } from '../models/view/loginView'; + +import { CipherType } from '../enums/cipherType'; + +export class AviraCsvImporter extends BaseImporter implements Importer { + parse(data: string): ImportResult { + const result = new ImportResult(); + const results = this.parseCsv(data, true); + if (results == null) { + result.success = false; + return result; + } + + results.forEach((value) => { + const cipher = new CipherView(); + cipher.type = CipherType.Login; + cipher.name = this.getValueOrDefault(value.name, '--'); + cipher.login = new LoginView(); + cipher.login.uris = this.makeUriArray(value.website); + cipher.login.password = this.getValueOrDefault(value.password); + + if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) { + cipher.login.username = value.secondary_username; + } else { + cipher.login.username = this.getValueOrDefault(value.username); + cipher.notes = this.getValueOrDefault(value.secondary_username); + } + + result.ciphers.push(cipher); + }); + + result.success = true; + return result; + } +} diff --git a/src/models/view/cipherView.ts b/src/models/view/cipherView.ts index 2b5f1499f1..72e68eaced 100644 --- a/src/models/view/cipherView.ts +++ b/src/models/view/cipherView.ts @@ -17,9 +17,9 @@ export class CipherView implements View { name: string; notes: string; type: CipherType; - favorite: boolean; - organizationUseTotp: boolean; - edit: boolean; + favorite = false; + organizationUseTotp = false; + edit = false; localData: any; login: LoginView; identity: IdentityView;