private byte[] handleEvalContextRequest(HttpListener.Request request)
        {
            Console.WriteLine($"handling evalContext request({request.path})");
            string serialized = new JsonSerializer <KmlCameraParameterValues>().Serialize(scKmlAdapter.KmlCameraValues);

            return(s2b(serialized));
        }
 private byte[] handleServerRequest(HttpListener.Request request)
 {
     foreach (Route route in routingTable)
     {
         if (route.IsSupported(request))
         {
             //Console.WriteLine($"handling /*path*/({request.path})");
             return(route.Handler(request));
         }
     }
     return(s2b(KmlLiveCam.TemplateRendererFactory.rendererErrorHandler("request ignored", $"no route found for({request.path}")));
 }
        private byte[] handleResourceRequest(HttpListener.Request request)
        {
            string resourceName     = request.path;
            string resourceFileName = $"Resources/{resourceName}";

            Console.WriteLine($"reading resource({resourceFileName})");
            try
            {
                return(File.ReadAllBytes(resourceFileName));
            }
            catch (Exception ex)
            {
                return(s2b(KmlLiveCam.TemplateRendererFactory.rendererErrorHandler($"resource({resourceName}) not available", ex.Message)));
            }
        }
        private byte[] handleLiveCamRequest(HttpListener.Request request)
        {
            (string alias, string lensName) = LiveCamPathToLensSpec(request.path);

            KmlLiveCam liveCam;

            if (liveCamRegistry.TryGetById(alias, out liveCam))
            {
                // important: update the global server context (TODO - should be per session)
                scKmlAdapter.KmlCameraValues.query = request.query;
                scKmlAdapter.KmlCameraValues.alias = alias;
                scKmlAdapter.KmlCameraValues.lens  = lensName;
                return(s2b(liveCam.GetLens(lensName).Render(scKmlAdapter.KmlCameraValues)));
            }

            return(s2b(KmlLiveCam.TemplateRendererFactory.rendererErrorHandler("request ignored", $"LiveCam({alias}) not found")));
        }
        private byte[] handleEvalTemplateRequest(HttpListener.Request request)
        {
            Console.WriteLine($"handling evalTemplate request({request.path})");
            scKmlAdapter.KmlCameraValues.query = request.query;
            string template = Encoding.UTF8.GetString(request.GetBody());
            string result;

            try
            {
                result = (
                    KmlLiveCam.TemplateRendererFactory.newTemplateRenderer <KmlCameraParameterValues>(template)
                    .Render(scKmlAdapter.KmlCameraValues)
                    );
            } catch (Exception ex)
            {
                result = (
                    KmlLiveCam.TemplateRendererFactory.rendererErrorHandler(
                        $"exception encountered while evaluating template",
                        ex.Message
                        )
                    );
            }
            return(s2b(result));
        }