Пример #1
0
        private IEnumerable <Envelope> CreateNewItemsFromContext(HttpListenerContext context)
        {
            try
            {
                var request = context.Request;
                var content = request.GetContent();

                if (!string.IsNullOrWhiteSpace(request.Headers["Content-Encoding"]) &&
                    string.Equals("gzip", request.Headers["Content-Encoding"],
                                  StringComparison.OrdinalIgnoreCase))
                {
                    content = Decompress(content);
                }

                Trace.TraceInformation("=>\n");
                Trace.TraceInformation("Item received: " + content);
                Trace.TraceInformation("<=\n");

                return(TelemetryItemFactory.GetTelemetryItems(content));
            }
            finally
            {
                context.Response.Close();
            }
        }
Пример #2
0
        private IEnumerable <Envelope> CreateNewItemsFromContext(HttpListenerContext context)
        {
            try
            {
                var request = context.Request;
                var content = request.GetContent();

                if (!string.IsNullOrWhiteSpace(request.Headers["Content-Encoding"]) &&
                    string.Equals("gzip", request.Headers["Content-Encoding"],
                                  StringComparison.OrdinalIgnoreCase))
                {
                    content = Decompress(content);
                }

                Trace.TraceInformation("=>\n");
                Trace.TraceInformation("Item received: " + content);
                Trace.TraceInformation("<=\n");

                // Validating each package takes too much time, check only first one that have dependency data
                if (this.validatedPackages == 0 && content.Contains("RemoteDependency"))
                {
                    try
                    {
                        this.ValidateItems(content);
                        ++this.validatedPackages;
                    }
                    catch (TaskCanceledException)
                    {}
                }

                return(TelemetryItemFactory.GetTelemetryItems(content));
            }
            finally
            {
                context.Response.Close();
            }
        }
        /// <summary>
        /// Call back when incoming request is received
        /// </summary>
        /// <param name="request">incoming request</param>
        /// <param name="response">response to be sent back to invoker</param>
        private void RouteRequest(HttpListenerRequest request, HttpListenerResponse response)
        {
            var content = request.GetContent();

            if (!string.IsNullOrWhiteSpace(request.Headers["Content-Encoding"]) &&
                string.Equals("gzip", request.Headers["Content-Encoding"], StringComparison.OrdinalIgnoreCase))
            {
                content = Decompress(content);
            }

            this.receivedDataItems.AddRange(TelemetryItemFactory.GetTelemetryItems(content));

            //var stringReader = new StringReader(content);
            //var reader = new JsonTextReader(stringReader);

            //var sr = new JsonSerializer();
            //var objectItem = (JArray)sr.Deserialize(reader, typeof(JArray));

            var buff = Encoding.UTF8.GetBytes("<html><body>Hello from HttpListener.</body></html>");

            // Set up the response object
            response.ContentType     = "text/html";
            response.ContentLength64 = buff.Length;
            response.StatusCode      = 200; // HTTP "OK"

            // Write the response.
            var strm = response.OutputStream;

            strm.Write(buff, 0, buff.Length);

            // close the stream.
            strm.Close();


            Trace.TraceInformation(this.listenerUrl + " Request content: " + content);
        }