Exemple #1
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values    = query.Split(',');
            int      level     = Convert.ToInt32(values[0]);
            int      tileX     = Convert.ToInt32(values[1]);
            int      tileY     = Convert.ToInt32(values[2]);
            string   type      = values[3];
            int      demSize   = 513 * 2;
            string   wwtDemDir = _options.WWTDEMDir;
            string   filename  = String.Format(wwtDemDir + @"\toast\moon\Chunks\{0}\{1}.chunk", level, tileY);

            if (File.Exists(filename))
            {
                byte[]     data = new byte[demSize];
                FileStream fs   = File.OpenRead(filename);
                fs.Seek((long)(demSize * tileX), SeekOrigin.Begin);

                fs.Read(data, 0, demSize);
                fs.Close();
                await context.Response.OutputStream.WriteAsync(data, 0, demSize, token);
            }
            else
            {
                byte[] data = new byte[demSize];

                await context.Response.OutputStream.WriteAsync(data, 0, demSize, token);
            }

            context.Response.End();
        }
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            //int level = Convert.ToInt32(values[0]);
            //int tileX = Convert.ToInt32(values[1]);
            //int tileY = Convert.ToInt32(values[2]);
            string alt      = context.Request.Params["alt"];
            string proj     = context.Request.Params["proj"];
            float  altitude = float.Parse(alt);
            int    demSize  = 33 * 33;

            if (proj.ToLower().StartsWith("t"))
            {
                demSize = 17 * 17;
            }

            BinaryWriter bw = new BinaryWriter(context.Response.OutputStream);

            for (int i = 0; i < demSize; i++)
            {
                bw.Write(altitude);
            }

            bw = null;
            context.Response.OutputStream.Flush();

            context.Response.End();
        }
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level < 18)
            {
                //    context.Response.ContentType = "image/png";

                UInt32 index = ComputeHash(level, tileX, tileY) % 400;

                Stream s = PlateFile2.GetFileStream(String.Format(@"\\wwt-mars\marsroot\dem\marsToastDem_{0}.plate", index), -1, level, tileX, tileY);

                if (s == null || (int)s.Length == 0)
                {
                    context.Response.Clear();
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("No image");
                    context.Response.End();
                    return;
                }

                int    length = (int)s.Length;
                byte[] data   = new byte[length];
                s.Read(data, 0, length);
                context.Response.OutputStream.Write(data, 0, length);
                context.Response.Flush();
                context.Response.End();
                return;
            }
        }
Exemple #4
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level < 18)
            {
                using (var s = await _plateTiles.GetStreamAsync(@"\\wwtfiles.file.core.windows.net\wwtmars\MarsDem", "marsToastDem.plate", -1, level, tileX, tileY, token))
                {
                    if (s == null || (int)s.Length == 0)
                    {
                        context.Response.Clear();
                        context.Response.ContentType = "text/plain";
                        await context.Response.WriteAsync("No image", token);

                        context.Response.End();
                    }
                    else
                    {
                        await s.CopyToAsync(context.Response.OutputStream, token);

                        context.Response.Flush();
                        context.Response.End();
                    }
                }
            }
        }
Exemple #5
0
        public override void Run(IWwtContext context)
        {
            string etag = context.Request.Headers["If-None-Match"];


            context.Response.ClearHeaders();
            context.Response.Clear();
            context.Response.ContentType = "application/x-wtml";

            string toursXML = null;

            UpdateCacheEx();
            toursXML = (string)HttpContext.Current.Cache["WWTXMLTours"];

            if (toursXML != null)
            {
                int    version = (int)HttpContext.Current.Cache.Get("Version");
                string newEtag = version.ToString();

                if (newEtag != etag)
                {
                    context.Response.AddHeader("etag", newEtag);
                    context.Response.AddHeader("Cache-Control", "no-cache");
                    context.Response.Write(toursXML);
                }
                else
                {
                    context.Response.Status = "304 Not Modified";
                }
            }
            context.Response.End();
        }
