Преглед изворни кода

Merge pull request #3835 from cvium/fix_tvdb_404_shit_nginx_failure

Throw HttpException when tvdb sends us crap data
Bond-009 пре 4 година
родитељ
комит
bacfbbbd58
1 измењених фајлова са 12 додато и 0 уклоњено
  1. 12 0
      MediaBrowser.Providers/Manager/ProviderManager.cs

+ 12 - 0
MediaBrowser.Providers/Manager/ProviderManager.cs

@@ -4,6 +4,8 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.Globalization;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
+using System.Net;
+using System.Net.Mime;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Entities;
@@ -22,6 +24,7 @@ using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Events;
 using MediaBrowser.Model.Events;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Net;
 using MediaBrowser.Model.Providers;
 using MediaBrowser.Model.Providers;
 using Microsoft.Extensions.Logging;
 using Microsoft.Extensions.Logging;
 using Priority_Queue;
 using Priority_Queue;
@@ -169,6 +172,15 @@ namespace MediaBrowser.Providers.Manager
                 }
                 }
             }
             }
 
 
+            // thetvdb will sometimes serve a rubbish 404 html page with a 200 OK code, because reasons...
+            if (response.ContentType.Equals(MediaTypeNames.Text.Html, StringComparison.OrdinalIgnoreCase))
+            {
+                throw new HttpException("Invalid image received.")
+                {
+                    StatusCode = HttpStatusCode.NotFound
+                };
+            }
+
             await SaveImage(item, response.Content, response.ContentType, type, imageIndex, cancellationToken).ConfigureAwait(false);
             await SaveImage(item, response.Content, response.ContentType, type, imageIndex, cancellationToken).ConfigureAwait(false);
         }
         }