Пример #1
0
 private LiveTestResponse MakeBaseResponse()
 {
     LiveTestResponse response = new LiveTestResponse();
     response.Id = this.Id;
     response.JsonRpc = this.JsonRpc;
     return response;
 }
Пример #2
0
 public LiveTestResponse MakeResponse(Exception ex, int errorCode)
 {
     LiveTestResponse response = MakeBaseResponse();
     response.Error = new LiveTestError();
     response.Error.Code = errorCode;
     response.Error.Data = ex;
     return response;
 }
Пример #3
0
        public LiveTestResponse MakeResponse(CommandExecutionResult commandResult, IServiceTracer tracer, IList<DynamicObjectTransform> transforms, Logger logger)
        {
            LiveTestResponse response = MakeBaseResponse();
            if (commandResult.HadErrors)
            {
                if (logger != null)
                {
                    logger.LogAsync("Command failed with errors.");
                    commandResult.LogErrors(logger);
                }

                response.Error = new LiveTestError();
                response.Error.Code = InvalidRequest;
                List<object> errors = new List<object>();
                foreach (object originalError in commandResult.Errors)
                {
                    errors.AddRange(TransformObject(originalError, transforms));
                }

                response.Error.Data = errors.Count == 0 ? null : errors.Count == 1 ? errors[0] : errors;
                if (this.HttpResponse)
                {
                    HttpResponseMessage responseMessage = tracer.HttpResponses.LastOrDefault();
                    if (responseMessage != null)
                    {
                        // Kill the Content property - doesn't work with Newtonsoft.Json serialization
                        HttpResponseMessage clonedMessage = new HttpResponseMessage(responseMessage.StatusCode);
                        foreach (var header in responseMessage.Headers)
                        {
                            clonedMessage.Headers.Add(header.Key, header.Value);
                        }

                        clonedMessage.ReasonPhrase = responseMessage.ReasonPhrase;
                        clonedMessage.RequestMessage = responseMessage.RequestMessage;
                        clonedMessage.Version = responseMessage.Version;
                        response.Error.HttpResponse = clonedMessage;
                    }
                }
            }
            else
            {
                if (logger != null)
                {
                    logger.LogAsync("Command executed successfully.");
                }

                List<object> results = new List<object>();
                foreach (object originalResult in commandResult.Results)
                {
                    results.AddRange(TransformObject(originalResult, transforms));
                }

                response.Result = GetLiveTestResult(results, tracer);
            }

            return response;
        }