Exemple #6
0
        public override void Run(IWwtContext context)
        {
            double lat    = double.Parse(context.Request.Params["lat"]);
            double lng    = double.Parse(context.Request.Params["lng"]);
            double ra     = double.Parse(context.Request.Params["ra"]);
            double dec    = double.Parse(context.Request.Params["dec"]);
            double time   = 0;
            int    width  = int.Parse(context.Request.Params["width"]);
            int    height = int.Parse(context.Request.Params["height"]);

            if (context.Request.Params["jtime"] != null)
            {
                time = double.Parse(context.Request.Params["jtime"]);
            }
            else
            {
                if (context.Request.Params["time"] != null)
                {
                    time = Calc.ToJulian(DateTime.Parse(context.Request.Params["time"]));
                }
                else
                {
                    time = Calc.ToJulian(DateTime.Now.ToUniversalTime());
                }
            }


            Bitmap chart = GetChart(lat, lng, time, ra, dec, width, height);

            chart.Save(context.Response.OutputStream, ImageFormat.Png);
            chart.Dispose();
        }
Exemple #7
0
        public override Task RunAsync(IWwtContext context, CancellationToken token)
        {
            if (!context.Request.ContainsCookie("fullclient") && context.Request.Params["wtml"] == null)
            {
                context.Response.Redirect("http://www.worldwidetelescope.org/webclient/default.aspx?wtml=" + WebUtility.UrlEncode(context.Request.Url.ToString() + "&wtml=true"));
                return(Task.CompletedTask);
            }

            string name = context.Request.Params["object"];
            double ra   = 0;

            if (context.Request.Params["ra"] != null)
            {
                ra = Math.Max(0, Math.Min(24.0, Convert.ToDouble(context.Request.Params["ra"])));
            }
            double dec = 0;

            if (context.Request.Params["dec"] != null)
            {
                dec = Math.Max(-90, Math.Min(90, Convert.ToDouble(context.Request.Params["dec"])));
            }
            double zoom = .25;

            if (context.Request.Params["zoom"] != null)
            {
                zoom = Math.Max(0.001373291015625, Math.Min(360, Convert.ToDouble(context.Request.Params["zoom"])));
            }

            string xml = string.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Folder Group=\"Goto\">\n<Place Name=\"{0}\" RA=\"{1}\" Dec=\"{2}\" ZoomLevel=\"{3}\" DataSetType=\"Sky\"/>\n</Folder>", name, ra, dec, zoom);

            return(context.Response.WriteAsync(xml, token));
        }
Exemple #8
0
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level < 18)
            {
                Stream s = PlateFile2.GetFileStream(@"\\wwtfiles.file.core.windows.net\wwtmars\MarsDem\marsToastDem.plate", -1, level, tileX, tileY);

                if (s == null || (int)s.Length == 0)
                {
                    context.Response.Clear();
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("No image");
                    context.Response.End();
                    return;
                }

                int    length = (int)s.Length;
                byte[] data   = new byte[length];
                s.Read(data, 0, length);
                context.Response.OutputStream.Write(data, 0, length);
                context.Response.Flush();
                context.Response.End();
                return;
            }
        }
Exemple #9
0
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values    = query.Split(',');
            int      level     = Convert.ToInt32(values[0]);
            int      tileX     = Convert.ToInt32(values[1]);
            int      tileY     = Convert.ToInt32(values[2]);
            string   type      = values[3];
            int      demSize   = 513 * 2;
            string   wwtDemDir = ConfigurationManager.AppSettings["WWTDEMDir"];
            string   filename  = String.Format(wwtDemDir + @"\toast\moon\Chunks\{0}\{1}.chunk", level, tileY);

            if (File.Exists(filename))
            {
                byte[]     data = new byte[demSize];
                FileStream fs   = File.OpenRead(filename);
                fs.Seek((long)(demSize * tileX), SeekOrigin.Begin);

                fs.Read(data, 0, demSize);
                fs.Close();
                context.Response.OutputStream.Write(data, 0, demSize);
                context.Response.OutputStream.Flush();
            }
            else
            {
                byte[] data = new byte[demSize];

                context.Response.OutputStream.Write(data, 0, demSize);
                context.Response.OutputStream.Flush();
            }

            context.Response.End();
        }
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);
            string   file   = "2massoctset";

            string wwtTilesDir = ConfigurationManager.AppSettings["WWTTilesDir"];

            if (level < 8)
            {
                context.Response.ContentType = "image/png";
                Stream s      = PlateTilePyramid.GetFileStream(String.Format(wwtTilesDir + "\\{0}.plate", file), level, tileX, tileY);
                int    length = (int)s.Length;
                byte[] data   = new byte[length];
                s.Read(data, 0, length);
                context.Response.OutputStream.Write(data, 0, length);
                context.Response.Flush();
                context.Response.End();
                return;
            }
        }
