Exemplo n.º 1
0
        public async Task <GZipStream> GetNationStatesDumpStream(NationStatesDumpType type)
        {
            var eventId = LogEventIdProvider.GetRandomLogEventId();

            try
            {
                string url = "https://www.nationstates.net/pages/";
                if (type == NationStatesDumpType.Nations)
                {
                    url += "nations.xml.gz";
                    _logger.LogInformation(eventId, LogMessageBuilder.Build(eventId, "Retrieval of latest Nation dump requested"));
                }
                else if (type == NationStatesDumpType.Regions)
                {
                    url += "regions.xml.gz";
                    _logger.LogInformation(eventId, LogMessageBuilder.Build(eventId, "Retrieval of latest Region dump requested"));
                }
                else
                {
                    throw new NotImplementedException($"Retrieval for DumpType {type} not implemented yet.");
                }
                var stream = await ExecuteRequestWithStreamResult(url, eventId);

                var compressed = new GZipStream(stream, CompressionMode.Decompress);
                return(compressed);
            }
            finally
            {
                LogEventIdProvider.ReleaseEventId(eventId);
            }
        }
Exemplo n.º 2
0
        private async Task WriteDumpToLocalFileSystemAsync(NationStatesDumpType dumpType, Stream stream)
        {
            if (!(dumpType == NationStatesDumpType.Nations || dumpType == NationStatesDumpType.Regions))
            {
                throw new ArgumentException("Unknown DumpType");
            }
            string fileName = dumpType == NationStatesDumpType.Nations ? nationFileName : regionFileName;

            using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                using (var newCompressed = new GZipStream(fs, CompressionMode.Compress))
                {
                    await stream.CopyToAsync(newCompressed);
                }
            }
        }