public static IEnumerable <CompositeRootCommandResponse> SendRequest(WebRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(SendRequest(request, new CompositeRootCommandRequest[] { CompositeRootCommandRequest.Create(1, request.RequestUri.AbsolutePath.Trim('/', '\\')) })); }
public object ReceiveRequest() { var commandResponses = new List <CompositeRootCommandResponse>(); CompositeRootHttpContext compositeRootHttpContext = null; IEnumerable <CompositeRootCommandRequest> commandRequests = null; IEnumerable <CompositeUploadedFile> uploadedFiles = null; var requestId = 0L; try { Authenticate(HttpContext); var request = Request.QueryString.HasValue ? Request.QueryString.Value : string.Empty; var requestParts = request.Split('?'); string requestBody = requestParts.Length >= 3 ? requestParts[2] : null; if (requestBody == null && Request.ContentLength.HasValue) { requestBody = Request.Body.GetRequest(Encoding.UTF8, Request.ContentType, string.Empty, CultureInfo.CurrentCulture, out uploadedFiles, out commandRequests); } var pathAndQuery = $"{Regex.Replace(Request.Path.Value, @"\0$", "%00")}{(string.IsNullOrEmpty(Request.QueryString.Value) && !string.IsNullOrEmpty(requestBody) ? (!requestBody.StartsWith("?") ? "?" : string.Empty) + requestBody : Request.QueryString.Value)}"; var controllerName = ControllerContext.ActionDescriptor.ControllerName; var requestPattern = $"^/{controllerName}/?(?'compositeRootId'[0-9]+)?/?"; Match compositeRootIdMatch; var compositeRootId = 0L; if ((compositeRootIdMatch = Regex.Match(pathAndQuery, requestPattern, RegexOptions.IgnoreCase)).Success) { var compositeRoootIdValue = compositeRootIdMatch.Groups["compositeRootId"].Value; compositeRootId = string.IsNullOrEmpty(compositeRoootIdValue) ? 0 : long.Parse(compositeRoootIdValue); } commandRequests ??= new CompositeRootCommandRequest[] { CompositeRootCommandRequest.Create(1, Regex.Replace(pathAndQuery, requestPattern, string.Empty)) }; compositeRootHttpContext = GetContext(requestBody, uploadedFiles); var compositeRoot = CreateCompositeRoot(); var compositeRootModelFieldName = compositeRoot.GetType().GetCustomAttribute <CompositeModelAttribute>()?.ModelFieldName; var compositeRootModelField = compositeRoot.GetType().GetField(compositeRootModelFieldName, BindingFlags.Instance | BindingFlags.NonPublic); var compositeRootModelFieldType = compositeRootModelField.FieldType; var compositeRootModelJson = GetCache(compositeRootId); if (!string.IsNullOrWhiteSpace(compositeRootModelJson)) { var compositeRootModel = JsonConvert.DeserializeObject(compositeRootModelJson, compositeRootModelFieldType); compositeRootModel.RestoreParentReferences(); compositeRoot.InitializeCompositeModel(compositeRootModel); } else { if (compositeRootId == 0) { SetCache(compositeRoot.Id, JsonConvert.SerializeObject(compositeRootModelField.GetValue(compositeRoot))); } else { throw new UnauthorizedAccessException(); } } requestId = requestId.NewId(); var objectState = OnBeforeExecute(commandRequests, compositeRootHttpContext, uploadedFiles, requestId); commandResponses = compositeRoot.Execute(commandRequests, compositeRootHttpContext, uploadedFiles).ToList(); OnAfterExecute(commandResponses, compositeRootHttpContext, requestId, objectState); SetCache(compositeRoot.Id, JsonConvert.SerializeObject(compositeRootModelField.GetValue(compositeRoot))); if (commandResponses.First().ReturnValue is byte[] bytes) { return(File ( bytes, compositeRootHttpContext.Response.ContentType )); } else { Response.ContentType = "application/json"; return(commandResponses); } } catch (Exception e) { OnError(e, commandRequests, compositeRootHttpContext, uploadedFiles, requestId); commandResponses.Add(new CompositeRootCommandResponse { Success = false, Errors = GetErrorMessages(e) }); return(commandResponses); } }
public void MyTest() { var blogServerMonitorHelpResponse = CompositeRootHttpServerTester.SendRequest(_blogServerMonitorConfiguration, "?", _blogServerMonitorConnection.SessionToken); //var request = CompositeRootHttpServerTester.CreateRequest(_blogServerMonitorConfiguration, "~/test.txt", _blogServerMonitorConnection.SessionToken); #region //var fq = CompositeRootHttpServerTester.CreateRequest(_configuration, "~/test.txt", _connection.SessionToken); ////fq.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip"); //fq.AddRange(-3); //fq.AddRange(6, 7); //fq.AddRange(-1); //fq.AddRange(0, 7); //fq.AddRange(100, 200); //var r1 = CompositeRootHostHttpServerTester.SendRequest(fq); //var tt = Execute("NullableInt"); //var connection = _tester.LogOnUser(_configuration, "username=&password="******"Message$", new ManualResetEvent(false)); //var tempFilePath1 = Path.GetTempFileName(); //File.WriteAllText(tempFilePath1, "test1"); //var tempFilePath2 = Path.GetTempFileName(); //File.WriteAllText(tempFilePath2, "test2"); //var e = CompositeRootHttpServerTester.SendRequest(_configuration, "?", connection.SessionToken); //var x = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/?", connection.SessionToken); //var request = CompositeRootHttpServerTester.CreateRequest(_configuration, "Start?pa=123&pa=456&testLevel=Middle&testDateTime=06/13/1974&testTimeSpan=00:00:05&testInt=420&testBool=true&testString=&testDecimal=3.1415&testChar=%65", connection.SessionToken); //var blag = CompositeRootHttpServerTester.SendRequest(request, new FileInfo[] { new FileInfo(tempFilePath1), new FileInfo(tempFilePath2) }); //connection.WaitForEvent(@"Message$"); //var bwqwflkg = CompositeRootHttpServerTester.SendRequest(_configuration, "", connection.SessionToken); //var bwlkg = CompositeRootHttpServerTester.SendRequest(_configuration, "", connection.SessionToken); //var ergt = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/Frames/0/ParticleContainer/Particles/0/Y?3.14", connection.SessionToken); int id = 1; var commands = new CompositeRootCommandRequest[] { CompositeRootCommandRequest.Create(id++, "ConfigurationSettings"), CompositeRootCommandRequest.Create(id++, "Start?pa=123&pa=456&testLevel=&testDateTime=06/13/1974&testTimeSpan=00:00:05&testInt=420&testBool=true&testString=%00&testDecimal=3.1415&testChar=%65"), CompositeRootCommandRequest.Create(id++, "NullableInt"), CompositeRootCommandRequest.Create(id++, "NullableInt?{1/ParticleCount}"), CompositeRootCommandRequest.Create(id++, "NullableInt"), CompositeRootCommandRequest.Create(id++, "Start?pa={1/ParticleCount}&pa=456&testLevel=&testDateTime=06/13/1974&testTimeSpan=00:00:05&testInt=420&testBool=true&testString=%00&testDecimal=3.1415&testChar=%65") }; //request = CompositeRootHttpServerTester.CreateRequest(_configuration, connection.SessionToken); //var r2 = CompositeRootHttpServerTester.SendRequest(request, commands); //var responses = CompositeRootHttpServerTester.SendRequest(_configuration, commands, connection.SessionToken); //var z = CompositeRootHttpServerTester.CreateRequest(_configuration, "FrameContainer/Frames/[EAE5CF8C-81D4-4519-813E-D915925A75FE]", connection.SessionToken); //var tt = CompositeRootHttpServerTester.SendRequest(z); //var t = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/Frames/99999", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/Frames/0/ParticleContainer/Particles/0", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/Frames/0/ParticleContainer/Particles/[Particle30619839]", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "FrameContainer/Frames/[50125c6b-d26f-4415-8d34-82a34d37f1a9]", connection.SessionToken); //var r = CompositeRootHttpServerTester.SendRequest(_configuration, "CreateBlob", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "?", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "NullableInt", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "NullableInt?25", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "NullableInt", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "NullableInt?", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "NullableInt", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Level", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Level?Middle", connection.SessionToken); //// public void Start(CompositeRootHostHttpContext context, SimulatorLevel testLevel, DateTime testDateTime, TimeSpan testTimeSpan, int testInt, bool testBool, string testString, decimal testDecimal, char testChar) //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Level", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name?matt", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name?", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name?%00", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Name", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Configuration/FrameCount/?", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Configuration/FrameCount?25", connection.SessionToken); //t = CompositeRootHttpServerTester.SendRequest(_configuration, "Configuration/FrameCount", connection.SessionToken); #endregion }
public static IEnumerable <CompositeRootCommandResponse> SendRequest(CompositeRootConfiguration configuration, string command, string sessionToken) { return(SendRequest(configuration, new CompositeRootCommandRequest[] { CompositeRootCommandRequest.Create(1, command) }, sessionToken)); }