Exemple #11
0
        public override void Run(IWwtContext context)
        {
            string returnString = "Erorr: No URL Specified";
            string url          = "";

            if (context.Request.Params["targeturl"] != null)
            {
                url = context.Request.Params["targeturl"];

                try
                {
                    if (url.ToLower().StartsWith("http") && !url.Contains("127.0.0.1") && !url.ToLower().Contains("localhost"))
                    {
                        Uri target = new Uri(url);
                        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                        using (WebClient wc = new WebClient())
                        {
                            byte[] data = wc.DownloadData(url);

                            context.Response.ContentType = wc.ResponseHeaders["Content-type"].ToString();
                            int length = data.Length;
                            context.Response.OutputStream.Write(data, 0, length);
                        }
                    }
                }
                catch (System.Exception e)
                {
                    returnString = e.Message;
                    context.Response.Write(returnString);
                }
            }
        }
Exemple #12
0
        public override void Run(IWwtContext context)
        {
            //if (context.Request.Cookies["alphakey"] != null && context.Request.Params["wtml"] == null)
            if (context.Request.Cookies["fullclient"] == null && context.Request.Params["wtml"] == null)
            {
                context.Response.Redirect("http://www.worldwidetelescope.org/webclient/default.aspx?wtml=" + HttpUtility.UrlEncode(context.Request.Url.ToString() + "&wtml=true"));
                return;
            }

            string name = context.Request.Params["object"];
            double ra   = 0;

            if (context.Request.Params["ra"] != null)
            {
                ra = Math.Max(0, Math.Min(24.0, Convert.ToDouble(context.Request.Params["ra"])));
            }
            double dec = 0;

            if (context.Request.Params["dec"] != null)
            {
                dec = Math.Max(-90, Math.Min(90, Convert.ToDouble(context.Request.Params["dec"])));
            }
            double zoom = .25;

            if (context.Request.Params["zoom"] != null)
            {
                zoom = Math.Max(0.001373291015625, Math.Min(360, Convert.ToDouble(context.Request.Params["zoom"])));
            }

            string xml = string.Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Folder Group=\"Goto\">\n<Place Name=\"{0}\" RA=\"{1}\" Dec=\"{2}\" ZoomLevel=\"{3}\" DataSetType=\"Sky\"/>\n</Folder>", name, ra, dec, zoom);

            context.Response.Write(xml);
        }
        public override void Run(IWwtContext context)
        {
            context.Response.AddHeader("Cache-Control", "no-cache");
            string webDir = ConfigurationManager.AppSettings["WWTWEBDIR"];

            context.Response.WriteFile(webDir + @"\wwt2\version.txt");
        }
