| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using BO.AppServer.Metadata.Enums;
- using BO.Console.Commands.Base;
- using BO.Console.Commands.Enums;
- using Quadarax.Foundation.Core.QConsole;
- using Quadarax.Foundation.Core.QConsole.Argument;
- using Quadarax.Foundation.Core.QConsole.Attributes;
- using Quadarax.Foundation.Core.QConsole.Value;
- using Quadarax.Foundation.Core.Value;
- using Quadarax.Foundation.Core.Value.Extensions;
- // ReSharper disable InconsistentNaming
- namespace BO.Console.Commands.User
- {
- [CommandDefinition]
- internal class UserGetAPIKeyCommand : AbstractGetCommand
- {
- #region *** Constants ***
- private const string CS_CMD_USERGET_NAME = "user_getapikey";
- private const string CS_CMD_USERGET_DESCR = "Get default single user workspace api-key or api-password and process result.";
- private const string CS_ARG_NAME_TYPE = "outt";
- private const string CS_ARG_HINT_TYPE = "<output_target>";
- private const string CS_ARG_DESC_TYPE = "Defines output target (no - none, clp - clipboard,var - env. variable). Default is no.";
- private const string CS_ARG_NAME_VALUE = "vt";
- private const string CS_ARG_HINT_VALUE = "<value_type>";
- private const string CS_ARG_DESC_VALUE = "Defines value type to return (apikey,apipwd,apiboth). Default is apiboth.";
- private const string CS_ENV_VAR_VALUE_KEY = "bo_apikey";
- private const string CS_ENV_VAR_VALUE_PWD = "bo_apipwd";
- #endregion
- #region *** Properties ***
- public override string Name => CS_CMD_USERGET_NAME;
- public override string Description => CS_CMD_USERGET_DESCR;
- private OutputTargetEnum Target { get; set; }
- private ValueTypeApiKeyEnum ValueType { get; set; }
- #endregion
- #region *** Constructor ***
- public UserGetAPIKeyCommand(Engine engine) : base(engine)
- {
- }
- #endregion
- #region *** EXECUTE ***
- protected override Result OnExecute()
- {
- var user = Client.GetUserAsync(IdentificationType, IdentificationValue).Result;
- WriteInfo($"User '{user.Name}' [{user.Id}] validated (Created:{user.Created.ToFileShortDateTimeString()}, Logged:{user.LastLogged?.ToFileShortDateTimeString()}) ");
- var workspaces = Client.GetWorkspacesAsync(WorkspaceScopeEnums.MyDefault, user.Name).Result;
- if (!workspaces.Any())
- throw new Exception($"No default workspace for user '{user.Name}' set.");
- var workspace = workspaces.First();
- WriteInfo($"User has default workspace named '{workspace.Name}' [{workspace.Id}] (Created:{workspace.Audit.Created.ToFileShortDateTimeString()}, Changed:{workspace.Audit.Changed?.ToFileShortDateTimeString()})");
- WriteCaption($"APIKey: {workspace.ApiKeyNormalized}");
- WriteInfo($"APIPassword: {workspace.Apipassword}");
- var value = ValueType == ValueTypeApiKeyEnum.ApiKey
- ? workspace.ApiKeyNormalized
- : ValueType == ValueTypeApiKeyEnum.ApiPwd ? workspace.Apipassword : workspace.ApiKeyNormalized + ";" + workspace.Apipassword;
- switch (Target)
- {
- case OutputTargetEnum.No:
- WriteCaption("No output target set.");
- break;
- case OutputTargetEnum.Clp:
- TextCopy.ClipboardService.SetText(value);
- WriteCaption($"Value '{value}' was set to clipboard.");
- break;
- case OutputTargetEnum.Var:
- if (ValueType == ValueTypeApiKeyEnum.ApiKey || ValueType == ValueTypeApiKeyEnum.ApiBoth)
- {
- Environment.SetEnvironmentVariable(CS_ENV_VAR_VALUE_KEY, workspace.ApiKeyNormalized, EnvironmentVariableTarget.Process);
- WriteCaption($"Value '{workspace.ApiKeyNormalized}' was set to environment value '{CS_ENV_VAR_VALUE_KEY}' in scope current process.");
- }
- if (ValueType == ValueTypeApiKeyEnum.ApiPwd || ValueType == ValueTypeApiKeyEnum.ApiBoth)
- {
- Environment.SetEnvironmentVariable(CS_ENV_VAR_VALUE_PWD, workspace.Apipassword, EnvironmentVariableTarget.Process);
- WriteCaption($"Value '{workspace.Apipassword}' was set to environment value '{CS_ENV_VAR_VALUE_PWD}' in scope current process.");
- }
- WriteInfo($"To use environment value: use %{CS_ENV_VAR_VALUE_KEY}% and/or %{CS_ENV_VAR_VALUE_PWD}%");
- break;
- }
- return new Result();
- }
- #endregion
- #region *** Private Overrides ***
- protected override void OnValidateArguments()
- {
- base.OnValidateArguments();
- ValidateArgumentValueEnum<OutputTargetEnum>(CS_ARG_NAME_TYPE);
- ValidateArgumentValueEnum<ValueTypeApiKeyEnum>(CS_ARG_NAME_VALUE);
- Target = GetArgumentValueOrDefault<OutputTargetEnum>(CS_ARG_NAME_TYPE);
- ValueType = GetArgumentValueOrDefault<ValueTypeApiKeyEnum>(CS_ARG_NAME_VALUE);
- }
- protected override IEnumerable<AbstractArgument> OnSetupArguments()
- {
- var args = base.OnSetupArguments().ToList();
- args.Add(new NamedArgument(CS_ARG_NAME_TYPE, CS_ARG_DESC_TYPE, CS_ARG_HINT_TYPE, TypeValuesEnum.String, "no", false));
- args.Add(new NamedArgument(CS_ARG_NAME_VALUE, CS_ARG_DESC_VALUE, CS_ARG_HINT_VALUE, TypeValuesEnum.String, "apiboth", false));
- return args;
- }
- #endregion
- #region *** Private operations ***
- #endregion
- }
- }
|