/// <summary> /// Combines segments into text product. /// </summary> /// <param name="segments">The segments.</param> /// <returns>TextProduct.</returns> /// <exception cref="System.ArgumentNullException"></exception> public static TextProduct AsTextProduct(this QuickBlockTransferSegment[] segments) { if (segments == null) { throw new ArgumentNullException(nameof(segments)); } var lastSegment = segments[segments.Length - 1]; var content = segments.Select(b => b.Content).ToList().Combine(true); return(TextProduct.Create(lastSegment.Filename, lastSegment.TimeStamp, content, lastSegment.ReceivedAt, lastSegment.Source)); }
private static void UnZip(CompressedProduct product, IEventPublisher ctx) { using (var zip = new ZipArchive(product.GetStream(), ZipArchiveMode.Read)) { foreach (var file in zip.Entries) { using (var fileStream = file.Open()) { var fileName = file.Name.ToUpperInvariant(); var contentType = ContentTypeParser.GetFileContentType(fileName); switch (contentType) { case ContentFileType.Text: using (var text = new StreamReader(fileStream)) { var textProduct = TextProduct.Create(fileName, file.LastWriteTime, text.ReadToEnd(), product.ReceivedAt, product.Source); ctx.SendMessage(textProduct); ProcessorEventSource.Log.Info(nameof(ZipExtractor), textProduct.ToString()); } break; case ContentFileType.Image: var imageProduct = ImageProduct.Create( fileName, file.LastWriteTime, ReadAllBytes(fileStream), product.ReceivedAt, product.Source); ctx.SendMessage(imageProduct); ProcessorEventSource.Log.Info(nameof(ZipExtractor), imageProduct.ToString()); break; // There are no zips within zips :-) default: ProcessorEventSource.Log.Warning(nameof(ZipExtractor), "Unknown content file type: " + file.Name); return; } } } } }
private static TextProduct GetFloodWarning() => TextProduct.Create( "FLWOAXXXXX.TXT", new DateTimeOffset(2015, 6, 5, 23, 45, 0, TimeSpan.Zero), Encoding.ASCII.GetBytes(WarningProducts.FloodWarning), DateTimeOffset.UtcNow, string.Empty);
private static TextProduct GetTornadoWarning() => TextProduct.Create( "TORDDCXXXX.TXT", new DateTimeOffset(2015, 6, 5, 0, 56, 0, TimeSpan.Zero), Encoding.ASCII.GetBytes(WarningProducts.TornadoWarning), DateTimeOffset.UtcNow, string.Empty);