Exemple #14
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level < 19)
            {
                context.Response.ContentType = "image/png";

                UInt32 index = ComputeHash(level, tileX, tileY) % 300;

                using (Stream s = await _plateTiles.GetStreamAsync(@"\\wwt-mars\marsroot\hirise", $"hiriseV5_{index}.plate", -1, level, tileX, tileY, token))
                {
                    if (s == null || (int)s.Length == 0)
                    {
                        context.Response.Clear();
                        context.Response.ContentType = "text/plain";
                        await context.Response.WriteAsync("No image", token);

                        context.Response.End();
                        return;
                    }

                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                    return;
                }
            }
        }
        public override void Run(IWwtContext context)
        {
            string etag     = context.Request.Headers["If-None-Match"];
            string filename = "";
            string webDir   = Path.Combine(ConfigurationManager.AppSettings["DataDir"], "data");

            if (context.Request.Params["Q"] != null)
            {
                string query = context.Request.Params["Q"];

                query    = query.Replace("..", "");
                query    = query.Replace("\\", "");
                query    = query.Replace("/", "");
                filename = Path.Combine(webDir, query + ".txt");
            }
            else if (context.Request.Params["X"] != null)
            {
                context.Response.Clear();
                context.Response.ContentType = "application/xml";
                string query = context.Request.Params["X"];

                query    = query.Replace("..", "");
                query    = query.Replace("\\", "");
                query    = query.Replace("/", "");
                filename = Path.Combine(webDir, query + ".xml");
            }
            else if (context.Request.Params["W"] != null)
            {
                context.Response.Clear();
                context.Response.ContentType = "application/xml";

                string query = context.Request.Params["W"];

                query = query.Replace("..", "");
                query = query.Replace("\\", "");
                query = query.Replace("/", "");

                filename = Path.Combine(webDir, query + ".wtml");
            }

            if (!string.IsNullOrEmpty(filename))
            {
                var fi = new FileInfo(filename);
                fi.LastWriteTimeUtc.ToString();

                string newEtag = fi.LastWriteTimeUtc.ToString();

                if (newEtag != etag)
                {
                    context.Response.AddHeader("etag", fi.LastWriteTimeUtc.ToString());
                    context.Response.AddHeader("Cache-Control", "no-cache");
                    context.Response.WriteFile(filename);
                }
                else
                {
                    context.Response.Status = "304 Not Modified";
                }
            }
        }
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            double tileWidth = (4 / (Math.Pow(2, level)));
            double Sy        = ((double)tileY * tileWidth) - 2;
            double Fy        = Sy + tileWidth;
            double Sx        = ((double)tileX * tileWidth) - 4;
            double Fx        = Sx + tileWidth;


            context.Response.Clear();



            Bitmap b = new Bitmap(256, 256);
            double x, y, x1, y1, xx, xmin, xmax, ymin, ymax = 0.0;
            int    looper, s, z = 0;
            double intigralX, intigralY = 0.0;

            xmin      = Sx;
            ymin      = Sy;
            xmax      = Fx;
            ymax      = Fy;
            intigralX = (xmax - xmin) / 256;
            intigralY = (ymax - ymin) / 256;
            x         = xmin;
            for (s = 0; s < 256; s++)
            {
                y = ymin;
                for (z = 0; z < 256; z++)
                {
                    x1     = 0;
                    y1     = 0;
                    looper = 0;
                    while (looper < 2048 && ((x1 * x1) + (y1 * y1)) < 4)
                    {
                        looper++;
                        xx = (x1 * x1) - (y1 * y1) + x;
                        y1 = 2 * x1 * y1 + y;
                        x1 = xx;
                    }

                    b.SetPixel(s, z, ((looper % 2) == 1) ? Color.White : Color.Black);
                    y += intigralY;
                }
                x += intigralX;
            }

            b.Save(context.Response.OutputStream, ImageFormat.Jpeg);
            b.Dispose();
            context.Response.End();
        }
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level > 20)
            {
                await context.Response.WriteAsync("No image", token);

                context.Response.Close();
            }
            else if (level < 8)
            {
                context.Response.ContentType = "image/png";

                using (Stream s = await _plateTiles.GetStreamAsync(_options.WwtTilesDir, "BmngMerBase.plate", level, tileX, tileY, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                }
            }
            else if (level < 10)
            {
                int L           = level;
                int X           = tileX;
                int Y           = tileY;
                int powLev5Diff = (int)Math.Pow(2, L - 2);
                int X32         = X / powLev5Diff;
                int Y32         = Y / powLev5Diff;

                int L5 = L - 2;
                int X5 = X % powLev5Diff;
                int Y5 = Y % powLev5Diff;

                context.Response.ContentType = "image/png";

                using (Stream s = await _plateTiles.GetStreamAsync(_options.WwtTilesDir, $"BmngMerL2X{X32}Y{Y32}.plate", L5, X5, Y5, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                }
            }
            else
            {
                using var veTile = await _veDownloader.DownloadVeTileAsync(VirtualEarthTile.Ortho, level, tileX, tileY, token);

                await veTile.CopyToAsync(context.Response.OutputStream, token);
            }
        }
Exemple #18
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            await context.Response.WriteAsync("ClientVersion:", token);

            context.Response.WriteFile(context.MapPath(Path.Combine("..", "wwt2", "ExcelAddinVersion.txt")));
            await context.Response.WriteAsync("\nUpdateUrl:", token);

            context.Response.WriteFile(context.MapPath(Path.Combine("..", "wwt2", "ExcelAddinUpdateUrl.txt")));
        }
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values        = query.Split(',');
            int      level         = Convert.ToInt32(values[0]);
            int      tileX         = Convert.ToInt32(values[1]);
            int      tileY         = Convert.ToInt32(values[2]);
            int      demSize       = 33 * 33;
            int      parentL       = Math.Max(1, level - 3);
            int      DemGeneration = level - parentL;

            int count    = (int)Math.Pow(2, 3 - DemGeneration);
            int tileSize = (int)Math.Pow(2, DemGeneration);

            int offsetX = (tileX % tileSize) * count * 32;
            int offsetY = (tileY % tileSize) * count * 32;

            var parentX = tileX / tileSize;
            var parentY = tileY / tileSize;

            using var stream = await _veDownloader.DownloadVeTileAsync(VirtualEarthTile.Ecn, parentL, parentX, parentY, token);


            DemTile tile = DemCodec.Decompress(stream);

            if (tile != null)
            {
                float[] DemData = new float[demSize];
                int     yh      = 0;
                for (int yl = 0; yl < 33; yl++)
                {
                    int xh = 0;
                    for (int xl = 0; xl < 33; xl++)
                    {
                        int indexI = xl + (32 - yl) * 33;
                        DemData[indexI] = (float)tile.AltitudeInMeters(yh + offsetY, xh + offsetX);

                        xh += count;
                    }
                    yh += count;
                }

                var data = new byte[DemData.Length * 4];
                using var ms = new MemoryStream(data);
                var bw = new BinaryWriter(ms);

                foreach (float sample in DemData)
                {
                    bw.Write(sample);
                }
                bw.Flush();
                await context.Response.OutputStream.WriteAsync(data, 0, data.Length, token);
            }

            context.Response.End();
        }
        public override void Run(IWwtContext context)
        {
            string query = context.Request.Params["Q"];

            string[] values  = query.Split(',');
            int      level   = Convert.ToInt32(values[0]);
            int      tileX   = Convert.ToInt32(values[1]);
            int      tileY   = Convert.ToInt32(values[2]);
            int      demSize = 33 * 33;
            //string wwtDemDir = ConfigurationManager.AppSettings["WWTDEMDir"];
            //string filename = String.Format(wwtDemDir  + @"\Mercator\Chunks\{0}\{1}.chunk", level, tileY);
            string urlBase = "http://ecn.t{0}.tiles.virtualearth.net/tiles/d{1}.elv?g=1&n=z";

            string    id     = WWTUtil.GetTileID(tileX, tileY, level, false);
            int       server = WWTUtil.GetServerID(tileX, tileY);
            WebClient client = new WebClient();

            string url = string.Format(urlBase, server, id);

            byte[]       data   = client.DownloadData(url);
            MemoryStream stream = new MemoryStream(data);

            DemTile tile = DemCodec.Decompress(stream);

            if (tile != null)
            {
                float[] DemData = new float[demSize];
                int     yh      = 0;
                for (int yl = 0; yl < 33; yl++)
                {
                    int xh = 0;
                    for (int xl = 0; xl < 33; xl++)
                    {
                        int indexI = xl + (32 - yl) * 33;
                        DemData[indexI] = (float)tile.AltitudeInMeters(yh, xh);
                        //  Response.Write( tile.AltitudeInMeters(yh, xh).ToString() + "\n");

                        xh += 8;
                        //Response.Write(indexI);
                    }
                    yh += 8;
                }
                data = new byte[DemData.Length * 4];
                MemoryStream ms = new MemoryStream(data);
                BinaryWriter bw = new BinaryWriter(ms);

                foreach (float sample in DemData)
                {
                    bw.Write(sample);
                }
                bw.Flush();
                context.Response.BinaryWrite(data);
            }

            context.Response.End();
        }
