import { CipherType } from '../../enums/cipherType'; import { Cipher } from '../domain/cipher'; import { CardApi } from '../api/cardApi'; import { FieldApi } from '../api/fieldApi'; import { IdentityApi } from '../api/identityApi'; import { LoginApi } from '../api/loginApi'; import { SecureNoteApi } from '../api/secureNoteApi'; import { PasswordHistoryRequest } from './passwordHistoryRequest'; export class CipherRequest { type: CipherType; folderId: string; organizationId: string; name: string; notes: string; favorite: boolean; login: LoginApi; secureNote: SecureNoteApi; card: CardApi; identity: IdentityApi; fields: FieldApi[]; passwordHistory: PasswordHistoryRequest[]; attachments: { [id: string]: string; }; constructor(cipher: Cipher) { this.type = cipher.type; this.folderId = cipher.folderId; this.organizationId = cipher.organizationId; this.name = cipher.name ? cipher.name.encryptedString : null; this.notes = cipher.notes ? cipher.notes.encryptedString : null; this.favorite = cipher.favorite; switch (this.type) { case CipherType.Login: this.login = { uris: null, username: cipher.login.username ? cipher.login.username.encryptedString : null, password: cipher.login.password ? cipher.login.password.encryptedString : null, passwordRevisionDate: cipher.login.passwordRevisionDate, totp: cipher.login.totp ? cipher.login.totp.encryptedString : null, }; if (cipher.login.uris) { this.login.uris = []; cipher.login.uris.forEach((u) => { this.login.uris.push({ uri: u.uri ? u.uri.encryptedString : null, match: u.match != null ? u.match : null, }); }); } break; case CipherType.SecureNote: this.secureNote = { type: cipher.secureNote.type, }; break; case CipherType.Card: this.card = { cardholderName: cipher.card.cardholderName ? cipher.card.cardholderName.encryptedString : null, brand: cipher.card.brand ? cipher.card.brand.encryptedString : null, number: cipher.card.number ? cipher.card.number.encryptedString : null, expMonth: cipher.card.expMonth ? cipher.card.expMonth.encryptedString : null, expYear: cipher.card.expYear ? cipher.card.expYear.encryptedString : null, code: cipher.card.code ? cipher.card.code.encryptedString : null, }; break; case CipherType.Identity: this.identity = { title: cipher.identity.title ? cipher.identity.title.encryptedString : null, firstName: cipher.identity.firstName ? cipher.identity.firstName.encryptedString : null, middleName: cipher.identity.middleName ? cipher.identity.middleName.encryptedString : null, lastName: cipher.identity.lastName ? cipher.identity.lastName.encryptedString : null, address1: cipher.identity.address1 ? cipher.identity.address1.encryptedString : null, address2: cipher.identity.address2 ? cipher.identity.address2.encryptedString : null, address3: cipher.identity.address3 ? cipher.identity.address3.encryptedString : null, city: cipher.identity.city ? cipher.identity.city.encryptedString : null, state: cipher.identity.state ? cipher.identity.state.encryptedString : null, postalCode: cipher.identity.postalCode ? cipher.identity.postalCode.encryptedString : null, country: cipher.identity.country ? cipher.identity.country.encryptedString : null, company: cipher.identity.company ? cipher.identity.company.encryptedString : null, email: cipher.identity.email ? cipher.identity.email.encryptedString : null, phone: cipher.identity.phone ? cipher.identity.phone.encryptedString : null, ssn: cipher.identity.ssn ? cipher.identity.ssn.encryptedString : null, username: cipher.identity.username ? cipher.identity.username.encryptedString : null, passportNumber: cipher.identity.passportNumber ? cipher.identity.passportNumber.encryptedString : null, licenseNumber: cipher.identity.licenseNumber ? cipher.identity.licenseNumber.encryptedString : null, }; break; default: break; } if (cipher.fields) { this.fields = []; cipher.fields.forEach((field) => { this.fields.push({ type: field.type, name: field.name ? field.name.encryptedString : null, value: field.value ? field.value.encryptedString : null, }); }); } if (cipher.passwordHistory) { this.passwordHistory = []; cipher.passwordHistory.forEach((ph) => { this.passwordHistory.push({ lastUsedDate: ph.lastUsedDate, password: ph.password ? ph.password.encryptedString : null, }); }); } if (cipher.attachments) { this.attachments = {}; cipher.attachments.forEach((attachment) => { this.attachments[attachment.id] = attachment.fileName ? attachment.fileName.encryptedString : null; }); } } }