Exemple #1
0
        public async Task <DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
        {
            var channelItem = (IChannelItem)item;

            var imageResponse = new DynamicImageResponse();

            if (!string.IsNullOrEmpty(channelItem.OriginalImageUrl))
            {
                var options = new HttpRequestOptions
                {
                    CancellationToken = cancellationToken,
                    Url = channelItem.OriginalImageUrl
                };

                var response = await _httpClient.GetResponse(options).ConfigureAwait(false);

                if (response.ContentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase))
                {
                    imageResponse.HasImage = true;
                    imageResponse.Stream   = response.Content;
                    imageResponse.SetFormatFromMimeType(response.ContentType);
                }
                else
                {
                    _logger.Error("Provider did not return an image content type.");
                }
            }

            return(imageResponse);
        }
        public async Task <DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken)
        {
            var liveTvItem = (LiveTvProgram)item;

            var imageResponse = new DynamicImageResponse();

            if (!string.IsNullOrEmpty(liveTvItem.ProviderImagePath))
            {
                imageResponse.Path     = liveTvItem.ProviderImagePath;
                imageResponse.HasImage = true;
            }
            else if (!string.IsNullOrEmpty(liveTvItem.ProviderImageUrl))
            {
                var options = new HttpRequestOptions
                {
                    CancellationToken = cancellationToken,
                    Url = liveTvItem.ProviderImageUrl
                };

                var response = await _httpClient.GetResponse(options).ConfigureAwait(false);

                if (response.ContentType.StartsWith("image/", StringComparison.OrdinalIgnoreCase))
                {
                    imageResponse.HasImage = true;
                    imageResponse.Stream   = response.Content;
                    imageResponse.SetFormatFromMimeType(response.ContentType);
                }
                else
                {
                    _logger.Error("Provider did not return an image content type.");
                }
            }
            else if (liveTvItem.HasProviderImage ?? true)
            {
                var service = _liveTvManager.Services.FirstOrDefault(i => string.Equals(i.Name, liveTvItem.ServiceName, StringComparison.OrdinalIgnoreCase));

                if (service != null)
                {
                    try
                    {
                        var channel = _liveTvManager.GetInternalChannel(liveTvItem.ChannelId);

                        var response = await service.GetProgramImageAsync(liveTvItem.ExternalId, channel.ExternalId, cancellationToken).ConfigureAwait(false);

                        if (response != null)
                        {
                            imageResponse.HasImage = true;
                            imageResponse.Stream   = response.Stream;
                            imageResponse.Format   = response.Format;
                        }
                    }
                    catch (NotImplementedException)
                    {
                    }
                }
            }

            return(imageResponse);
        }
Exemple #3
0
        private async Task <DynamicImageResponse> LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory)
        {
            var utilities = new OpfReader <EpubMetadataImageProvider>(opf, _logger);
            var coverRef  = utilities.ReadCoverPath(opfRootDirectory);

            if (coverRef == null)
            {
                return(new DynamicImageResponse {
                    HasImage = false
                });
            }

            var cover = coverRef.Value;

            var coverFile = epub.GetEntry(cover.Path);

            if (coverFile == null)
            {
                return(new DynamicImageResponse {
                    HasImage = false
                });
            }

            var memoryStream = new MemoryStream();

            using (var coverStream = coverFile.Open())
            {
                await coverStream.CopyToAsync(memoryStream)
                .ConfigureAwait(false);
            }

            memoryStream.Position = 0;

            var response = new DynamicImageResponse
            {
                HasImage = true,
                Stream   = memoryStream
            };

            response.SetFormatFromMimeType(cover.MimeType);

            return(response);
        }
Exemple #4
0
        private Task <DynamicImageResponse> LoadCover(ZipArchive epub, XmlDocument opf, string opfRootDirectory)
        {
            var coverRef = ReadCoverPath(opf, opfRootDirectory);

            if (coverRef == null)
            {
                return(Task.FromResult(new DynamicImageResponse {
                    HasImage = false
                }));
            }

            var cover = coverRef.Value;

            var coverFile = epub.GetEntry(cover.Path);

            if (coverFile == null)
            {
                return(Task.FromResult(new DynamicImageResponse {
                    HasImage = false
                }));
            }

            var memoryStream = new MemoryStream();

            using (var coverStream = coverFile.Open())
            {
                coverStream.CopyTo(memoryStream);
            }

            memoryStream.Position = 0;

            var response = new DynamicImageResponse
            {
                HasImage = true,
                Stream   = memoryStream
            };

            response.SetFormatFromMimeType(cover.MimeType);

            return(Task.FromResult(response));
        }