Exemple #21
0
        public override void Run(IWwtContext context)
        {
            string webDir = ConfigurationManager.AppSettings["WWTWEBDIR"];

            context.Response.AddHeader("Cache-Control", "no-cache");
            context.Response.Write("ClientVersion:");
            context.Response.WriteFile(webDir + @"\wwt2\ExcelAddinVersion.txt");
            context.Response.Write("\nUpdateUrl:");
            context.Response.WriteFile(webDir + @"\wwt2\ExcelAddinUpdateUrl.txt");
        }
Exemple #22
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            string filename = $@"\\wwt-mars\marsroot\dem\Merged4\{level}\{tileX}\DL{level}X{tileX}Y{tileY}.dem";

            if (File.Exists(filename))
            {
                using (Stream stream = File.OpenRead(filename))
                    using (Stream s = await MergeMolaDemTileStream(level, tileX, tileY, stream, token))
                    {
                        if (s.Length == 0)
                        {
                            context.Response.Clear();
                            context.Response.ContentType = "text/plain";
                            await context.Response.WriteAsync("No image", token);

                            context.Response.End();
                            return;
                        }

                        await s.CopyToAsync(context.Response.OutputStream, token);

                        context.Response.Flush();
                        context.Response.End();
                        return;
                    }
            }
            else
            {
                using (Stream ss = await GetMolaDemTileStreamAsync(level, tileX, tileY, token))
                {
                    if (ss.Length == 0)
                    {
                        context.Response.Clear();
                        context.Response.ContentType = "text/plain";
                        await context.Response.WriteAsync("No image", token);

                        context.Response.End();
                        return;
                    }

                    await ss.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                    return;
                }
            }
        }
