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);
 }
        public static async Task <HttpResponseMessage> GetAuditItemsList(
            [HttpTrigger(
                 AuthorizationLevel.Anonymous,
                 "get",
                 Route = "audit/{targetType}/{targetId}/{pageSize}")]
            HttpRequestMessage req,
            TraceWriter log,
            string targetType,
            string targetId,
            int pageSize)
        {
            log.Info("Fetching the audit records from targetType: " + targetType + " and Targetid: " + targetId);

            // parse query parameter
            string searchTerm = req.GetQueryNameValuePairs()
                                .FirstOrDefault(q => string.Compare(q.Key, "searchTerm", true) == 0)
                                .Value;

            IEnumerable <string> headers;

            req.Headers.TryGetValues("ContinuationToken", out headers);

            var continuationToken = string.Empty;

            if (headers != null)
            {
                continuationToken = headers.FirstOrDefault();
            }

            var service = new CosmosDbAuditService();
            var result  = await service.RetrieveAuditListAsync(
                targetType,
                targetId,
                searchTerm,
                pageSize,
                continuationToken);

            return(req.CreateResponse(HttpStatusCode.OK, result));
        }