Browse Source

Suggestions from review

Cody Robibero 3 years ago
parent
commit
0587b539ec
21 changed files with 39 additions and 555 deletions
  1. 21 4
      Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
  2. 0 3
      tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
  3. 10 15
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs
  4. 0 113
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json
  5. 0 18
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json
  6. 0 40
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json
  7. 0 51
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json
  8. 0 245
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json
  9. 0 16
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json
  10. 0 35
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json
  11. 0 7
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json
  12. 0 8
      tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json
  13. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json
  14. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json
  15. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json
  16. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json
  17. 0 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json
  18. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json
  19. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json
  20. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json
  21. 1 0
      tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json

+ 21 - 4
Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs

@@ -9,6 +9,7 @@ using System.Globalization;
 using System.Linq;
 using System.Net;
 using System.Net.Http;
+using System.Net.Http.Headers;
 using System.Net.Http.Json;
 using System.Net.Mime;
 using System.Text;
@@ -113,18 +114,29 @@ namespace Emby.Server.Implementations.LiveTv.Listings
             using var response = await Send(options, true, info, cancellationToken).ConfigureAwait(false);
             await using var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
             var dailySchedules = await JsonSerializer.DeserializeAsync<IReadOnlyList<DayDto>>(responseStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
-            _logger.LogDebug("Found {ScheduleCount} programs on {ChannelID} ScheduleDirect", dailySchedules!.Count, channelId);
+            if (dailySchedules == null)
+            {
+                return Array.Empty<ProgramInfo>();
+            }
+
+            _logger.LogDebug("Found {ScheduleCount} programs on {ChannelID} ScheduleDirect", dailySchedules.Count, channelId);
 
             using var programRequestOptions = new HttpRequestMessage(HttpMethod.Post, ApiUrl + "/programs");
             programRequestOptions.Headers.TryAddWithoutValidation("token", token);
 
             var programIds = dailySchedules.SelectMany(d => d.Programs.Select(s => s.ProgramId)).Distinct();
-            programRequestOptions.Content = new StringContent(JsonSerializer.Serialize(programIds), Encoding.UTF8, MediaTypeNames.Application.Json);
+            programRequestOptions.Content = new ByteArrayContent(JsonSerializer.SerializeToUtf8Bytes(programIds, _jsonOptions));
+            programRequestOptions.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Json);
 
             using var innerResponse = await Send(programRequestOptions, true, info, cancellationToken).ConfigureAwait(false);
             await using var innerResponseStream = await innerResponse.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
             var programDetails = await JsonSerializer.DeserializeAsync<IReadOnlyList<ProgramDetailsDto>>(innerResponseStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
-            var programDict = programDetails!.ToDictionary(p => p.ProgramId, y => y);
+            if (programDetails == null)
+            {
+                return Array.Empty<ProgramInfo>();
+            }
+
+            var programDict = programDetails.ToDictionary(p => p.ProgramId, y => y);
 
             var programIdsWithImages = programDetails
                 .Where(p => p.HasImageArtwork).Select(p => p.ProgramId)
@@ -775,7 +787,12 @@ namespace Emby.Server.Implementations.LiveTv.Listings
             using var httpResponse = await Send(options, true, info, cancellationToken).ConfigureAwait(false);
             await using var stream = await httpResponse.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
             var root = await JsonSerializer.DeserializeAsync<ChannelDto>(stream, _jsonOptions, cancellationToken).ConfigureAwait(false);
-            _logger.LogInformation("Found {ChannelCount} channels on the lineup on ScheduleDirect", root!.Map.Count);
+            if (root == null)
+            {
+                return new List<ChannelInfo>();
+            }
+
+            _logger.LogInformation("Found {ChannelCount} channels on the lineup on ScheduleDirect", root.Map.Count);
             _logger.LogInformation("Mapping Stations to Channel");
 
             var allStations = root.Stations;

+ 0 - 3
tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj

@@ -16,9 +16,6 @@
     <None Include="Test Data\**\*.*">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Update="LiveTv\SchedulesDirect\TestData\*">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
   </ItemGroup>
 
   <ItemGroup>

+ 10 - 15
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs

@@ -23,7 +23,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Token_Response_Live_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/token_live_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_live_response.json");
             var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes);
 
             Assert.NotNull(tokenDto);
