mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 23:03:32 +00:00
[PS-2320] Import API service refactor (#4529)
* Extract import methods from ApiService Removed methods from ApiService impl and abstraction Create import-api.service impl and abstraction Moved import.service into abstractions/import/import.service.abstraction Moved import.service into services/import/import.service Change imports to use new services * Fix import for tests * Fix imports for CLI * Fix imports for web * Fix ModuleImports and dependencies * Mark ImportApiService methods as async
This commit is contained in:
committed by
GitHub
parent
4584583691
commit
b7d38f0f72
@@ -5,6 +5,7 @@ import * as program from "commander";
|
|||||||
import * as jsdom from "jsdom";
|
import * as jsdom from "jsdom";
|
||||||
|
|
||||||
import { InternalFolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
import { InternalFolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
||||||
|
import { ImportApiServiceAbstraction } from "@bitwarden/common/abstractions/import/import-api.service.abstraction";
|
||||||
import { OrganizationUserService } from "@bitwarden/common/abstractions/organization-user/organization-user.service";
|
import { OrganizationUserService } from "@bitwarden/common/abstractions/organization-user/organization-user.service";
|
||||||
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstractions/organization/organization-api.service.abstraction";
|
import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstractions/organization/organization-api.service.abstraction";
|
||||||
import { ClientType } from "@bitwarden/common/enums/clientType";
|
import { ClientType } from "@bitwarden/common/enums/clientType";
|
||||||
@@ -27,7 +28,8 @@ import { ExportService } from "@bitwarden/common/services/export.service";
|
|||||||
import { FileUploadService } from "@bitwarden/common/services/fileUpload.service";
|
import { FileUploadService } from "@bitwarden/common/services/fileUpload.service";
|
||||||
import { FolderApiService } from "@bitwarden/common/services/folder/folder-api.service";
|
import { FolderApiService } from "@bitwarden/common/services/folder/folder-api.service";
|
||||||
import { FolderService } from "@bitwarden/common/services/folder/folder.service";
|
import { FolderService } from "@bitwarden/common/services/folder/folder.service";
|
||||||
import { ImportService } from "@bitwarden/common/services/import.service";
|
import { ImportApiService } from "@bitwarden/common/services/import/import-api.service";
|
||||||
|
import { ImportService } from "@bitwarden/common/services/import/import.service";
|
||||||
import { KeyConnectorService } from "@bitwarden/common/services/keyConnector.service";
|
import { KeyConnectorService } from "@bitwarden/common/services/keyConnector.service";
|
||||||
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
|
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
|
||||||
import { NoopMessagingService } from "@bitwarden/common/services/noopMessaging.service";
|
import { NoopMessagingService } from "@bitwarden/common/services/noopMessaging.service";
|
||||||
@@ -94,6 +96,7 @@ export class Main {
|
|||||||
containerService: ContainerService;
|
containerService: ContainerService;
|
||||||
auditService: AuditService;
|
auditService: AuditService;
|
||||||
importService: ImportService;
|
importService: ImportService;
|
||||||
|
importApiService: ImportApiServiceAbstraction;
|
||||||
exportService: ExportService;
|
exportService: ExportService;
|
||||||
searchService: SearchService;
|
searchService: SearchService;
|
||||||
cryptoFunctionService: NodeCryptoFunctionService;
|
cryptoFunctionService: NodeCryptoFunctionService;
|
||||||
@@ -339,10 +342,12 @@ export class Main {
|
|||||||
|
|
||||||
this.totpService = new TotpService(this.cryptoFunctionService, this.logService);
|
this.totpService = new TotpService(this.cryptoFunctionService, this.logService);
|
||||||
|
|
||||||
|
this.importApiService = new ImportApiService(this.apiService);
|
||||||
|
|
||||||
this.importService = new ImportService(
|
this.importService = new ImportService(
|
||||||
this.cipherService,
|
this.cipherService,
|
||||||
this.folderService,
|
this.folderService,
|
||||||
this.apiService,
|
this.importApiService,
|
||||||
this.i18nService,
|
this.i18nService,
|
||||||
this.collectionService,
|
this.collectionService,
|
||||||
this.cryptoService
|
this.cryptoService
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import * as program from "commander";
|
import * as program from "commander";
|
||||||
import * as inquirer from "inquirer";
|
import * as inquirer from "inquirer";
|
||||||
|
|
||||||
import { ImportService } from "@bitwarden/common/abstractions/import.service";
|
import { ImportService } from "@bitwarden/common/abstractions/import/import.service.abstraction";
|
||||||
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction";
|
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction";
|
||||||
import { ImportType } from "@bitwarden/common/enums/importOptions";
|
import { ImportType } from "@bitwarden/common/enums/importOptions";
|
||||||
import { Importer } from "@bitwarden/common/importers/importer";
|
import { Importer } from "@bitwarden/common/importers/importer";
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser
|
|||||||
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
||||||
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
||||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
import { ImportService as ImportServiceAbstraction } from "@bitwarden/common/abstractions/import.service";
|
import { ImportApiServiceAbstraction } from "@bitwarden/common/abstractions/import/import-api.service.abstraction";
|
||||||
import { ImportService } from "@bitwarden/common/services/import.service";
|
import { ImportService as ImportServiceAbstraction } from "@bitwarden/common/abstractions/import/import.service.abstraction";
|
||||||
|
import { ImportApiService } from "@bitwarden/common/services/import/import-api.service";
|
||||||
|
import { ImportService } from "@bitwarden/common/services/import/import.service";
|
||||||
|
|
||||||
import { LooseComponentsModule, SharedModule } from "../../../shared";
|
import { LooseComponentsModule, SharedModule } from "../../../shared";
|
||||||
|
|
||||||
@@ -19,13 +21,18 @@ import { OrganizationImportComponent } from "./org-import.component";
|
|||||||
imports: [SharedModule, LooseComponentsModule, OrganizationImportExportRoutingModule],
|
imports: [SharedModule, LooseComponentsModule, OrganizationImportExportRoutingModule],
|
||||||
declarations: [OrganizationImportComponent, OrganizationExportComponent],
|
declarations: [OrganizationImportComponent, OrganizationExportComponent],
|
||||||
providers: [
|
providers: [
|
||||||
|
{
|
||||||
|
provide: ImportApiServiceAbstraction,
|
||||||
|
useClass: ImportApiService,
|
||||||
|
deps: [ApiService],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
provide: ImportServiceAbstraction,
|
provide: ImportServiceAbstraction,
|
||||||
useClass: ImportService,
|
useClass: ImportService,
|
||||||
deps: [
|
deps: [
|
||||||
CipherService,
|
CipherService,
|
||||||
FolderService,
|
FolderService,
|
||||||
ApiService,
|
ImportApiServiceAbstraction,
|
||||||
I18nService,
|
I18nService,
|
||||||
CollectionService,
|
CollectionService,
|
||||||
CryptoService,
|
CryptoService,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from "@angular/router";
|
|||||||
|
|
||||||
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
||||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
import { ImportService } from "@bitwarden/common/abstractions/import.service";
|
import { ImportService } from "@bitwarden/common/abstractions/import/import.service.abstraction";
|
||||||
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
||||||
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction";
|
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction";
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
||||||
|
|||||||
@@ -6,8 +6,10 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser
|
|||||||
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
||||||
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
||||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
import { ImportService as ImportServiceAbstraction } from "@bitwarden/common/abstractions/import.service";
|
import { ImportApiServiceAbstraction } from "@bitwarden/common/abstractions/import/import-api.service.abstraction";
|
||||||
import { ImportService } from "@bitwarden/common/services/import.service";
|
import { ImportService as ImportServiceAbstraction } from "@bitwarden/common/abstractions/import/import.service.abstraction";
|
||||||
|
import { ImportApiService } from "@bitwarden/common/services/import/import-api.service";
|
||||||
|
import { ImportService } from "@bitwarden/common/services/import/import.service";
|
||||||
|
|
||||||
import { LooseComponentsModule, SharedModule } from "../../shared";
|
import { LooseComponentsModule, SharedModule } from "../../shared";
|
||||||
|
|
||||||
@@ -20,13 +22,18 @@ import { ImportComponent } from "./import.component";
|
|||||||
imports: [SharedModule, LooseComponentsModule, ImportExportRoutingModule],
|
imports: [SharedModule, LooseComponentsModule, ImportExportRoutingModule],
|
||||||
declarations: [ImportComponent, ExportComponent, FilePasswordPromptComponent],
|
declarations: [ImportComponent, ExportComponent, FilePasswordPromptComponent],
|
||||||
providers: [
|
providers: [
|
||||||
|
{
|
||||||
|
provide: ImportApiServiceAbstraction,
|
||||||
|
useClass: ImportApiService,
|
||||||
|
deps: [ApiService],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
provide: ImportServiceAbstraction,
|
provide: ImportServiceAbstraction,
|
||||||
useClass: ImportService,
|
useClass: ImportService,
|
||||||
deps: [
|
deps: [
|
||||||
CipherService,
|
CipherService,
|
||||||
FolderService,
|
FolderService,
|
||||||
ApiService,
|
ImportApiServiceAbstraction,
|
||||||
I18nService,
|
I18nService,
|
||||||
CollectionService,
|
CollectionService,
|
||||||
CryptoService,
|
CryptoService,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import Swal, { SweetAlertIcon } from "sweetalert2";
|
|||||||
|
|
||||||
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
import { ModalService } from "@bitwarden/angular/services/modal.service";
|
||||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
import { ImportService } from "@bitwarden/common/abstractions/import.service";
|
import { ImportService } from "@bitwarden/common/abstractions/import/import.service.abstraction";
|
||||||
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
||||||
import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction";
|
import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction";
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
// eslint-disable-next-line no-restricted-imports
|
// eslint-disable-next-line no-restricted-imports
|
||||||
import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
|
import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
|
||||||
|
|
||||||
import { ApiService } from "@bitwarden/common/abstractions/api.service";
|
|
||||||
import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
|
import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
|
||||||
import { CollectionService } from "@bitwarden/common/abstractions/collection.service";
|
import { CollectionService } from "@bitwarden/common/abstractions/collection.service";
|
||||||
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
|
||||||
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
|
||||||
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
|
import { ImportApiServiceAbstraction } from "@bitwarden/common/abstractions/import/import-api.service.abstraction";
|
||||||
import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwarden-password-protected-importer";
|
import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwarden-password-protected-importer";
|
||||||
import { Importer } from "@bitwarden/common/importers/importer";
|
import { Importer } from "@bitwarden/common/importers/importer";
|
||||||
import { Utils } from "@bitwarden/common/misc/utils";
|
import { Utils } from "@bitwarden/common/misc/utils";
|
||||||
import { ImportService } from "@bitwarden/common/services/import.service";
|
import { ImportService } from "@bitwarden/common/services/import/import.service";
|
||||||
|
|
||||||
describe("ImportService", () => {
|
describe("ImportService", () => {
|
||||||
let importService: ImportService;
|
let importService: ImportService;
|
||||||
let cipherService: SubstituteOf<CipherService>;
|
let cipherService: SubstituteOf<CipherService>;
|
||||||
let folderService: SubstituteOf<FolderService>;
|
let folderService: SubstituteOf<FolderService>;
|
||||||
let apiService: SubstituteOf<ApiService>;
|
let importApiService: SubstituteOf<ImportApiServiceAbstraction>;
|
||||||
let i18nService: SubstituteOf<I18nService>;
|
let i18nService: SubstituteOf<I18nService>;
|
||||||
let collectionService: SubstituteOf<CollectionService>;
|
let collectionService: SubstituteOf<CollectionService>;
|
||||||
let cryptoService: SubstituteOf<CryptoService>;
|
let cryptoService: SubstituteOf<CryptoService>;
|
||||||
@@ -24,7 +24,7 @@ describe("ImportService", () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cipherService = Substitute.for<CipherService>();
|
cipherService = Substitute.for<CipherService>();
|
||||||
folderService = Substitute.for<FolderService>();
|
folderService = Substitute.for<FolderService>();
|
||||||
apiService = Substitute.for<ApiService>();
|
importApiService = Substitute.for<ImportApiServiceAbstraction>();
|
||||||
i18nService = Substitute.for<I18nService>();
|
i18nService = Substitute.for<I18nService>();
|
||||||
collectionService = Substitute.for<CollectionService>();
|
collectionService = Substitute.for<CollectionService>();
|
||||||
cryptoService = Substitute.for<CryptoService>();
|
cryptoService = Substitute.for<CryptoService>();
|
||||||
@@ -32,7 +32,7 @@ describe("ImportService", () => {
|
|||||||
importService = new ImportService(
|
importService = new ImportService(
|
||||||
cipherService,
|
cipherService,
|
||||||
folderService,
|
folderService,
|
||||||
apiService,
|
importApiService,
|
||||||
i18nService,
|
i18nService,
|
||||||
collectionService,
|
collectionService,
|
||||||
cryptoService
|
cryptoService
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ import { IapCheckRequest } from "../models/request/iap-check.request";
|
|||||||
import { PasswordTokenRequest } from "../models/request/identity-token/password-token.request";
|
import { PasswordTokenRequest } from "../models/request/identity-token/password-token.request";
|
||||||
import { SsoTokenRequest } from "../models/request/identity-token/sso-token.request";
|
import { SsoTokenRequest } from "../models/request/identity-token/sso-token.request";
|
||||||
import { UserApiTokenRequest } from "../models/request/identity-token/user-api-token.request";
|
import { UserApiTokenRequest } from "../models/request/identity-token/user-api-token.request";
|
||||||
import { ImportCiphersRequest } from "../models/request/import-ciphers.request";
|
|
||||||
import { ImportOrganizationCiphersRequest } from "../models/request/import-organization-ciphers.request";
|
|
||||||
import { KdfRequest } from "../models/request/kdf.request";
|
import { KdfRequest } from "../models/request/kdf.request";
|
||||||
import { KeyConnectorUserKeyRequest } from "../models/request/key-connector-user-key.request";
|
import { KeyConnectorUserKeyRequest } from "../models/request/key-connector-user-key.request";
|
||||||
import { KeysRequest } from "../models/request/keys.request";
|
import { KeysRequest } from "../models/request/keys.request";
|
||||||
@@ -260,11 +258,6 @@ export abstract class ApiService {
|
|||||||
putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise<any>;
|
putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise<any>;
|
||||||
putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise<any>;
|
putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise<any>;
|
||||||
postPurgeCiphers: (request: SecretVerificationRequest, organizationId?: string) => Promise<any>;
|
postPurgeCiphers: (request: SecretVerificationRequest, organizationId?: string) => Promise<any>;
|
||||||
postImportCiphers: (request: ImportCiphersRequest) => Promise<any>;
|
|
||||||
postImportOrganizationCiphers: (
|
|
||||||
organizationId: string,
|
|
||||||
request: ImportOrganizationCiphersRequest
|
|
||||||
) => Promise<any>;
|
|
||||||
putDeleteCipher: (id: string) => Promise<any>;
|
putDeleteCipher: (id: string) => Promise<any>;
|
||||||
putDeleteCipherAdmin: (id: string) => Promise<any>;
|
putDeleteCipherAdmin: (id: string) => Promise<any>;
|
||||||
putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise<any>;
|
putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise<any>;
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import { ImportCiphersRequest } from "../../models/request/import-ciphers.request";
|
||||||
|
import { ImportOrganizationCiphersRequest } from "../../models/request/import-organization-ciphers.request";
|
||||||
|
|
||||||
|
export abstract class ImportApiServiceAbstraction {
|
||||||
|
postImportCiphers: (request: ImportCiphersRequest) => Promise<any>;
|
||||||
|
postImportOrganizationCiphers: (
|
||||||
|
organizationId: string,
|
||||||
|
request: ImportOrganizationCiphersRequest
|
||||||
|
) => Promise<any>;
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ImportOption, ImportType } from "../enums/importOptions";
|
import { ImportOption, ImportType } from "../../enums/importOptions";
|
||||||
import { ImportError } from "../importers/import-error";
|
import { ImportError } from "../../importers/import-error";
|
||||||
import { Importer } from "../importers/importer";
|
import { Importer } from "../../importers/importer";
|
||||||
|
|
||||||
export abstract class ImportService {
|
export abstract class ImportService {
|
||||||
featuredImportOptions: readonly ImportOption[];
|
featuredImportOptions: readonly ImportOption[];
|
||||||
@@ -35,8 +35,6 @@ import { PasswordTokenRequest } from "../models/request/identity-token/password-
|
|||||||
import { SsoTokenRequest } from "../models/request/identity-token/sso-token.request";
|
import { SsoTokenRequest } from "../models/request/identity-token/sso-token.request";
|
||||||
import { TokenTwoFactorRequest } from "../models/request/identity-token/token-two-factor.request";
|
import { TokenTwoFactorRequest } from "../models/request/identity-token/token-two-factor.request";
|
||||||
import { UserApiTokenRequest } from "../models/request/identity-token/user-api-token.request";
|
import { UserApiTokenRequest } from "../models/request/identity-token/user-api-token.request";
|
||||||
import { ImportCiphersRequest } from "../models/request/import-ciphers.request";
|
|
||||||
import { ImportOrganizationCiphersRequest } from "../models/request/import-organization-ciphers.request";
|
|
||||||
import { KdfRequest } from "../models/request/kdf.request";
|
import { KdfRequest } from "../models/request/kdf.request";
|
||||||
import { KeyConnectorUserKeyRequest } from "../models/request/key-connector-user-key.request";
|
import { KeyConnectorUserKeyRequest } from "../models/request/key-connector-user-key.request";
|
||||||
import { KeysRequest } from "../models/request/keys.request";
|
import { KeysRequest } from "../models/request/keys.request";
|
||||||
@@ -662,23 +660,6 @@ export class ApiService implements ApiServiceAbstraction {
|
|||||||
return this.send("POST", path, request, true, false);
|
return this.send("POST", path, request, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
postImportCiphers(request: ImportCiphersRequest): Promise<any> {
|
|
||||||
return this.send("POST", "/ciphers/import", request, true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
postImportOrganizationCiphers(
|
|
||||||
organizationId: string,
|
|
||||||
request: ImportOrganizationCiphersRequest
|
|
||||||
): Promise<any> {
|
|
||||||
return this.send(
|
|
||||||
"POST",
|
|
||||||
"/ciphers/import-organization?organizationId=" + organizationId,
|
|
||||||
request,
|
|
||||||
true,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
putDeleteCipher(id: string): Promise<any> {
|
putDeleteCipher(id: string): Promise<any> {
|
||||||
return this.send("PUT", "/ciphers/" + id + "/delete", null, true, false);
|
return this.send("PUT", "/ciphers/" + id + "/delete", null, true, false);
|
||||||
}
|
}
|
||||||
|
|||||||
25
libs/common/src/services/import/import-api.service.ts
Normal file
25
libs/common/src/services/import/import-api.service.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import { ApiService } from "../../abstractions/api.service";
|
||||||
|
import { ImportApiServiceAbstraction } from "../../abstractions/import/import-api.service.abstraction";
|
||||||
|
import { ImportCiphersRequest } from "../../models/request/import-ciphers.request";
|
||||||
|
import { ImportOrganizationCiphersRequest } from "../../models/request/import-organization-ciphers.request";
|
||||||
|
|
||||||
|
export class ImportApiService implements ImportApiServiceAbstraction {
|
||||||
|
constructor(private apiService: ApiService) {}
|
||||||
|
|
||||||
|
async postImportCiphers(request: ImportCiphersRequest): Promise<any> {
|
||||||
|
return await this.apiService.send("POST", "/ciphers/import", request, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
async postImportOrganizationCiphers(
|
||||||
|
organizationId: string,
|
||||||
|
request: ImportOrganizationCiphersRequest
|
||||||
|
): Promise<any> {
|
||||||
|
return await this.apiService.send(
|
||||||
|
"POST",
|
||||||
|
"/ciphers/import-organization?organizationId=" + organizationId,
|
||||||
|
request,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,87 +1,87 @@
|
|||||||
import { ApiService } from "../abstractions/api.service";
|
import { CipherService } from "../../abstractions/cipher.service";
|
||||||
import { CipherService } from "../abstractions/cipher.service";
|
import { CollectionService } from "../../abstractions/collection.service";
|
||||||
import { CollectionService } from "../abstractions/collection.service";
|
import { CryptoService } from "../../abstractions/crypto.service";
|
||||||
import { CryptoService } from "../abstractions/crypto.service";
|
import { FolderService } from "../../abstractions/folder/folder.service.abstraction";
|
||||||
import { FolderService } from "../abstractions/folder/folder.service.abstraction";
|
import { I18nService } from "../../abstractions/i18n.service";
|
||||||
import { I18nService } from "../abstractions/i18n.service";
|
import { ImportApiServiceAbstraction } from "../../abstractions/import/import-api.service.abstraction";
|
||||||
import { ImportService as ImportServiceAbstraction } from "../abstractions/import.service";
|
import { ImportService as ImportServiceAbstraction } from "../../abstractions/import/import.service.abstraction";
|
||||||
import { CipherType } from "../enums/cipherType";
|
import { CipherType } from "../../enums/cipherType";
|
||||||
import {
|
import {
|
||||||
featuredImportOptions,
|
featuredImportOptions,
|
||||||
ImportOption,
|
ImportOption,
|
||||||
ImportType,
|
ImportType,
|
||||||
regularImportOptions,
|
regularImportOptions,
|
||||||
} from "../enums/importOptions";
|
} from "../../enums/importOptions";
|
||||||
import { AscendoCsvImporter } from "../importers/ascendo-csv-importer";
|
import { AscendoCsvImporter } from "../../importers/ascendo-csv-importer";
|
||||||
import { AvastCsvImporter } from "../importers/avast-csv-importer";
|
import { AvastCsvImporter } from "../../importers/avast-csv-importer";
|
||||||
import { AvastJsonImporter } from "../importers/avast-json-importer";
|
import { AvastJsonImporter } from "../../importers/avast-json-importer";
|
||||||
import { AviraCsvImporter } from "../importers/avira-csv-importer";
|
import { AviraCsvImporter } from "../../importers/avira-csv-importer";
|
||||||
import { BitwardenCsvImporter } from "../importers/bitwarden-csv-importer";
|
import { BitwardenCsvImporter } from "../../importers/bitwarden-csv-importer";
|
||||||
import { BitwardenJsonImporter } from "../importers/bitwarden-json-importer";
|
import { BitwardenJsonImporter } from "../../importers/bitwarden-json-importer";
|
||||||
import { BitwardenPasswordProtectedImporter } from "../importers/bitwarden-password-protected-importer";
|
import { BitwardenPasswordProtectedImporter } from "../../importers/bitwarden-password-protected-importer";
|
||||||
import { BlackBerryCsvImporter } from "../importers/blackberry-csv-importer";
|
import { BlackBerryCsvImporter } from "../../importers/blackberry-csv-importer";
|
||||||
import { BlurCsvImporter } from "../importers/blur-csv-importer";
|
import { BlurCsvImporter } from "../../importers/blur-csv-importer";
|
||||||
import { ButtercupCsvImporter } from "../importers/buttercup-csv-importer";
|
import { ButtercupCsvImporter } from "../../importers/buttercup-csv-importer";
|
||||||
import { ChromeCsvImporter } from "../importers/chrome-csv-importer";
|
import { ChromeCsvImporter } from "../../importers/chrome-csv-importer";
|
||||||
import { ClipperzHtmlImporter } from "../importers/clipperz-html-importer";
|
import { ClipperzHtmlImporter } from "../../importers/clipperz-html-importer";
|
||||||
import { CodebookCsvImporter } from "../importers/codebook-csv-importer";
|
import { CodebookCsvImporter } from "../../importers/codebook-csv-importer";
|
||||||
import { DashlaneCsvImporter } from "../importers/dashlane/dashlane-csv-importer";
|
import { DashlaneCsvImporter } from "../../importers/dashlane/dashlane-csv-importer";
|
||||||
import { DashlaneJsonImporter } from "../importers/dashlane/dashlane-json-importer";
|
import { DashlaneJsonImporter } from "../../importers/dashlane/dashlane-json-importer";
|
||||||
import { EncryptrCsvImporter } from "../importers/encryptr-csv-importer";
|
import { EncryptrCsvImporter } from "../../importers/encryptr-csv-importer";
|
||||||
import { EnpassCsvImporter } from "../importers/enpass/enpass-csv-importer";
|
import { EnpassCsvImporter } from "../../importers/enpass/enpass-csv-importer";
|
||||||
import { EnpassJsonImporter } from "../importers/enpass/enpass-json-importer";
|
import { EnpassJsonImporter } from "../../importers/enpass/enpass-json-importer";
|
||||||
import { FirefoxCsvImporter } from "../importers/firefox-csv-importer";
|
import { FirefoxCsvImporter } from "../../importers/firefox-csv-importer";
|
||||||
import { FSecureFskImporter } from "../importers/fsecure/fsecure-fsk-importer";
|
import { FSecureFskImporter } from "../../importers/fsecure/fsecure-fsk-importer";
|
||||||
import { GnomeJsonImporter } from "../importers/gnome-json-importer";
|
import { GnomeJsonImporter } from "../../importers/gnome-json-importer";
|
||||||
import { ImportError } from "../importers/import-error";
|
import { ImportError } from "../../importers/import-error";
|
||||||
import { Importer } from "../importers/importer";
|
import { Importer } from "../../importers/importer";
|
||||||
import { KasperskyTxtImporter } from "../importers/kaspersky-txt-importer";
|
import { KasperskyTxtImporter } from "../../importers/kaspersky-txt-importer";
|
||||||
import { KeePass2XmlImporter } from "../importers/keepass2-xml-importer";
|
import { KeePass2XmlImporter } from "../../importers/keepass2-xml-importer";
|
||||||
import { KeePassXCsvImporter } from "../importers/keepassx-csv-importer";
|
import { KeePassXCsvImporter } from "../../importers/keepassx-csv-importer";
|
||||||
import { KeeperCsvImporter } from "../importers/keeper/keeper-csv-importer";
|
import { KeeperCsvImporter } from "../../importers/keeper/keeper-csv-importer";
|
||||||
import { LastPassCsvImporter } from "../importers/lastpass-csv-importer";
|
import { LastPassCsvImporter } from "../../importers/lastpass-csv-importer";
|
||||||
import { LogMeOnceCsvImporter } from "../importers/logmeonce-csv-importer";
|
import { LogMeOnceCsvImporter } from "../../importers/logmeonce-csv-importer";
|
||||||
import { MeldiumCsvImporter } from "../importers/meldium-csv-importer";
|
import { MeldiumCsvImporter } from "../../importers/meldium-csv-importer";
|
||||||
import { MSecureCsvImporter } from "../importers/msecure-csv-importer";
|
import { MSecureCsvImporter } from "../../importers/msecure-csv-importer";
|
||||||
import { MykiCsvImporter } from "../importers/myki-csv-importer";
|
import { MykiCsvImporter } from "../../importers/myki-csv-importer";
|
||||||
import { NordPassCsvImporter } from "../importers/nordpass-csv-importer";
|
import { NordPassCsvImporter } from "../../importers/nordpass-csv-importer";
|
||||||
import { OnePassword1PifImporter } from "../importers/onepassword/onepassword-1pif-importer";
|
import { OnePassword1PifImporter } from "../../importers/onepassword/onepassword-1pif-importer";
|
||||||
import { OnePassword1PuxImporter } from "../importers/onepassword/onepassword-1pux-importer";
|
import { OnePassword1PuxImporter } from "../../importers/onepassword/onepassword-1pux-importer";
|
||||||
import { OnePasswordMacCsvImporter } from "../importers/onepassword/onepassword-mac-csv-importer";
|
import { OnePasswordMacCsvImporter } from "../../importers/onepassword/onepassword-mac-csv-importer";
|
||||||
import { OnePasswordWinCsvImporter } from "../importers/onepassword/onepassword-win-csv-importer";
|
import { OnePasswordWinCsvImporter } from "../../importers/onepassword/onepassword-win-csv-importer";
|
||||||
import { PadlockCsvImporter } from "../importers/padlock-csv-importer";
|
import { PadlockCsvImporter } from "../../importers/padlock-csv-importer";
|
||||||
import { PassKeepCsvImporter } from "../importers/passkeep-csv-importer";
|
import { PassKeepCsvImporter } from "../../importers/passkeep-csv-importer";
|
||||||
import { PasskyJsonImporter } from "../importers/passky/passky-json-importer";
|
import { PasskyJsonImporter } from "../../importers/passky/passky-json-importer";
|
||||||
import { PassmanJsonImporter } from "../importers/passman-json-importer";
|
import { PassmanJsonImporter } from "../../importers/passman-json-importer";
|
||||||
import { PasspackCsvImporter } from "../importers/passpack-csv-importer";
|
import { PasspackCsvImporter } from "../../importers/passpack-csv-importer";
|
||||||
import { PasswordAgentCsvImporter } from "../importers/passwordagent-csv-importer";
|
import { PasswordAgentCsvImporter } from "../../importers/passwordagent-csv-importer";
|
||||||
import { PasswordBossJsonImporter } from "../importers/passwordboss-json-importer";
|
import { PasswordBossJsonImporter } from "../../importers/passwordboss-json-importer";
|
||||||
import { PasswordDragonXmlImporter } from "../importers/passworddragon-xml-importer";
|
import { PasswordDragonXmlImporter } from "../../importers/passworddragon-xml-importer";
|
||||||
import { PasswordSafeXmlImporter } from "../importers/passwordsafe-xml-importer";
|
import { PasswordSafeXmlImporter } from "../../importers/passwordsafe-xml-importer";
|
||||||
import { PasswordWalletTxtImporter } from "../importers/passwordwallet-txt-importer";
|
import { PasswordWalletTxtImporter } from "../../importers/passwordwallet-txt-importer";
|
||||||
import { PsonoJsonImporter } from "../importers/psono/psono-json-importer";
|
import { PsonoJsonImporter } from "../../importers/psono/psono-json-importer";
|
||||||
import { RememBearCsvImporter } from "../importers/remembear-csv-importer";
|
import { RememBearCsvImporter } from "../../importers/remembear-csv-importer";
|
||||||
import { RoboFormCsvImporter } from "../importers/roboform-csv-importer";
|
import { RoboFormCsvImporter } from "../../importers/roboform-csv-importer";
|
||||||
import { SafariCsvImporter } from "../importers/safari-csv-importer";
|
import { SafariCsvImporter } from "../../importers/safari-csv-importer";
|
||||||
import { SafeInCloudXmlImporter } from "../importers/safeincloud-xml-importer";
|
import { SafeInCloudXmlImporter } from "../../importers/safeincloud-xml-importer";
|
||||||
import { SaferPassCsvImporter } from "../importers/saferpass-csv-importer";
|
import { SaferPassCsvImporter } from "../../importers/saferpass-csv-importer";
|
||||||
import { SecureSafeCsvImporter } from "../importers/securesafe-csv-importer";
|
import { SecureSafeCsvImporter } from "../../importers/securesafe-csv-importer";
|
||||||
import { SplashIdCsvImporter } from "../importers/splashid-csv-importer";
|
import { SplashIdCsvImporter } from "../../importers/splashid-csv-importer";
|
||||||
import { StickyPasswordXmlImporter } from "../importers/stickypassword-xml-importer";
|
import { StickyPasswordXmlImporter } from "../../importers/stickypassword-xml-importer";
|
||||||
import { TrueKeyCsvImporter } from "../importers/truekey-csv-importer";
|
import { TrueKeyCsvImporter } from "../../importers/truekey-csv-importer";
|
||||||
import { UpmCsvImporter } from "../importers/upm-csv-importer";
|
import { UpmCsvImporter } from "../../importers/upm-csv-importer";
|
||||||
import { YotiCsvImporter } from "../importers/yoti-csv-importer";
|
import { YotiCsvImporter } from "../../importers/yoti-csv-importer";
|
||||||
import { ZohoVaultCsvImporter } from "../importers/zohovault-csv-importer";
|
import { ZohoVaultCsvImporter } from "../../importers/zohovault-csv-importer";
|
||||||
import { Utils } from "../misc/utils";
|
import { Utils } from "../../misc/utils";
|
||||||
import { ImportResult } from "../models/domain/import-result";
|
import { ImportResult } from "../../models/domain/import-result";
|
||||||
import { CipherRequest } from "../models/request/cipher.request";
|
import { CipherRequest } from "../../models/request/cipher.request";
|
||||||
import { CollectionRequest } from "../models/request/collection.request";
|
import { CollectionRequest } from "../../models/request/collection.request";
|
||||||
import { FolderRequest } from "../models/request/folder.request";
|
import { FolderRequest } from "../../models/request/folder.request";
|
||||||
import { ImportCiphersRequest } from "../models/request/import-ciphers.request";
|
import { ImportCiphersRequest } from "../../models/request/import-ciphers.request";
|
||||||
import { ImportOrganizationCiphersRequest } from "../models/request/import-organization-ciphers.request";
|
import { ImportOrganizationCiphersRequest } from "../../models/request/import-organization-ciphers.request";
|
||||||
import { KvpRequest } from "../models/request/kvp.request";
|
import { KvpRequest } from "../../models/request/kvp.request";
|
||||||
import { ErrorResponse } from "../models/response/error.response";
|
import { ErrorResponse } from "../../models/response/error.response";
|
||||||
import { CipherView } from "../models/view/cipher.view";
|
import { CipherView } from "../../models/view/cipher.view";
|
||||||
|
|
||||||
export class ImportService implements ImportServiceAbstraction {
|
export class ImportService implements ImportServiceAbstraction {
|
||||||
featuredImportOptions = featuredImportOptions as readonly ImportOption[];
|
featuredImportOptions = featuredImportOptions as readonly ImportOption[];
|
||||||
@@ -91,7 +91,7 @@ export class ImportService implements ImportServiceAbstraction {
|
|||||||
constructor(
|
constructor(
|
||||||
private cipherService: CipherService,
|
private cipherService: CipherService,
|
||||||
private folderService: FolderService,
|
private folderService: FolderService,
|
||||||
private apiService: ApiService,
|
private importApiService: ImportApiServiceAbstraction,
|
||||||
private i18nService: I18nService,
|
private i18nService: I18nService,
|
||||||
private collectionService: CollectionService,
|
private collectionService: CollectionService,
|
||||||
private cryptoService: CryptoService
|
private cryptoService: CryptoService
|
||||||
@@ -308,7 +308,7 @@ export class ImportService implements ImportServiceAbstraction {
|
|||||||
request.folderRelationships.push(new KvpRequest(r[0], r[1]))
|
request.folderRelationships.push(new KvpRequest(r[0], r[1]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await this.apiService.postImportCiphers(request);
|
return await this.importApiService.postImportCiphers(request);
|
||||||
} else {
|
} else {
|
||||||
const request = new ImportOrganizationCiphersRequest();
|
const request = new ImportOrganizationCiphersRequest();
|
||||||
for (let i = 0; i < importResult.ciphers.length; i++) {
|
for (let i = 0; i < importResult.ciphers.length; i++) {
|
||||||
@@ -328,7 +328,7 @@ export class ImportService implements ImportServiceAbstraction {
|
|||||||
request.collectionRelationships.push(new KvpRequest(r[0], r[1]))
|
request.collectionRelationships.push(new KvpRequest(r[0], r[1]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return await this.apiService.postImportOrganizationCiphers(organizationId, request);
|
return await this.importApiService.postImportOrganizationCiphers(organizationId, request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user