diff --git a/apps/cli/src/oss-serve-configurator.ts b/apps/cli/src/oss-serve-configurator.ts index dec09447839..2834c71cf6d 100644 --- a/apps/cli/src/oss-serve-configurator.ts +++ b/apps/cli/src/oss-serve-configurator.ts @@ -164,6 +164,10 @@ export class OssServeConfigurator { this.serviceContainer.searchService, this.serviceContainer.encryptService, this.serviceContainer.apiService, + this.serviceContainer.platformUtilsService, + this.serviceContainer.keyService, + this.serviceContainer.cryptoFunctionService, + this.serviceContainer.sendApiService, ); this.sendEditCommand = new SendEditCommand( this.serviceContainer.sendService, diff --git a/apps/cli/src/tools/send/commands/get.command.ts b/apps/cli/src/tools/send/commands/get.command.ts index 1d651c50bf0..b577e911a3d 100644 --- a/apps/cli/src/tools/send/commands/get.command.ts +++ b/apps/cli/src/tools/send/commands/get.command.ts @@ -6,15 +6,22 @@ import { firstValueFrom } from "rxjs"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service"; +import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; +import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; import { SendView } from "@bitwarden/common/tools/send/models/view/send.view"; +import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction"; import { SendService } from "@bitwarden/common/tools/send/services/send.service.abstraction"; +import { KeyService } from "@bitwarden/key-management"; import { DownloadCommand } from "../../../commands/download.command"; import { Response } from "../../../models/response"; import { SendResponse } from "../models/send.response"; +import { SendReceiveCommand } from "./receive.command"; + + export class SendGetCommand extends DownloadCommand { constructor( private sendService: SendService, @@ -22,6 +29,10 @@ export class SendGetCommand extends DownloadCommand { private searchService: SearchService, encryptService: EncryptService, apiService: ApiService, + private platformUtilsService: PlatformUtilsService, + private keyService: KeyService, + private cryptoFunctionService: CryptoFunctionService, + private sendApiService: SendApiService, ) { super(encryptService, apiService); } @@ -67,6 +78,20 @@ export class SendGetCommand extends DownloadCommand { } } + if (options?.file || options?.output || options?.raw) { + const sendWithUrl = new SendResponse(sends, webVaultUrl); + const receiveCommand = new SendReceiveCommand( + this.keyService, + this.encryptService, + this.cryptoFunctionService, + this.platformUtilsService, + this.environmentService, + this.sendApiService, + this.apiService, + ); + return await receiveCommand.run(sendWithUrl.accessUrl, options); + } + return selector(sends); } diff --git a/apps/cli/src/tools/send/send.program.ts b/apps/cli/src/tools/send/send.program.ts index 052faa33867..b4df4a9c6c7 100644 --- a/apps/cli/src/tools/send/send.program.ts +++ b/apps/cli/src/tools/send/send.program.ts @@ -163,7 +163,15 @@ export class SendProgram extends BaseProgram { return new Command("get") .arguments("") .description("Get Sends owned by you.") - .option("--output ", "Output directory or filename for attachment.") + .option("--file", "Specifies to return the file content of a Send") + .option("--password ", "Password needed to access the Send.") + .option("--passwordenv ", "Environment variable storing the Send's password") + .option( + "--passwordfile ", + "Path to a file containing the Sends password as its first line", + ) + .option("--obj", "Return the Send's json object rather than the Send's content") + .option("--output ", "Specify a file path to save a File-type Send to") .option("--text", "Specifies to return the text content of a Send") .on("--help", () => { writeLn(""); @@ -192,6 +200,10 @@ export class SendProgram extends BaseProgram { this.serviceContainer.searchService, this.serviceContainer.encryptService, this.serviceContainer.apiService, + this.serviceContainer.platformUtilsService, + this.serviceContainer.keyService, + this.serviceContainer.cryptoFunctionService, + this.serviceContainer.sendApiService, ); const response = await cmd.run(id, options); this.processResponse(response); @@ -252,6 +264,10 @@ export class SendProgram extends BaseProgram { this.serviceContainer.searchService, this.serviceContainer.encryptService, this.serviceContainer.apiService, + this.serviceContainer.platformUtilsService, + this.serviceContainer.keyService, + this.serviceContainer.cryptoFunctionService, + this.serviceContainer.sendApiService, ); const cmd = new SendEditCommand( this.serviceContainer.sendService,