Example #1
0
        static bool TryParseUrl(string url,
                                out CloudWatchDownloader.DownloadRequest request)
        {
            request = null;
            if (!Uri.TryCreate(url, UriKind.Absolute, out var uri))
            {
                return(false);
            }
            if (uri.Scheme != urlProtocol)
            {
                return(false);
            }
            if (uri.Host != urlHost)
            {
                return(false);
            }
            var    ids = new string[0];
            long   t   = 0;
            string env = "?";

            foreach (var q in uri.Query.Split(new [] { '&', '?' }, StringSplitOptions.RemoveEmptyEntries))
            {
                var kv = q.Split('=');
                if (kv.Length != 2)
                {
                    continue;
                }
                if (kv[0] == "ids")
                {
                    ids = kv[1].Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(Uri.UnescapeDataString).ToArray();
                }
                else if (kv[0] == "t")
                {
                    long.TryParse(kv[1], out t);
                }
                else if (kv[0] == "env")
                {
                    env = kv[1];
                }
            }
            request = new CloudWatchDownloader.DownloadRequest(
                env, ids, t.UnixTimestampMillisToDateTime());
            return(true);
        }
Example #2
0
        async Task DownloadAndMakeZip(
            CloudWatchDownloader.DownloadRequest request,
            Stream zipStream,
            IPreprocessingStepCallback callback
            )
        {
            var logs = await CloudWatchDownloader.Download(
                webViewTools, request, callback.SetStepDescription);

            using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true))
            {
                foreach (var l in logs)
                {
                    string tmpFile = callback.TempFilesManager.GenerateNewName();
                    File.WriteAllText(tmpFile, l.Value);
                    archive.CreateEntryFromFile(tmpFile, l.Key);
                    File.Delete(tmpFile);
                }
            }
        }