Esempio n. 1
0
        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
            });
        }