Exemple #23
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string name = context.Request.Params["name"];

            using var stream = await _tileAccessor.GetThumbnailAsync(name, token);

            if (stream != null)
            {
                await stream.CopyToAsync(context.Response.OutputStream, token);
            }
        }
        public override void Run(IWwtContext context)
        {
            string name = context.Request.Params["name"];
            string type = context.Request.Params["class"];

            using (var s = WWTThumbnail.GetThumbnailStream(name, type))
            {
                s.CopyTo(context.Response.OutputStream);
                context.Response.Flush();
                context.Response.End();
            }
        }
        public override void Run(IWwtContext context)
        {
            string guid;

            if (context.Request.Params["GUID"] != null)
            {
                guid = context.Request.Params["GUID"];
            }
            else
            {
                context.Response.End();
                return;
            }
            string tourcache     = ConfigurationManager.AppSettings["WWTTOURCACHE"];
            string localDir      = tourcache;
            string filename      = WWTUtil.GetCurrentConfigShare("WWTToursTourFileUNC", true) + String.Format(@"\{0}_AuthorThumb.bin", guid);
            string localfilename = localDir + String.Format(@"\{0}_AuthorThumb.bin", guid);

            if (!File.Exists(localfilename))
            {
                try
                {
                    if (File.Exists(filename))
                    {
                        if (!Directory.Exists(localDir))
                        {
                            Directory.CreateDirectory(localDir);
                        }
                        File.Copy(filename, localfilename);
                    }
                }
                catch
                {
                }
            }

            if (File.Exists(localfilename))
            {
                try
                {
                    context.Response.ContentType = "image/png";
                    context.Response.WriteFile(localfilename);
                    return;
                }
                catch
                {
                }
            }
            else
            {
                context.Response.Status = "404 Not Found";
            }
        }
