示例#1
0
        public async Task <IActionResult> Execute([FromBody] ExecuteScriptRequest request)
        {
            PrepareCommandArguments(request);

            try
            {
                var result = await _commandExecutor.ExecuteAsync();

                ExecuteScriptResponse response = new ExecuteScriptResponse {
                    Logs = await GetLogs()
                };
                switch (result)
                {
                case 0:
                    return(Ok(response));
                }

                throw new HttpError(HttpStatusCode.InternalServerError, result.ToString())
                      {
                          Logs = await GetLogs()
                      };
            }
            catch (BuildScriptLocatorException e)
            {
                throw new HttpError(HttpStatusCode.BadRequest, ErrorCodes.ScriptNotFound, e.Message);
            }
            catch (TargetNotFoundException e)
            {
                throw new HttpError(HttpStatusCode.BadRequest, ErrorCodes.TargetNotFound, e.Message);
            }
        }
示例#2
0
        public async Task <IActionResult> Execute([FromBody] ExecuteScriptRequest request)
        {
            PrepareCommandArguments(request);

            try
            {
                var version = Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyFileVersionAttribute>().Version;
                _logger.LogInformation($"Flubu v.{version}");
                var result = await _commandExecutor.ExecuteAsync();

                ExecuteScriptResponse response = new ExecuteScriptResponse {
                    Logs = await GetLogs()
                };
                switch (result)
                {
                case 0:
                    return(Ok(response));
                }

                throw new HttpError(HttpStatusCode.InternalServerError, result.ToString())
                      {
                          Logs = await GetLogs()
                      };
            }
            catch (BuildScriptLocatorException e)
            {
                throw new HttpError(HttpStatusCode.BadRequest, ErrorCodes.ScriptNotFound, e.Message);
            }
            catch (TargetNotFoundException e)
            {
                throw new HttpError(HttpStatusCode.BadRequest, ErrorCodes.TargetNotFound, e.Message);
            }
        }
示例#3
0
        public static ExecuteScriptResponse Unmarshall(UnmarshallerContext _ctx)
        {
            ExecuteScriptResponse executeScriptResponse = new ExecuteScriptResponse();

            executeScriptResponse.HttpResponse = _ctx.HttpResponse;
            executeScriptResponse.RequestId    = _ctx.StringValue("ExecuteScript.RequestId");
            executeScriptResponse.ErrorCode    = _ctx.StringValue("ExecuteScript.ErrorCode");
            executeScriptResponse.ErrorMessage = _ctx.StringValue("ExecuteScript.ErrorMessage");
            executeScriptResponse.Success      = _ctx.BooleanValue("ExecuteScript.Success");

            List <ExecuteScriptResponse.ExecuteScript_Result> executeScriptResponse_results = new List <ExecuteScriptResponse.ExecuteScript_Result>();

            for (int i = 0; i < _ctx.Length("ExecuteScript.Results.Length"); i++)
            {
                ExecuteScriptResponse.ExecuteScript_Result result = new ExecuteScriptResponse.ExecuteScript_Result();
                result.Success  = _ctx.BooleanValue("ExecuteScript.Results[" + i + "].Success");
                result.Message  = _ctx.StringValue("ExecuteScript.Results[" + i + "].Message");
                result.RowCount = _ctx.LongValue("ExecuteScript.Results[" + i + "].RowCount");

                List <string> result_columnNames = new List <string>();
                for (int j = 0; j < _ctx.Length("ExecuteScript.Results[" + i + "].ColumnNames.Length"); j++)
                {
                    result_columnNames.Add(_ctx.StringValue("ExecuteScript.Results[" + i + "].ColumnNames[" + j + "]"));
                }
                result.ColumnNames = result_columnNames;

                List <Dictionary <string, string> > result_rows = new List <Dictionary <string, string> >();
                for (int j = 0; j < _ctx.Length("ExecuteScript.Results[" + i + "].Rows.Length"); j++)
                {
                    Dictionary <string, string> tmp = new Dictionary <string, string>()
                    {
                    };
                    foreach (var _item in _ctx.ResponseDictionary)
                    {
                        string prefix = "ExecuteScript.Results[" + i + "].Rows[" + j + "].";
                        if (_item.Key.IndexOf(prefix) == 0)
                        {
                            tmp.Add(_item.Key.Substring(prefix.Length), _item.Value);
                        }
                    }
                    if (tmp.Count > 0)
                    {
                        result_rows.Add(tmp);
                    }
                }
                result.Rows = result_rows;

                executeScriptResponse_results.Add(result);
            }
            executeScriptResponse.Results = executeScriptResponse_results;

            return(executeScriptResponse);
        }
示例#4
0
        public async Task <ExecuteScriptResponse> Evaluate(ExecuteScriptRequest request)
        {
            var result = new ExecuteScriptResponse();

            try
            {
                var response = await Evaluate(request.Script ?? string.Empty);

                result.Result = response != null?SerializeObject(response, 2) : "Ok";
            }
            catch (Exception ex)
            {
                result.Exception = ex.ToString();
            }

            return(result);
        }