public HttpResponseMessage Get()
        {
            Version version = typeof(BulkController).Assembly.GetName().Version;

            var info = new {
                name    = "winlogbeat-firehose-proxy",
                version = new {
                    number = version.ToString()
                }
            };

            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = JsonHttpContent.Create(info)
            });
        }
        public async Task <HttpResponseMessage> PostAsync(HttpRequestMessage request)
        {
            Stopwatch watch     = new Stopwatch();
            bool      hadErrors = false;

            using (IAmazonKinesisFirehose firehose = m_firehoseProvider.Create())
                using (Stream content = await request.Content.ReadAsStreamAsync())
                    using (StreamReader reader = new StreamReader(content)) {
                        for (; ;)
                        {
                            List <Record> records = await ReadRecordsAsync(reader);

                            if (records.Count == 0)
                            {
                                break;
                            }

                            bool published = await TryPublishRecordsAsync(firehose, records);

                            if (!published)
                            {
                                hadErrors = true;
                            }
                        }
                    }

            watch.Stop();

            var result = new {
                took   = watch.ElapsedMilliseconds,
                errors = hadErrors,
                items  = Enumerable.Empty <object>()
            };

            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = JsonHttpContent.Create(result)
            });
        }