protected override Task <HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { var invokeWebReqCmd = new InvokeWebRequestCommand { Uri = request.RequestUri, Certificate = Certificate, CertificateThumbprint = CertificateThumbprint, Credential = Credential, Proxy = Proxy, ProxyCredential = ProxyCredential, TransferEncoding = TransferEncoding, UserAgent = UserAgent }; if (DisableKeepAlive.HasValue) { invokeWebReqCmd.DisableKeepAlive = DisableKeepAlive.GetValueOrDefault(); } if (MaximumRedirection.HasValue) { invokeWebReqCmd.MaximumRedirection = MaximumRedirection.GetValueOrDefault(); } if (ProxyUseDefaultCredentials.HasValue) { invokeWebReqCmd.ProxyUseDefaultCredentials = ProxyUseDefaultCredentials.GetValueOrDefault(); } if (TimeoutSec.HasValue) { invokeWebReqCmd.TimeoutSec = TimeoutSec.GetValueOrDefault(); } if (UseBasicParsing.HasValue) { invokeWebReqCmd.UseBasicParsing = UseBasicParsing.GetValueOrDefault(); } if (UseDefaultCredentials.HasValue) { invokeWebReqCmd.UseDefaultCredentials = UseDefaultCredentials.GetValueOrDefault(); } if (Enum.TryParse <WebRequestMethod>(request.Method.Method, ignoreCase: true, out var webRequestMethod)) { invokeWebReqCmd.Method = webRequestMethod; } else { #if NETFRAMEWORK throw new PSNotSupportedException($"Unsupported non-standard HTTP method: {request.Method}"); #else // NETCOREAPP invokeWebReqCmd.CustomMethod = request.Method.Method; #endif } invokeWebReqCmd.Headers = request.Headers?.ToDictionary( kvp => kvp.Key, kvp => (object)(kvp.Value.ToArray() switch { { Length: 1 } singleElemArry => singleElemArry[0], string[] array => array, _ => "", }),
// Module defining this command // Optional custom code for this activity /// <summary> /// Returns a configured instance of System.Management.Automation.PowerShell, pre-populated with the command to run. /// </summary> /// <param name="context">The NativeActivityContext for the currently running activity.</param> /// <returns>A populated instance of Sytem.Management.Automation.PowerShell</returns> /// <remarks>The infrastructure takes responsibility for closing and disposing the PowerShell instance returned.</remarks> protected override ActivityImplementationContext GetPowerShell(NativeActivityContext context) { System.Management.Automation.PowerShell invoker = global::System.Management.Automation.PowerShell.Create(); System.Management.Automation.PowerShell targetCommand = invoker.AddCommand(PSCommandName); // Initialize the arguments if (Method.Expression != null) { targetCommand.AddParameter("Method", Method.Get(context)); } if (UseBasicParsing.Expression != null) { targetCommand.AddParameter("UseBasicParsing", UseBasicParsing.Get(context)); } if (Uri.Expression != null) { targetCommand.AddParameter("Uri", Uri.Get(context)); } if (WebSession.Expression != null) { targetCommand.AddParameter("WebSession", WebSession.Get(context)); } if (SessionVariable.Expression != null) { targetCommand.AddParameter("SessionVariable", SessionVariable.Get(context)); } if (Credential.Expression != null) { targetCommand.AddParameter("Credential", Credential.Get(context)); } if (UseDefaultCredentials.Expression != null) { targetCommand.AddParameter("UseDefaultCredentials", UseDefaultCredentials.Get(context)); } if (CertificateThumbprint.Expression != null) { targetCommand.AddParameter("CertificateThumbprint", CertificateThumbprint.Get(context)); } if (Certificate.Expression != null) { targetCommand.AddParameter("Certificate", Certificate.Get(context)); } if (UserAgent.Expression != null) { targetCommand.AddParameter("UserAgent", UserAgent.Get(context)); } if (DisableKeepAlive.Expression != null) { targetCommand.AddParameter("DisableKeepAlive", DisableKeepAlive.Get(context)); } if (TimeoutSec.Expression != null) { targetCommand.AddParameter("TimeoutSec", TimeoutSec.Get(context)); } if (Headers.Expression != null) { targetCommand.AddParameter("Headers", Headers.Get(context)); } if (MaximumRedirection.Expression != null) { targetCommand.AddParameter("MaximumRedirection", MaximumRedirection.Get(context)); } if (Proxy.Expression != null) { targetCommand.AddParameter("Proxy", Proxy.Get(context)); } if (ProxyCredential.Expression != null) { targetCommand.AddParameter("ProxyCredential", ProxyCredential.Get(context)); } if (ProxyUseDefaultCredentials.Expression != null) { targetCommand.AddParameter("ProxyUseDefaultCredentials", ProxyUseDefaultCredentials.Get(context)); } if (Body.Expression != null) { targetCommand.AddParameter("Body", Body.Get(context)); } if (ContentType.Expression != null) { targetCommand.AddParameter("ContentType", ContentType.Get(context)); } if (TransferEncoding.Expression != null) { targetCommand.AddParameter("TransferEncoding", TransferEncoding.Get(context)); } if (InFile.Expression != null) { targetCommand.AddParameter("InFile", InFile.Get(context)); } if (OutFile.Expression != null) { targetCommand.AddParameter("OutFile", OutFile.Get(context)); } if (PassThru.Expression != null) { targetCommand.AddParameter("PassThru", PassThru.Get(context)); } return(new ActivityImplementationContext() { PowerShellInstance = invoker }); }