@@ -40,7 +40,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Token_Response_Offline_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/token_offline_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_offline_response.json");
             var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes);
 
             Assert.NotNull(tokenDto);
@@ -58,7 +58,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Serialize_Schedule_Request_Success()
         {
-            var expectedString = File.ReadAllText("LiveTv/SchedulesDirect/TestData/schedules_request.json").Trim();
+            var expectedString = File.ReadAllText("Test Data/SchedulesDirect/schedules_request.json").Trim();
 
             var requestObject = new RequestScheduleForChannelDto[]
             {
@@ -82,12 +82,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
                 }
             };
 
-            var jsonOptions = new JsonSerializerOptions(_jsonOptions)
-            {
-                WriteIndented = true
-            };
-
-            var requestString = JsonSerializer.Serialize(requestObject, jsonOptions);
+            var requestString = JsonSerializer.Serialize(requestObject, _jsonOptions);
             Assert.Equal(expectedString, requestString);
         }
 
@@ -97,7 +92,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Schedule_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/schedules_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/schedules_response.json");
             var days = JsonSerializer.Deserialize<IReadOnlyList<DayDto>>(bytes);
 
             Assert.NotNull(days);
@@ -125,7 +120,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Program_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/programs_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/programs_response.json");
             var programDtos = JsonSerializer.Deserialize<IReadOnlyList<ProgramDetailsDto>>(bytes);
 
             Assert.NotNull(programDtos);
@@ -162,7 +157,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Metadata_Programs_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/metadata_programs_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/metadata_programs_response.json");
             var showImagesDtos = JsonSerializer.Deserialize<IReadOnlyList<ShowImagesDto>>(bytes);
 
             Assert.NotNull(showImagesDtos);
@@ -186,7 +181,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Headends_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/headends_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/headends_response.json");
             var headendsDtos = JsonSerializer.Deserialize<IReadOnlyList<HeadendsDto>>(bytes);
 
             Assert.NotNull(headendsDtos);
@@ -206,7 +201,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Lineups_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/lineups_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineups_response.json");
             var lineupsDto = JsonSerializer.Deserialize<LineupsDto>(bytes);
 
             Assert.NotNull(lineupsDto);
