BaseCmd.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using qdr.app.tss.client.console;
  2. using Quadarax.Foundation.Core.QConsole;
  3. using Quadarax.Foundation.Core.QConsole.Argument;
  4. using Quadarax.Foundation.Core.QConsole.Command.Base;
  5. using System.IO.Abstractions;
  6. namespace qdr.app.qbstack.Commands
  7. {
  8. abstract class BaseCmd : AbstractCommand
  9. {
  10. #region *** Constants ***
  11. private const string ARG_URL_NAME = "url";
  12. private const string ARG_URL_HINT = "url";
  13. private const string ARG_URL_DESCR = "The WordPress site URL where TSS plugin installed (e.g. https://example.com).";
  14. private const string ARG_APIKEY_NAME = "apiKey";
  15. private const string ARG_APIKEY_HINT = "api_key";
  16. private const string ARG_APIKEY_DESCR = "API key for authentication (can be obtain from TSS plugin setting).";
  17. #endregion
  18. #region *** Private fields ***
  19. #endregion
  20. #region *** Properties ***
  21. protected IFileSystem FileSystem => GetContext<CommandContext>().FileSystem;
  22. protected Uri Url {get; private set;} = new Uri("https://example.com/");
  23. protected string ApiKey {get; private set;} = string.Empty;
  24. #endregion
  25. #region *** Constructors ***
  26. protected BaseCmd(Engine engine) : base(engine)
  27. {
  28. }
  29. #endregion
  30. #region *** Operations ***
  31. #endregion
  32. #region *** Overrides ***
  33. protected override IEnumerable<AbstractArgument> OnSetupArguments()
  34. {
  35. var list = base.OnSetupArguments().ToList();
  36. list.Add(new NamedArgument(ARG_URL_NAME, ARG_URL_DESCR, ARG_URL_HINT, Quadarax.Foundation.Core.QConsole.Value.TypeValuesEnum.String, string.Empty, true));
  37. list.Add(new NamedArgument(ARG_APIKEY_NAME, ARG_APIKEY_DESCR, ARG_APIKEY_HINT, Quadarax.Foundation.Core.QConsole.Value.TypeValuesEnum.String, string.Empty,true));
  38. return list;
  39. }
  40. protected override void OnValidateArguments()
  41. {
  42. base.OnValidateArguments();
  43. var url = GetArgumentValueOrDefault<string>(ARG_URL_NAME);
  44. if (!Uri.TryCreate(url, UriKind.Absolute, out var uri))
  45. throw new ArgumentException($"URL '{url}' not valid.", ARG_URL_NAME);
  46. Url = uri;
  47. ApiKey = GetArgumentValueOrDefault<string>(ARG_APIKEY_NAME)!;
  48. }
  49. #endregion
  50. }
  51. }