Ejemplo n.º 1
0
        public StartScriptResponseData Post_StartScript([FromBody] StartOrRunScriptRequestData requestData)
        {
            int processId;

            try
            {
                processId = _scriptRunner.StartScript(requestData.ScriptName,
                                                      requestData.ScriptArgs,
                                                      requestData.StdIn);
            }
            catch (WDException e)
            {
                return(new StartScriptResponseData()
                {
                    Success = false,
                    ErrorMessage = e.Message,
                    ProcessId = -1
                });
            }

            return(new StartScriptResponseData()
            {
                Success = true,
                ErrorMessage = "",
                ProcessId = processId
            });
        }
Ejemplo n.º 2
0
        public RunOrStopScriptResponseData Post_RunScript([FromBody] StartOrRunScriptRequestData requestData)
        {
            int           exitCode;
            List <string> outputLines;
            List <string> errorLines;

            try
            {
                (exitCode, outputLines, errorLines) =
                    _scriptRunner.RunAndWaitForScript(requestData.ScriptName,
                                                      requestData.ScriptArgs,
                                                      requestData.StdIn);
            }
            catch (WDException e)
            {
                return(new RunOrStopScriptResponseData()
                {
                    Success = false,
                    ErrorMessage = e.Message,
                    ScriptExitCode = -1,
                    StdoutLines = new List <string>(),
                    StderrLines = new List <string>()
                });
            }

            return(new RunOrStopScriptResponseData()
            {
                Success = true,
                ErrorMessage = "",
                ScriptExitCode = exitCode,
                StdoutLines = outputLines,
                StderrLines = errorLines
            });
        }
Ejemplo n.º 3
0
        /// <see cref="WirelessDisplay.Common.IRemoteScriptRunner.StartScript"></see>
        async Task <int> IRemoteScriptRunner.StartScript(string scriptName, string scriptArgs, string stdin,
                                                         int shortTimeoutMillis)
        {
            var postData1 = new StartOrRunScriptRequestData()
            {
                ScriptName = scriptName,
                ScriptArgs = scriptArgs,
                StdIn      = stdin
            };

            // If an exception occurs, let it handle the caller
            StartScriptResponseData rd = await
                                         performPost <StartOrRunScriptRequestData, StartScriptResponseData>(postData1,
                                                                                                            MagicStrings.RESTAPI_STARTSCRIPT);

            if (!rd.Success)
            {
                string msg = $"Could not start remote script '{scriptName} {scriptArgs}'. Error-Message from server: '{rd.ErrorMessage}'";
                _logger?.LogWarning(msg);
                throw new WDException(msg);
            }

            int processId = rd.ProcessId;

            // Wait the givem time (alltough the server also has waited before)
            await Task.Delay(shortTimeoutMillis);

            bool startedSuccessfully = await((IRemoteScriptRunner)this).IsScriptRunning(
                processId);

            if (!startedSuccessfully)
            {
                string msg = $"The started script '{scriptName} {scriptArgs}' with process-ID {processId} terminated immediately.";
                _logger?.LogWarning(msg);
                throw new WDException(msg);
            }

            return(processId);
        }
Ejemplo n.º 4
0
        /// <see cref="WirelessDisplay.Common.IRemoteScriptRunner.RunAndWaitForScript"></see>
        async Task <Tuple <int, List <string>, List <string> > > IRemoteScriptRunner.RunAndWaitForScript(
            string scriptName, string scriptArgs, string stdin)
        {
            var postData = new StartOrRunScriptRequestData()
            {
                ScriptName = scriptName,
                ScriptArgs = scriptArgs,
                StdIn      = stdin
            };

            // If an exception occurs, let it handle the caller
            RunOrStopScriptResponseData rd = await
                                             performPost <StartOrRunScriptRequestData, RunOrStopScriptResponseData>(postData, MagicStrings.RESTAPI_RUNSCRIPT);

            if (!rd.Success)
            {
                string msg = $"Could not run remote script '{scriptName} {scriptArgs}'. Error-Message from server: '{rd.ErrorMessage}'";
                _logger?.LogWarning(msg);
                throw new WDException(msg);
            }

            return(Tuple.Create(rd.ScriptExitCode, rd.StdoutLines, rd.StderrLines));
        }