public static async Task <IActionResult> GetEvents( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage incomingRequest, [Blob("vedastro-site-data/EventDataList.xml", FileAccess.ReadWrite)] BlobClient eventDataListClient) { var responseMessage = ""; try { //get person list from storage var eventDataListXml = APITools.BlobClientToXml(eventDataListClient); //get data needed to generate events var requestData = APITools.ExtractDataFromRequest(incomingRequest); //parse it var person = Person.FromXml(requestData.Element("Person")); var startTime = Time.FromXml(requestData.Element("StartTime").Element("Time")); var endTime = Time.FromXml(requestData.Element("EndTime").Element("Time")); var location = GeoLocation.FromXml(requestData.Element("Location")); var tag = Tools.XmlToAnyType <EventTag>(requestData.Element(typeof(EventTag).FullName)); var precision = Tools.XmlToAnyType <double>(requestData.Element(typeof(double).FullName)); //calculate events from the data received var events = CalculateEvents(startTime, endTime, location, person, tag, precision, eventDataListXml); //convert events to XML for sending var rootXml = new XElement("Root"); foreach (var _event in events) { rootXml.Add(_event.ToXml()); } responseMessage = rootXml.ToString(); } catch (Exception e) { //format error nicely to show user responseMessage = APITools.FormatErrorReply(e); } var okObjectResult = new OkObjectResult(responseMessage); return(okObjectResult); }