mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-06 04:20:46 +00:00
* `PlexApi.LibraryPlaylists.AddPlaylistItems()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryPlaylists.ClearPlaylistItems()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryCollections.MoveCollectionItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryCollections.DeleteCollectionItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryCollections.AddCollectionItems()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetSonicallySimilar()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Butler.StopTask()`: `request` **Changed** **Breaking** ⚠️ * `PlexApi.Butler.StartTask()`: `request` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetSonicPath()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.DownloadQueue.GetItemDecision()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetAllHubs()`: * `request.OnlyTransient` **Changed** * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetContinueWatching()`: `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetPromotedHubs()`: `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetMetadataHubs()`: * `request.OnlyTransient` **Changed** * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetPostplayHubs()`: * `request.OnlyTransient` **Changed** * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetRelatedHubs()`: * `request.OnlyTransient` **Changed** * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Hubs.GetSectionHubs()`: * `request.OnlyTransient` **Changed** * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetAllLeaves()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Content.ListContent()`: * `request` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Search.SearchHubs()`: `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetAlbums()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetLibraryItems()`: * `request.MediaQuery` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.IngestTransientItem()`: * `request` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetLibraryMatches()`: * `request` **Changed** **Breaking** ⚠️ * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetMetadataItem()`: * `request` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetSections()`: `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.AddSection()`: * `request` **Changed** * `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetTags()`: * `request.Type` **Changed** **Breaking** ⚠️ * `PlexApi.Content.GetCollectionItems()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetAllItemLeaves()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Status.ListSessions()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.MovePlayQueueItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetExtras()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.DeletePlayQueueItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.Unshuffle()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.ListMatches()`: * `request.Manual` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.ListSonicallySimilar()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.Shuffle()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetRelatedItems()`: `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.ListSimilar()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.ResetPlayQueue()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetItemTree()`: `response.mediaContainer.MetadataItem.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.ClearPlayQueue()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.AddToPlayQueue()`: * `request.Next` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetCommon()`: * `request.MediaQuery` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetPerson()`: `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.ListPersonMedia()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.PlayQueue.GetPlayQueue()`: * `request` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetLibraryDetails()`: * `request.IncludeDetails` **Changed** * `response.mediaContainer.Directory.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryPlaylists.MovePlaylistItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.Autocomplete()`: * `request.MediaQuery` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Library.GetCollections()`: * `request.MediaQuery` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryPlaylists.GetPlaylistGeneratorItems()`: `response.mediaContainer.Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryPlaylists.DeletePlaylistItem()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Search.VoiceSearchHubs()`: * `request.Type` **Changed** **Breaking** ⚠️ * `response.mediaContainer.Hub.[].Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LibraryPlaylists.CreatePlaylist()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Playlist.GetPlaylistItems()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Playlist.GetPlaylist()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Playlist.ListPlaylists()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Collections.CreateCollection()`: * `request.Type` **Changed** **Breaking** ⚠️ * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.DvRs.TuneChannel()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LiveTv.GetSessions()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.LiveTv.GetLiveTvSession()`: `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Transcoder.MakeDecision()`: * `request` **Changed** * `response.mediaContainer.Metadata.[]` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.GetAllSubscriptions()`: * `request` **Changed** * `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.CreateSubscription()`: `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.GetScheduledRecordings()`: `response.mediaContainer.MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.GetTemplate()`: `response.mediaContainer.SubscriptionTemplate.[].MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.GetSubscription()`: * `request` **Changed** * `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.EditSubscriptionPreferences()`: `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Subscriptions.ReorderSubscription()`: `response.mediaContainer.MediaSubscription.[].MediaGrabOperation.[].Metadata` **Changed** **Breaking** ⚠️ * `PlexApi.Library.AddSubtitles()`: `request` **Changed** * `PlexApi.LibraryPlaylists.UploadPlaylist()`: * `request.Force` **Changed** * `PlexApi.Transcoder.TranscodeSubtitles()`: `request` **Changed** * `PlexApi.Transcoder.StartTranscodeSession()`: `request` **Changed** * `PlexApi.Library.GetMediaPart()`: * `request.Download` **Changed** * `PlexApi.Library.DetectIntros()`: * `request.Force` **Changed** * `PlexApi.Library.GetSectionImage()`: * `request.MediaQuery` **Changed** * `PlexApi.Library.DeleteMediaItem()`: * `request.Proxy` **Changed** * `PlexApi.Library.RefreshItemsMetadata()`: * `request.MarkUpdated` **Changed** * `PlexApi.Authentication.Post-Users-Sign-In-Data()`: **Added** * `PlexApi.Authentication.GetTokenDetails()`: **Added** * `PlexApi.Library.DetectCredits()`: `request` **Changed** * `PlexApi.Library.SetStreamSelection()`: * `request.AllParts` **Changed** * `PlexApi.Library.UpdateItems()`: * `request.Field.locked` **Changed** * `PlexApi.PlayQueue.CreatePlayQueue()`: `request` **Changed** * `PlexApi.Library.DeleteLibrarySection()`: * `request.Async` **Changed** * `PlexApi.Library.GetAugmentationStatus()`: * `request.Wait` **Changed** * `PlexApi.Transcoder.TranscodeImage()`: `request` **Changed** * `PlexApi.Devices.ModifyDevice()`: * `request.Enabled` **Changed** * `PlexApi.Library.DetectVoiceActivity()`: `request` **Changed** * `PlexApi.Library.GetStream()`: * `request.AutoAdjustSubtitle` **Changed** * `PlexApi.Library.StartBifGeneration()`: * `request.Force` **Changed** * `PlexApi.Library.GetFirstCharacters()`: * `request.MediaQuery` **Changed** * `PlexApi.UltraBlur.GetImage()`: * `request.Noise` **Changed** * `PlexApi.Library.GenerateThumbs()`: * `request.Force` **Changed** * `PlexApi.Updater.ApplyUpdates()`: `request` **Changed** * `PlexApi.Updater.CheckUpdates()`: * `request.Download` **Changed** * `PlexApi.Library.DeleteMetadataItem()`: * `request.Proxy` **Changed** * `PlexApi.Library.OptimizeDatabase()`: * `request.Async` **Changed** * `PlexApi.Library.RefreshSection()`: * `request.Force` **Changed** * `PlexApi.Hubs.UpdateHubVisibility()`: `request` **Changed** * `PlexApi.Hubs.CreateCustomHub()`: `request` **Changed** * `PlexApi.DownloadQueue.AddDownloadQueueItems()`: `request` **Changed** * `PlexApi.Timeline.Report()`: `request` **Changed** * `PlexApi.General.GetSourceConnectionInformation()`: * `request.Refresh` **Changed** * `PlexApi.Plex.Get-Server-Resources()`: **Added** * `PlexApi.Users.Get-Users()`: **Added**
1033 lines
47 KiB
C#
1033 lines
47 KiB
C#
//------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost when
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//------------------------------------------------------------------------------
|
|
#nullable enable
|
|
namespace LukeHagar.PlexAPI.SDK
|
|
{
|
|
using LukeHagar.PlexAPI.SDK.Hooks;
|
|
using LukeHagar.PlexAPI.SDK.Models.Components;
|
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
|
using LukeHagar.PlexAPI.SDK.Models.Requests;
|
|
using LukeHagar.PlexAPI.SDK.Utils;
|
|
using LukeHagar.PlexAPI.SDK.Utils.Retries;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Threading.Tasks;
|
|
|
|
/// <summary>
|
|
/// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when<br/>
|
|
///
|
|
/// <remarks>
|
|
///
|
|
/// </remarks>
|
|
/// </summary>
|
|
public interface IEpg
|
|
{
|
|
|
|
/// <summary>
|
|
/// Compute the best channel map
|
|
///
|
|
/// <remarks>
|
|
/// Compute the best channel map, given device and lineup
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<ComputeChannelMapResponse> ComputeChannelMapAsync(ComputeChannelMapRequest request);
|
|
|
|
/// <summary>
|
|
/// Get channels for a lineup
|
|
///
|
|
/// <remarks>
|
|
/// Get channels for a lineup within an EPG provider
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetChannelsResponse> GetChannelsAsync(GetChannelsRequest request);
|
|
|
|
/// <summary>
|
|
/// Get all countries
|
|
///
|
|
/// <remarks>
|
|
/// This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetCountriesResponse> GetCountriesAsync();
|
|
|
|
/// <summary>
|
|
/// Get all languages
|
|
///
|
|
/// <remarks>
|
|
/// Returns a list of all possible languages for EPG data.
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetAllLanguagesResponse> GetAllLanguagesAsync();
|
|
|
|
/// <summary>
|
|
/// Compute the best lineup
|
|
///
|
|
/// <remarks>
|
|
/// Compute the best lineup, given lineup group and device
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetLineupResponse> GetLineupAsync(GetLineupRequest request);
|
|
|
|
/// <summary>
|
|
/// Get the channels for mulitple lineups
|
|
///
|
|
/// <remarks>
|
|
/// Get the channels across multiple lineups
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetLineupChannelsResponse> GetLineupChannelsAsync(GetLineupChannelsRequest request);
|
|
|
|
/// <summary>
|
|
/// Get lineups for a country via postal code
|
|
///
|
|
/// <remarks>
|
|
/// Returns a list of lineups for a given country, EPG provider and postal code
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetCountriesLineupsResponse> GetCountriesLineupsAsync(GetCountriesLineupsRequest request);
|
|
|
|
/// <summary>
|
|
/// Get regions for a country
|
|
///
|
|
/// <remarks>
|
|
/// Get regions for a country within an EPG provider
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<GetCountryRegionsResponse> GetCountryRegionsAsync(GetCountryRegionsRequest request);
|
|
|
|
/// <summary>
|
|
/// Get lineups for a region
|
|
///
|
|
/// <remarks>
|
|
/// Get lineups for a region within an EPG provider
|
|
/// </remarks>
|
|
/// </summary>
|
|
Task<ListLineupsResponse> ListLineupsAsync(ListLineupsRequest request);
|
|
}
|
|
|
|
/// <summary>
|
|
/// The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when<br/>
|
|
///
|
|
/// <remarks>
|
|
///
|
|
/// </remarks>
|
|
/// </summary>
|
|
public class Epg: IEpg
|
|
{
|
|
public SDKConfig SDKConfiguration { get; private set; }
|
|
|
|
private const string _language = Constants.Language;
|
|
private const string _sdkVersion = Constants.SdkVersion;
|
|
private const string _sdkGenVersion = Constants.SdkGenVersion;
|
|
private const string _openapiDocVersion = Constants.OpenApiDocVersion;
|
|
|
|
public Epg(SDKConfig config)
|
|
{
|
|
SDKConfiguration = config;
|
|
}
|
|
|
|
public async Task<ComputeChannelMapResponse> ComputeChannelMapAsync(ComputeChannelMapRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new ComputeChannelMapRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channelmap", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "computeChannelMap", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
ComputeChannelMapResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<ComputeChannelMapResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into ComputeChannelMapResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new ComputeChannelMapResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetChannelsResponse> GetChannelsAsync(GetChannelsRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new GetChannelsRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/channels", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getChannels", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
GetChannelsResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<GetChannelsResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into GetChannelsResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetChannelsResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetCountriesResponse> GetCountriesAsync()
|
|
{
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
|
|
var urlString = baseUrl + "/livetv/epg/countries";
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountries", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
GetCountriesResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<GetCountriesResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into GetCountriesResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetCountriesResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetAllLanguagesResponse> GetAllLanguagesAsync()
|
|
{
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
|
|
var urlString = baseUrl + "/livetv/epg/languages";
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getAllLanguages", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
GetAllLanguagesResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<GetAllLanguagesResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into GetAllLanguagesResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetAllLanguagesResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetLineupResponse> GetLineupAsync(GetLineupRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new GetLineupRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineup", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLineup", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode == 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
return new GetLineupResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetLineupChannelsResponse> GetLineupChannelsAsync(GetLineupChannelsRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new GetLineupChannelsRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/lineupchannels", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getLineupChannels", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
GetLineupChannelsResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<GetLineupChannelsResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into GetLineupChannelsResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetLineupChannelsResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetCountriesLineupsResponse> GetCountriesLineupsAsync(GetCountriesLineupsRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new GetCountriesLineupsRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/lineups", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountriesLineups", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
MediaContainerWithLineup obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<MediaContainerWithLineup>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithLineup.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetCountriesLineupsResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.MediaContainerWithLineup = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<GetCountryRegionsResponse> GetCountryRegionsAsync(GetCountryRegionsRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new GetCountryRegionsRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "getCountryRegions", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
GetCountryRegionsResponseBody obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<GetCountryRegionsResponseBody>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into GetCountryRegionsResponseBody.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new GetCountryRegionsResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.Object = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
public async Task<ListLineupsResponse> ListLineupsAsync(ListLineupsRequest request)
|
|
{
|
|
if (request == null)
|
|
{
|
|
request = new ListLineupsRequest();
|
|
}
|
|
request.Accepts ??= SDKConfiguration.Accepts;
|
|
request.ClientIdentifier ??= SDKConfiguration.ClientIdentifier;
|
|
request.Product ??= SDKConfiguration.Product;
|
|
request.Version ??= SDKConfiguration.Version;
|
|
request.Platform ??= SDKConfiguration.Platform;
|
|
request.PlatformVersion ??= SDKConfiguration.PlatformVersion;
|
|
request.Device ??= SDKConfiguration.Device;
|
|
request.Model ??= SDKConfiguration.Model;
|
|
request.DeviceVendor ??= SDKConfiguration.DeviceVendor;
|
|
request.DeviceName ??= SDKConfiguration.DeviceName;
|
|
request.Marketplace ??= SDKConfiguration.Marketplace;
|
|
|
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
|
var urlString = URLBuilder.Build(baseUrl, "/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", request, null);
|
|
|
|
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
|
|
httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent);
|
|
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
|
|
|
|
if (SDKConfiguration.SecuritySource != null)
|
|
{
|
|
httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest);
|
|
}
|
|
|
|
var hookCtx = new HookContext(SDKConfiguration, baseUrl, "listLineups", null, SDKConfiguration.SecuritySource);
|
|
|
|
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
|
|
|
|
HttpResponseMessage httpResponse;
|
|
try
|
|
{
|
|
httpResponse = await SDKConfiguration.Client.SendAsync(httpRequest);
|
|
int _statusCode = (int)httpResponse.StatusCode;
|
|
|
|
if (_statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error);
|
|
if (_httpResponse != null)
|
|
{
|
|
httpResponse = _httpResponse;
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse);
|
|
|
|
var contentType = httpResponse.Content.Headers.ContentType?.MediaType;
|
|
int responseStatusCode = (int)httpResponse.StatusCode;
|
|
if(responseStatusCode == 200)
|
|
{
|
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
|
{
|
|
var httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
|
|
MediaContainerWithLineup obj;
|
|
try
|
|
{
|
|
obj = ResponseBodyDeserializer.DeserializeNotNull<MediaContainerWithLineup>(httpResponseBody, NullValueHandling.Ignore);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new ResponseValidationException("Failed to deserialize response body into MediaContainerWithLineup.", httpResponse, httpResponseBody, ex);
|
|
}
|
|
|
|
var response = new ListLineupsResponse()
|
|
{
|
|
StatusCode = responseStatusCode,
|
|
ContentType = contentType,
|
|
RawResponse = httpResponse
|
|
};
|
|
response.MediaContainerWithLineup = obj;
|
|
return response;
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown content type received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
else if(responseStatusCode >= 500 && responseStatusCode < 600)
|
|
{
|
|
throw new Models.Errors.SDKException("API error occurred", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
|
|
throw new Models.Errors.SDKException("Unknown status code received", httpResponse, await httpResponse.Content.ReadAsStringAsync());
|
|
}
|
|
}
|
|
} |