private void ServerOnHandlePost(SimpleHttpProcessor httpProcessor, StreamReader streamReader) { var resourceName = httpProcessor.Url.Substring(1); var body = streamReader.ReadToEnd(); var formData = JsonConvert.DeserializeObject <JObject>(body).AsJEnumerable().Cast <JProperty>() .ToDictionary(data => data.Name, data => Convert.ToString(data.Value, CultureInfo.InvariantCulture)); var queryString = HttpUtility.ParseQueryString(httpProcessor.Query); var paramObjects = queryString.AllKeys .ToDictionary(key => key, key => queryString[key]); var session = GetSession(httpProcessor); var content = _resourceLoader.Post(session, resourceName, paramObjects, formData); if (content == null) { httpProcessor.WriteNotFound(); return; } httpProcessor.WriteSuccess(content.ContentType); if (content.IsBinary) { httpProcessor.WriteContent(content.Data); } else { httpProcessor.WriteContent(content.Text); } }
private void ServerOnHandleGet(SimpleHttpProcessor httpProcessor) { var session = GetSession(httpProcessor); var header = new Dictionary <string, string> { { "Cookie", "StonehengeSession=" + session.Id } }; if (httpProcessor.Url == "/") { httpProcessor.WriteRedirect("/Index.html?stonehenge-id=" + session.Id, header); return; } var resourceName = httpProcessor.Url.Substring(1); var parameters = new Dictionary <string, string>(); //TODO: extract parameters from URL var content = _resourceLoader.Get(session, resourceName, parameters); if (content == null) { httpProcessor.WriteNotFound(); return; } if (content.IsBinary) { header.Add("Content-Length", content.Data.Length.ToString()); httpProcessor.WriteSuccess(content.ContentType, header); httpProcessor.WriteContent(content.Data); } else { httpProcessor.WriteSuccess(content.ContentType, header); httpProcessor.WriteContent(content.Text); } }