private Task Pull(HttpContext arg) { try { var req = arg.PostData <CowidPlusPullRequest>(); arg.Response.SendChunk("{"); var items = _dbs[req.N].GetBatch(req.Items); var last = items.Length - 1; for (var i = 0; i < items.Length; i++) { arg.Response .SendChunk($"\"{HttpUtility.JavaScriptStringEncode(items[i].Key)}\":{(string.IsNullOrWhiteSpace(items[i].Value) ? "null" : items[i].Value)}}}"); if (i < last) { arg.Response.SendChunk(","); } } return(arg.Response.SendFinalChunk("}")); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); return(arg.Response.Send(HttpStatusCode.InternalServerError)); } }
private Task Update(HttpContext arg) { try { var req = arg.PostData <CowidPlusUpdateRequest>(); using (var sha = SHA512.Create()) { var dataHash = Convert.ToBase64String(sha.ComputeHash(Encoding.ASCII.GetBytes(req.Data))); var token = $"{dataHash}-{_lastUpdateToken}-{_secureUpdateToken}"; if (req.SessionKey != Convert.ToBase64String(sha.ComputeHash(Encoding.ASCII.GetBytes(token)))) { return(arg.Response.Send(HttpStatusCode.Forbidden)); } } _lastUpdateToken = Guid.NewGuid().ToString("N"); Database.SetupElasticIndex(ref _es); Database.InsertFromWebRequest(req.Data, new DateTime(req.Year, req.Month, req.Day), _es, _dbs); return(arg.Response.Send(HttpStatusCode.OK)); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); return(arg.Response.Send(HttpStatusCode.InternalServerError)); } }
private Task Down(HttpContext arg) { try { if (arg.Request.ContentLength > _maxPostSize) { return(arg.Response.Send(HttpStatusCode.RequestUriTooLong)); } var request = arg.PostData <CowidPlusDownRequest>(); foreach (var e in _exporter) { if (e.Id == request.Format.ToUpper()) { var db = _dbs[request.N]; return(e.Convert(arg, ref db, request.N, request.Requests)); } } return(arg.Response.Send(HttpStatusCode.NotFound)); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); return(arg.Response.Send(HttpStatusCode.InternalServerError)); } }