@@ -230,7 +225,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
         [Fact]
         public void Deserialize_Lineup_Response_Success()
         {
-            var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/lineup_response.json");
+            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineup_response.json");
             var channelDto = JsonSerializer.Deserialize<ChannelDto>(bytes);
 
             Assert.NotNull(channelDto);

+ 0 - 113
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json

@@ -1,113 +0,0 @@
-[
-  {
-    "headend": "CA00053",
-    "transport": "Cable",
-    "location": "Beverly Hills",
-    "lineups": [
-      {
-        "name": "Time Warner Cable - Cable",
-        "lineup": "USA-CA00053-DEFAULT",
-        "uri": "/20141201/lineups/USA-CA00053-DEFAULT"
-      },
-      {
-        "name": "Time Warner Cable - Digital",
-        "lineup": "USA-CA00053-X",
-        "uri": "/20141201/lineups/USA-CA00053-X"
-      }
-    ]
-  },
-  {
-    "headend": "CA61222",
-    "transport": "Cable",
-    "location": "Beverly Hills",
-    "lineups": [
-      {
-        "name": "Mulholland Estates - Cable",
-        "lineup": "USA-CA61222-DEFAULT",
-        "uri": "/20141201/lineups/USA-CA61222-DEFAULT"
-      }
-    ]
-  },
-  {
-    "headend": "CA66511",
-    "transport": "Cable",
-    "location": "Los Angeles",
-    "lineups": [
-      {
-        "name": "AT&T U-verse TV - Digital",
-        "lineup": "USA-CA66511-X",
-        "uri": "/20141201/lineups/USA-CA66511-X"
-      }
-    ]
-  },
-  {
-    "headend": "CA67309",
-    "transport": "Cable",
-    "location": "Westchester",
-    "lineups": [
-      {
-        "name": "Time Warner Cable Sherman Oaks - Cable",
-        "lineup": "USA-CA67309-DEFAULT",
-        "uri": "/20141201/lineups/USA-CA67309-DEFAULT"
-      },
-      {
-        "name": "Time Warner Cable Sherman Oaks - Digital",
-        "lineup": "USA-CA67309-X",
-        "uri": "/20141201/lineups/USA-CA67309-X"
-      }
-    ]
-  },
-  {
-    "headend": "CA67310",
-    "transport": "Cable",
-    "location": "Eagle Rock",
-    "lineups": [
-      {
-        "name": "Time Warner Cable City of Los Angeles - Cable",
-        "lineup": "USA-CA67310-DEFAULT",
-        "uri": "/20141201/lineups/USA-CA67310-DEFAULT"
-      },
-      {
-        "name": "Time Warner Cable City of Los Angeles - Digital",
-        "lineup": "USA-CA67310-X",
-        "uri": "/20141201/lineups/USA-CA67310-X"
-      }
-    ]
-  },
-  {
-    "headend": "DISH803",
-    "transport": "Satellite",
-    "location": "Los Angeles",
-    "lineups": [
-      {
-        "name": "DISH Los Angeles - Satellite",
-        "lineup": "USA-DISH803-DEFAULT",
-        "uri": "/20141201/lineups/USA-DISH803-DEFAULT"
-      }
-    ]
-  },
-  {
-    "headend": "DITV803",
-    "transport": "Satellite",
-    "location": "Los Angeles",
-    "lineups": [
-      {
-        "name": "DIRECTV Los Angeles - Satellite",
-        "lineup": "USA-DITV803-DEFAULT",
-        "uri": "/20141201/lineups/USA-DITV803-DEFAULT"
-      }
-    ]
-  },
-  {
-    "headend": "90210",
-    "transport": "Antenna",
-    "location": "90210",
-    "lineups": [
-      {
-        "name": "Antenna",
-        "lineup": "USA-OTA-90210",
-        "uri": "/20141201/lineups/USA-OTA-90210"
-      }
-    ]
-  }
-]

+ 0 - 18
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json

@@ -1,18 +0,0 @@
-{
-  "map": [
-    {
-      "stationID": "24326",
-      "channel": "001",
-      "providerCallsign": "BBC ONE South",
-      "logicalChannelNumber": "1",
-      "matchType": "providerCallsign"
-    },
-    {
-      "stationID": "17154",
-      "channel": "002",
-      "providerCallsign": "BBC TWO",
-      "logicalChannelNumber": "2",
-      "matchType": "providerCallsign"
-    }
-  ]
-}

+ 0 - 40
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json

@@ -1,40 +0,0 @@
-{
-  "code": 0,
-  "serverID": "20141201.web.1",
-  "datetime": "2015-04-17T14:22:17Z",
-  "lineups": [
-    {
-      "lineup": "GBR-0001317-DEFAULT",
-      "name": "Freeview - Carlton - LWT (Southeast)",
-      "transport": "DVB-T",
-      "location": "London",
-      "uri": "/20141201/lineups/GBR-0001317-DEFAULT"
-    },
-    {
-      "lineup": "USA-IL57303-X",
-      "name": "Comcast Waukegan/Lake Forest Area - Digital",
-      "transport": "Cable",
-      "location": "Lake Forest",
-      "uri": "/20141201/lineups/USA-IL57303-X"
-    },
-    {
-      "lineup": "USA-NY67791-X",
-      "name": "Verizon Fios Queens - Digital",
-      "transport": "Cable",
-      "location": "Fresh Meadows",
-      "uri": "/20141201/lineups/USA-NY67791-X"
-    },
-    {
-      "lineup": "USA-OTA-60030",
-      "name": "Local Over the Air Broadcast",
-      "transport": "Antenna",
-      "location": "60030",
-      "uri": "/20141201/lineups/USA-OTA-60030"
-    },
-    {
-      "lineup": "USA-WI61859-DEFAULT",
-      "name": "DELETED LINEUP",
-      "isDeleted": true
-    }
-  ]
-}

+ 0 - 51
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json

@@ -1,51 +0,0 @@
-[
-  {
-    "programID": "SH00712240",
-    "data": [
-      {
-        "width": "135",
-        "height": "180",
-        "uri": "assets/p282288_b_v2_aa.jpg",
-        "size": "Sm",
-        "aspect": "3x4",
-        "category": "Banner-L3",
-        "text": "yes",
-        "primary": "true",
-        "tier": "Series"
-      },
-      {
-        "width": "720",
-        "height": "540",
-        "uri": "assets/p282288_b_h6_aa.jpg",
-        "size": "Lg",
-        "aspect": "4x3",
-        "category": "Banner-L3",
-        "text": "yes",
-        "primary": "true",
-        "tier": "Series"
-      },
-      {
-        "width": "960",
-        "height": "1440",
-        "uri": "assets/p282288_b_v8_aa.jpg",
-        "size": "Ms",
-        "aspect": "2x3",
-        "category": "Banner-L3",
-        "text": "yes",
-        "primary": "true",
-        "tier": "Series"
-      },
-      {
-        "width": "180",
-        "height": "135",
-        "uri": "assets/p282288_b_h5_aa.jpg",
-        "size": "Sm",
-        "aspect": "4x3",
-        "category": "Banner-L3",
-        "text": "yes",
-        "primary": "true",
-        "tier": "Series"
-      }
-    ]
-  }
-]

+ 0 - 245
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json

@@ -1,245 +0,0 @@
-[
-  {
-    "programID": "EP000000060003",
-    "titles": [{
-      "title120": "'Allo 'Allo!"
-    }],
-    "eventDetails": {
-      "subType": "Series"
-    },
-    "descriptions": {
-      "description1000": [{
-        "descriptionLanguage": "en",
-        "description": "A disguised British Intelligence officer is sent to help the airmen."
-      }]
-    },
-    "originalAirDate": "1985-11-04",
-    "genres": ["Sitcom"],
-    "episodeTitle150": "The Poloceman Cometh",
-    "metadata": [{
-      "Gracenote": {
-        "season": 2,
-        "episode": 3
-      }
-    }],
-    "cast": [{
-      "personId": "383774",
-      "nameId": "392649",
-      "name": "Gorden Kaye",
-      "role": "Actor",
-      "billingOrder": "01"
-    }, {
-      "personId": "246840",
-      "nameId": "250387",
-      "name": "Carmen Silvera",
-      "role": "Actor",
-      "billingOrder": "02"
-    }, {
-      "personId": "376955",
-      "nameId": "385830",
-      "name": "Rose Hill",
-      "role": "Actor",
-      "billingOrder": "03"
-    }, {
-      "personId": "259773",
-      "nameId": "263340",
-      "name": "Vicki Michelle",
-      "role": "Actor",
-      "billingOrder": "04"
-    }, {
-      "personId": "353113",
-      "nameId": "361987",
-      "name": "Kirsten Cooke",
-      "role": "Actor",
-      "billingOrder": "05"
-    }, {
-      "personId": "77787",
-      "nameId": "77787",
-      "name": "Richard Marner",
-      "role": "Actor",
-      "billingOrder": "06"
-    }, {
-      "personId": "230921",
-      "nameId": "234193",
-      "name": "Guy Siner",
-      "role": "Actor",
-      "billingOrder": "07"
-    }, {
-      "personId": "374934",
-      "nameId": "383809",
-      "name": "Kim Hartman",
-      "role": "Actor",
-      "billingOrder": "08"
-    }, {
-      "personId": "369151",
-      "nameId": "378026",
-      "name": "Richard Gibson",
-      "role": "Actor",
-      "billingOrder": "09"
-    }, {
-      "personId": "343690",
-      "nameId": "352564",
-      "name": "Arthur Bostrom",
-      "role": "Actor",
-      "billingOrder": "10"
-    }, {
-      "personId": "352557",
-      "nameId": "361431",
-      "name": "John D. Collins",
-      "role": "Actor",
-      "billingOrder": "11"
-    }, {
-      "personId": "605275",
-      "nameId": "627734",
-      "name": "Nicholas Frankau",
-      "role": "Actor",
-      "billingOrder": "12"
-    }, {
-      "personId": "373394",
-      "nameId": "382269",
-      "name": "Jack Haig",
-      "role": "Actor",
-      "billingOrder": "13"
-    }],
-    "crew": [{
-      "personId": "354407",
-      "nameId": "363281",
-      "name": "David Croft",
-      "role": "Director",
-      "billingOrder": "01"
-    }, {
-      "personId": "354407",
-      "nameId": "363281",
-      "name": "David Croft",
-      "role": "Writer",
-      "billingOrder": "02"
-    }, {
-      "personId": "105145",
-      "nameId": "105145",
-      "name": "Jeremy Lloyd",
-      "role": "Writer",
-      "billingOrder": "03"
-    }],
-    "showType": "Series",
-    "hasImageArtwork": true,
-    "md5": "Jo5NKxoo44xRvBCAq8QT2A"
-  },
-  {
-    "programID": "EP000000510142",
-    "titles": [{
-      "title120": "A Different World"
-    }],
-    "eventDetails": {
-      "subType": "Series"
-    },
-    "descriptions": {
-      "description1000": [{
-        "descriptionLanguage": "en",
-        "description": "Whitley and Dwayne tell new students about their honeymoon in Los Angeles."
-      }]
-    },
-    "originalAirDate": "1992-09-24",
-    "genres": ["Sitcom"],
-    "episodeTitle150": "Honeymoon in L.A.",
-    "metadata": [{
-      "Gracenote": {
-        "season": 6,
-        "episode": 1
-      }
-    }],
-    "cast": [{
-      "personId": "700",
-      "nameId": "700",
-      "name": "Jasmine Guy",
-      "role": "Actor",
-      "billingOrder": "01"
-    }, {
-      "personId": "729",
-      "nameId": "729",
-      "name": "Kadeem Hardison",
-      "role": "Actor",
-      "billingOrder": "02"
-    }, {
-      "personId": "120",
-      "nameId": "120",
-      "name": "Darryl M. Bell",
-      "role": "Actor",
-      "billingOrder": "03"
-    }, {
-      "personId": "1729",
-      "nameId": "1729",
-      "name": "Cree Summer",
-      "role": "Actor",
-      "billingOrder": "04"
-    }, {
-      "personId": "217",
-      "nameId": "217",
-      "name": "Charnele Brown",
-      "role": "Actor",
-      "billingOrder": "05"
-    }, {
-      "personId": "1811",
-      "nameId": "1811",
-      "name": "Glynn Turman",
-      "role": "Actor",
-      "billingOrder": "06"
-    }, {
-      "personId": "1232",
-      "nameId": "1232",
-      "name": "Lou Myers",
-      "role": "Actor",
-      "billingOrder": "07"
-    }, {
-      "personId": "1363",
-      "nameId": "1363",
-      "name": "Jada Pinkett",
-      "role": "Guest Star",
-      "billingOrder": "08"
-    }, {
-      "personId": "222967",
-      "nameId": "225536",
-      "name": "Ajai Sanders",
-      "role": "Guest Star",
-      "billingOrder": "09"
-    }, {
-      "personId": "181744",
-      "nameId": "183292",
-      "name": "Karen Malina White",
-      "role": "Guest Star",
-      "billingOrder": "10"
-    }, {
-      "personId": "305017",
-      "nameId": "318897",
-      "name": "Patrick Y. Malone",
-      "role": "Guest Star",
-      "billingOrder": "11"
-    }, {
-      "personId": "9841",
-      "nameId": "9841",
-      "name": "Bumper Robinson",
-      "role": "Guest Star",
-      "billingOrder": "12"
-    }, {
-      "personId": "426422",
-      "nameId": "435297",
-      "name": "Sister Souljah",
-      "role": "Guest Star",
-      "billingOrder": "13"
-    }, {
-      "personId": "25",
-      "nameId": "25",
-      "name": "Debbie Allen",
-      "role": "Guest Star",
-      "billingOrder": "14"
-    }, {
-      "personId": "668",
-      "nameId": "668",
-      "name": "Gilbert Gottfried",
-      "role": "Guest Star",
-      "billingOrder": "15"
-    }],
-    "showType": "Series",
-    "hasImageArtwork": true,
-    "md5": "P5kz0QmCeYxIA+yL0H4DWw"
-  }
-]

+ 0 - 16
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json

@@ -1,16 +0,0 @@
-[
-  {
-    "stationID": "20454",
-    "date": [
-      "2015-03-13",
-      "2015-03-17"
-    ]
-  },
-  {
-    "stationID": "10021",
-    "date": [
-      "2015-03-12",
-      "2015-03-13"
-    ]
-  }
-]

+ 0 - 35
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json

@@ -1,35 +0,0 @@
-[
-  {
-    "stationID": "20454",
-    "programs": [
-      {
-        "programID": "SH005371070000",
-        "airDateTime": "2015-03-03T00:00:00Z",
-        "duration": 1800,
-        "md5": "Sy8HEMBPcuiAx3FBukUhKQ",
-        "new": true,
-        "audioProperties": [
-          "stereo",
-          "cc"
-        ],
-        "videoProperties": [
-          "hdtv"
-        ]
-      },
-      {
-        "programID": "EP000014577244",
-        "airDateTime": "2015-03-03T00:30:00Z",
-        "duration": 1800,
-        "md5": "25DNXVXO192JI7Y9vSW9lQ",
-        "new": true,
-        "audioProperties": [
-          "stereo",
-          "cc"
-        ],
-        "videoProperties": [
-          "hdtv"
-        ]
-      }
-    ]
-  }
-]

+ 0 - 7
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json

@@ -1,7 +0,0 @@
-{
-  "code": 0,
-  "message": "OK",
-  "serverID": "AWS-SD-web.1",
-  "datetime": "2016-08-23T13:55:25Z",
-  "token": "f3fca79989cafe7dead71beefedc812b"
-}

+ 0 - 8
tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json

@@ -1,8 +0,0 @@
-{
-  "response": "SERVICE_OFFLINE",
-  "code": 3000,
-  "serverID": "20141201.web.1",
-  "message": "Server offline for maintenance.",
-  "datetime": "2015-04-23T00:03:32Z",
-  "token": "CAFEDEADBEEFCAFEDEADBEEFCAFEDEADBEEFCAFE"
-}

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json

@@ -0,0 +1 @@
+[{"headend":"CA00053","transport":"Cable","location":"Beverly Hills","lineups":[{"name":"Time Warner Cable - Cable","lineup":"USA-CA00053-DEFAULT","uri":"/20141201/lineups/USA-CA00053-DEFAULT"},{"name":"Time Warner Cable - Digital","lineup":"USA-CA00053-X","uri":"/20141201/lineups/USA-CA00053-X"}]},{"headend":"CA61222","transport":"Cable","location":"Beverly Hills","lineups":[{"name":"Mulholland Estates - Cable","lineup":"USA-CA61222-DEFAULT","uri":"/20141201/lineups/USA-CA61222-DEFAULT"}]},{"headend":"CA66511","transport":"Cable","location":"Los Angeles","lineups":[{"name":"AT&T U-verse TV - Digital","lineup":"USA-CA66511-X","uri":"/20141201/lineups/USA-CA66511-X"}]},{"headend":"CA67309","transport":"Cable","location":"Westchester","lineups":[{"name":"Time Warner Cable Sherman Oaks - Cable","lineup":"USA-CA67309-DEFAULT","uri":"/20141201/lineups/USA-CA67309-DEFAULT"},{"name":"Time Warner Cable Sherman Oaks - Digital","lineup":"USA-CA67309-X","uri":"/20141201/lineups/USA-CA67309-X"}]},{"headend":"CA67310","transport":"Cable","location":"Eagle Rock","lineups":[{"name":"Time Warner Cable City of Los Angeles - Cable","lineup":"USA-CA67310-DEFAULT","uri":"/20141201/lineups/USA-CA67310-DEFAULT"},{"name":"Time Warner Cable City of Los Angeles - Digital","lineup":"USA-CA67310-X","uri":"/20141201/lineups/USA-CA67310-X"}]},{"headend":"DISH803","transport":"Satellite","location":"Los Angeles","lineups":[{"name":"DISH Los Angeles - Satellite","lineup":"USA-DISH803-DEFAULT","uri":"/20141201/lineups/USA-DISH803-DEFAULT"}]},{"headend":"DITV803","transport":"Satellite","location":"Los Angeles","lineups":[{"name":"DIRECTV Los Angeles - Satellite","lineup":"USA-DITV803-DEFAULT","uri":"/20141201/lineups/USA-DITV803-DEFAULT"}]},{"headend":"90210","transport":"Antenna","location":"90210","lineups":[{"name":"Antenna","lineup":"USA-OTA-90210","uri":"/20141201/lineups/USA-OTA-90210"}]}]

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json

@@ -0,0 +1 @@
+{"map":[{"stationID":"24326","channel":"001","providerCallsign":"BBC ONE South","logicalChannelNumber":"1","matchType":"providerCallsign"},{"stationID":"17154","channel":"002","providerCallsign":"BBC TWO","logicalChannelNumber":"2","matchType":"providerCallsign"}]}

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json

@@ -0,0 +1 @@
+{"code":0,"serverID":"20141201.web.1","datetime":"2015-04-17T14:22:17Z","lineups":[{"lineup":"GBR-0001317-DEFAULT","name":"Freeview - Carlton - LWT (Southeast)","transport":"DVB-T","location":"London","uri":"/20141201/lineups/GBR-0001317-DEFAULT"},{"lineup":"USA-IL57303-X","name":"Comcast Waukegan/Lake Forest Area - Digital","transport":"Cable","location":"Lake Forest","uri":"/20141201/lineups/USA-IL57303-X"},{"lineup":"USA-NY67791-X","name":"Verizon Fios Queens - Digital","transport":"Cable","location":"Fresh Meadows","uri":"/20141201/lineups/USA-NY67791-X"},{"lineup":"USA-OTA-60030","name":"Local Over the Air Broadcast","transport":"Antenna","location":"60030","uri":"/20141201/lineups/USA-OTA-60030"},{"lineup":"USA-WI61859-DEFAULT","name":"DELETED LINEUP","isDeleted":true}]}

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json

@@ -0,0 +1 @@
+[{"programID":"SH00712240","data":[{"width":"135","height":"180","uri":"assets/p282288_b_v2_aa.jpg","size":"Sm","aspect":"3x4","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"720","height":"540","uri":"assets/p282288_b_h6_aa.jpg","size":"Lg","aspect":"4x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"960","height":"1440","uri":"assets/p282288_b_v8_aa.jpg","size":"Ms","aspect":"2x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"180","height":"135","uri":"assets/p282288_b_h5_aa.jpg","size":"Sm","aspect":"4x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"}]}]

File diff suppressed because it is too large
+ 0 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json


+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json

@@ -0,0 +1 @@
+[{"stationID":"20454","date":["2015-03-13","2015-03-17"]},{"stationID":"10021","date":["2015-03-12","2015-03-13"]}]

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json

@@ -0,0 +1 @@
+[{"stationID":"20454","programs":[{"programID":"SH005371070000","airDateTime":"2015-03-03T00:00:00Z","duration":1800,"md5":"Sy8HEMBPcuiAx3FBukUhKQ","new":true,"audioProperties":["stereo","cc"],"videoProperties":["hdtv"]},{"programID":"EP000014577244","airDateTime":"2015-03-03T00:30:00Z","duration":1800,"md5":"25DNXVXO192JI7Y9vSW9lQ","new":true,"audioProperties":["stereo","cc"],"videoProperties":["hdtv"]}]}]

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json

@@ -0,0 +1 @@
+{"code":0,"message":"OK","serverID":"AWS-SD-web.1","datetime":"2016-08-23T13:55:25Z","token":"f3fca79989cafe7dead71beefedc812b"}

+ 1 - 0
tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json

@@ -0,0 +1 @@
+{"response":"SERVICE_OFFLINE","code":3000,"serverID":"20141201.web.1","message":"Server offline for maintenance.","datetime":"2015-04-23T00:03:32Z","token":"CAFEDEADBEEFCAFEDEADBEEFCAFEDEADBEEFCAFE"}

Some files were not shown because too many files changed in this diff