public static async Task <HttpResponseMessage> AuditAsyncViaHttp(
            [HttpTrigger(
                 AuthorizationLevel.Anonymous,
                 "post",
                 Route = AuditHttpClient.AuditAsyncRoute)]
            HttpRequestMessage req, TraceWriter log)
        {
            var body = await req.Content.ReadAsStringAsync();

            var auditEvent = JsonConvert.DeserializeObject <AuditEvent>(body);

            try
            {
                auditEvent.EnsureValid();
            }
            catch (ValidationException valex)
            {
                return(req.CreateResponse(HttpStatusCode.BadRequest, valex.Message));
            }

            var service = new CosmosDbAuditService();
            await service.AuditAsync(auditEvent);

            return(req.CreateResponse(HttpStatusCode.OK, "OK"));
        }
 public static async Task AuditAsyncViaServiceBus(
     [ServiceBusTrigger(AuditServiceBusClient.ServiceBusTopicName, SubscriptionName,
                        AccessRights.Listen, Connection = "Audit.ServiceBus")]
     BrokeredMessage message, TraceWriter log)
 {
     var payload    = message.GetBody <string>();
     var auditEvent = JsonConvert.DeserializeObject <AuditEvent>(payload);
     var service    = new CosmosDbAuditService();
     await service.AuditAsync(auditEvent);
 }