Exemple #26
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string wwtTilesDir = Path.Combine(_options.WwtTilesDir, "LROWAC");

            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level > 10)
            {
                await context.Response.WriteAsync("No image", token);

                context.Response.Close();
                return;;
            }

            if (level < 7)
            {
                context.Response.ContentType = "image/png";

                using (Stream s = await _plateTiles.GetStreamAsync(wwtTilesDir, "LROWAC_L0X0Y0.plate", level, tileX, tileY, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                    return;;
                }
            }
            else
            {
                int powLev5Diff = (int)Math.Pow(2, level - 3);
                int X32         = tileX / powLev5Diff;
                int Y32         = tileY / powLev5Diff;

                int L5 = level - 3;
                int X5 = tileX % powLev5Diff;
                int Y5 = tileY % powLev5Diff;
                context.Response.ContentType = "image/png";

                using (Stream s = await _plateTiles.GetStreamAsync(wwtTilesDir, $"LROWAC_L3X{X32}Y{Y32}.plate", L5, X5, Y5, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                    return;;
                }
            }
        }
        public override void Run(IWwtContext context)
        {
            string wwt2dir = ConfigurationManager.AppSettings["WWT2DIR"];

            context.Response.AddHeader("Cache-Control", "no-cache");

            context.Response.Write("ClientVersion:");
            context.Response.WriteFile(wwt2dir + @"\version.txt");
            context.Response.Write("\n");
            context.Response.WriteFile(wwt2dir + @"\dataversion.txt");
            context.Response.Write("\nMessage:");
            context.Response.WriteFile(wwt2dir + @"\message.txt");
        }
Exemple #28
0
        public override void Run(IWwtContext context)
        {
            //string etag = context.Request.Headers["If-None-Match"];
            string tourcache = ConfigurationManager.AppSettings["WWTTOURCACHE"];

            context.Response.ClearHeaders();
            context.Response.Clear();
            context.Response.ContentType = "application/x-wtt";

            context.Response.WriteFile(MakeTourFromXML(context, context.Request.InputStream, tourcache + "\\temp\\"));

            //context.Response.OutputStream
        }
Exemple #29
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string name = context.Request.Params["name"];
            string type = context.Request.Params["class"];

            using (var s = await GetThumbnailAsync(name, type, token))
            {
                await s.CopyToAsync(context.Response.OutputStream, token);

                context.Response.Flush();
                context.Response.End();
            }
        }
Exemple #30
0
        public override async Task RunAsync(IWwtContext context, CancellationToken token)
        {
            string query = context.Request.Params["Q"];

            string[] values = query.Split(',');
            int      level  = Convert.ToInt32(values[0]);
            int      tileX  = Convert.ToInt32(values[1]);
            int      tileY  = Convert.ToInt32(values[2]);

            if (level > 12)
            {
                await context.Response.WriteAsync("No image", token);

                context.Response.Close();
            }
            else if (level < 8)
            {
                context.Response.ContentType = "image/png";

                using (var s = await _plateTile.GetStreamAsync(_options.WwtTilesDir, "DSSTerraPixel.plate", level, tileX, tileY, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream, token);

                    context.Response.Flush();
                    context.Response.End();
                }
            }
            else
            {
                int powLev5Diff = (int)Math.Pow(2, level - 5);
                int X32         = tileX / powLev5Diff;
                int Y32         = tileY / powLev5Diff;

                int L5 = level - 5;
                int X5 = tileX % powLev5Diff;
                int Y5 = tileY % powLev5Diff;

                context.Response.ContentType = "image/png";

                string filename = $"DSSPngL5to12_x{X32}_y{Y32}.plate";

                using (var s = await _plateTile.GetStreamAsync(_options.DssTerapixelDir, filename, L5, X5, Y5, token))
                {
                    await s.CopyToAsync(context.Response.OutputStream);

                    context.Response.Flush();
                    context.Response.End();
                }
            }
        }