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 }); }
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 }); }
/// <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); }
/// <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)); }