Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Management.Automation;
- using System.Collections.Generic;
- // ReSharper disable UnusedAutoPropertyAccessor.Global - for PowerShell purposes
- // ReSharper disable MemberCanBePrivate.Global - for PowerShell purposes
- namespace CoreView.Management.PowerShell.Commands {
- [Cmdlet(VerbsLifecycle.Invoke, "CVApi")]
- public class InvokeCVApiCommand : PSCmdlet {
- [Parameter(Mandatory = false, HelpMessage = "Output folder. If empty, cmdlet folder will be used")]
- public string OutputFolder { get; set; }
- [Parameter(Mandatory = true, HelpMessage = "JSON file containing functions with parameters.", ParameterSetName = "FileToProcess")]
- public string FunctionFilePath { get; set; }
- private readonly ISimpleLogger _logger;
- private readonly IInvocationFileManager _fileManager;
- private readonly ApiInvoker _apiInvoker;
- private readonly IParameterParser<InvokeCvApiInputParameters, InvokeCvApiParsedParameters> _parameterParser;
- private readonly IContextProvider _contextProvider;
- // ReSharper disable once UnusedMember.Global - used automatically
- public InvokeCVApiCommand() {
- _logger = new SimpleLogger(new CmdletLogger(this));
- var fileInteractor = new FileInteractor();
- _fileManager = new InvocationFileManager(_logger, fileInteractor);
- _parameterParser = new InvokeCvApiParameterParser(fileInteractor, _fileManager, _logger);
- _apiInvoker = new ApiInvoker(_logger);
- }
- public InvokeCVApiCommand(IContextProvider contextProvider,
- IInvocationFileManager fileManager,
- ISimpleLogger logger,
- IParameterParser<InvokeCvApiInputParameters, InvokeCvApiParsedParameters> parser) {
- _fileManager = fileManager;
- _logger = logger;
- _parameterParser = parser;
- _apiInvoker = new ApiInvoker(_logger);
- _contextProvider = contextProvider;
- }
- protected override void ProcessRecord() {
- Environment.CurrentDirectory = _contextProvider.GetCurrentDirectory(this);
- base.ProcessRecord();
- var commandParams = new InvokeCvApiInputParameters(
- OutputFolder,
- FunctionFilePath,
- _contextProvider.GetCurrentDirectory(this));
- try {
- var parsedParameters = _parameterParser.Parse(commandParams);
- var invocationResults = InvokeAllApiMethods(parsedParameters);
- _fileManager.WriteLogToFile(_logger, parsedParameters.LogFilePath);
- WriteObject(invocationResults);
- } catch (Exception ex) {
- _logger.Exception("Unexpected exception occurred. Program terminates.", ex);
- }
- }
- internal void ProcessInternal() {
- BeginProcessing();
- ProcessRecord();
- EndProcessing();
- }
- private List<Tuple<FunctionInvocationData, FunctionInvocationResult>> InvokeAllApiMethods(InvokeCvApiParsedParameters parsedParameters) {
- var invocationResults = new List<Tuple<FunctionInvocationData, FunctionInvocationResult>>();
- foreach (var invocationData in parsedParameters.AllRequiredInvocations)
- {
- var invocationResult = _apiInvoker.InvokeApiCommand(invocationData, parsedParameters,
- _contextProvider.GetLegacyContext());
- invocationResults.Add(new Tuple<FunctionInvocationData, FunctionInvocationResult>(invocationData, invocationResult));
- }
- _logger.Info($"All {parsedParameters.AllRequiredInvocations.Count} invocations completed.");
- return invocationResults;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement