Compare commits

...

21 Commits

Author SHA1 Message Date
speakeasybot
a183f389bc ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.8 2024-10-02 10:46:38 +00:00
speakeasybot
4a443f6f2e ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.8 2024-10-02 09:49:57 +00:00
speakeasybot
b9b7cd1146 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.4 2024-09-30 17:36:49 +00:00
speakeasybot
81c55cb08b ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.405.4 2024-09-30 17:23:32 +00:00
speakeasybot
860991f2a0 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.404.5 2024-09-30 08:47:49 +00:00
Jason Landbridge
d25639db53 Added dotnet_version directly 2024-09-30 10:42:22 +02:00
speakeasybot
227e2351d5 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.404.5 2024-09-30 00:23:16 +00:00
JasonLandbridge
3bd4f51297 Merge remote-tracking branch 'origin/main' 2024-09-29 09:09:51 +02:00
speakeasybot
4828de2345 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.404.5 2024-09-29 00:24:39 +00:00
JasonLandbridge
2beb707ed5 make project intelij compatible 2024-09-28 10:01:25 +02:00
speakeasybot
affe5d5a8c ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.404.5 2024-09-28 00:21:51 +00:00
speakeasybot
d16abdad70 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.402.14 2024-09-26 00:22:14 +00:00
speakeasybot
3e9ae76433 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.402.14 2024-09-25 15:33:47 +00:00
speakeasybot
e7023f61d0 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.401.2 2024-09-21 14:18:12 +00:00
Luke Hagar
223ab320b2 Merge pull request #8 from JasonLandbridge/patch-1 2024-09-21 09:10:24 -05:00
Jason Landbridge
5421ae0531 removing the sourceDirectory property which should default to ""
When I manually trigger the SDK generation for C# from the speakeasy dashboard. The pipeline fails, see: https://github.com/LukeHagar/plexcsharp/actions/runs/10970974198/job/30465496056 but it trips over the `sourceDirectory` property which should be allowed to be empty:

See: https://www.speakeasy.com/docs/gen-reference#sourcedirectory => C# =>  `sourceDirectory`

So it's a bug in the validating process which incorrectly marks an empty `sourceDirectory` as 
invalid
2024-09-21 12:44:01 +02:00
speakeasybot
4b10ba72ca ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.401.2 2024-09-21 00:21:00 +00:00
Luke Hagar
3b6806d2db cleaning 2024-09-19 06:10:10 +00:00
speakeasybot
5883791d10 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.399.2 2024-09-19 00:22:17 +00:00
speakeasybot
548ce2564d ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.398.0 2024-09-16 22:54:32 +00:00
speakeasybot
46c35ae5e3 ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.398.0 2024-09-16 21:55:23 +00:00
650 changed files with 12607 additions and 4023 deletions

View File

@@ -24,6 +24,7 @@ jobs:
mode: direct mode: direct
set_version: ${{ github.event.inputs.set_version }} set_version: ${{ github.event.inputs.set_version }}
speakeasy_version: latest speakeasy_version: latest
dotnet_version: "8.x"
secrets: secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }} github_access_token: ${{ secrets.GITHUB_TOKEN }}
nuget_api_key: ${{ secrets.NUGET_API_KEY }} nuget_api_key: ${{ secrets.NUGET_API_KEY }}

View File

@@ -0,0 +1 @@
LukeHagar.PlexAPI.SDK

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RiderProjectSettingsUpdater">
<option name="vcsConfiguration" value="3" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@ generation:
auth: auth:
oAuth2ClientCredentialsEnabled: true oAuth2ClientCredentialsEnabled: true
csharp: csharp:
version: 0.6.8 version: 0.9.1
additionalDependencies: [] additionalDependencies: []
author: LukeHagar author: LukeHagar
clientServerStatusCodesAsErrors: true clientServerStatusCodesAsErrors: true
@@ -35,3 +35,4 @@ csharp:
packageName: LukeHagar.PlexAPI.SDK packageName: LukeHagar.PlexAPI.SDK
packageTags: Plex Media Server SDK packageTags: Plex Media Server SDK
responseFormat: envelope responseFormat: envelope
sourceDirectory: ""

View File

@@ -1,4 +1,4 @@
speakeasyVersion: 1.397.3 speakeasyVersion: 1.405.8
sources: sources:
my-source: my-source:
sourceNamespace: my-source sourceNamespace: my-source
@@ -16,8 +16,8 @@ sources:
- main - main
plexapi: plexapi:
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:533fe97486e3fe2d84e890b7bbcdba4543d415e45181386154e011861f6da36f sourceRevisionDigest: sha256:b1e231bd781f352738612b0158382ba51cfac32e97c23d9e4913aab5501e9529
sourceBlobDigest: sha256:f7e2709f52370dff16c1851a7a4e44a89f2e978e9cae335bffc10625950b3bd9 sourceBlobDigest: sha256:8ce05d5965182eb3fe9376715c269b9e1c7f3e2d90273c175a4181735f41daa0
tags: tags:
- latest - latest
- main - main
@@ -25,10 +25,10 @@ targets:
plexcsharp: plexcsharp:
source: plexapi source: plexapi
sourceNamespace: plexapi sourceNamespace: plexapi
sourceRevisionDigest: sha256:533fe97486e3fe2d84e890b7bbcdba4543d415e45181386154e011861f6da36f sourceRevisionDigest: sha256:b1e231bd781f352738612b0158382ba51cfac32e97c23d9e4913aab5501e9529
sourceBlobDigest: sha256:f7e2709f52370dff16c1851a7a4e44a89f2e978e9cae335bffc10625950b3bd9 sourceBlobDigest: sha256:8ce05d5965182eb3fe9376715c269b9e1c7f3e2d90273c175a4181735f41daa0
codeSamplesNamespace: code-samples-csharp-plexcsharp codeSamplesNamespace: code-samples-csharp-plexcsharp
codeSamplesRevisionDigest: sha256:e8c936700dba1d895b8fb1ffba469fd6335db4f90d32542d8884b6687caa19da codeSamplesRevisionDigest: sha256:ef462cf1d9335608fd53502cd183401b095536041eac8d1b26d2e1c3366e6a0e
workflow: workflow:
workflowVersion: 1.0.0 workflowVersion: 1.0.0
speakeasyVersion: latest speakeasyVersion: latest

View File

@@ -45,7 +45,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Get Server Activities /// Get Server Activities
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetServerActivitiesResponse> GetServerActivitiesAsync(); Task<GetServerActivitiesResponse> GetServerActivitiesAsync(RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Cancel Server Activities /// Cancel Server Activities
@@ -54,7 +54,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Cancel Server Activities /// Cancel Server Activities
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID); Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID, RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -74,10 +74,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -90,7 +90,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<GetServerActivitiesResponse> GetServerActivitiesAsync() public async Task<GetServerActivitiesResponse> GetServerActivitiesAsync(RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -107,11 +107,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getServerActivities", null, _securitySource); var hookCtx = new HookContext("getServerActivities", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -154,10 +187,8 @@ namespace LukeHagar.PlexAPI.SDK
response.Object = obj; response.Object = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -167,10 +198,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -180,22 +209,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID) public async Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID, RetryConfig? retryConfig = null)
{ {
var request = new CancelServerActivitiesRequest() var request = new CancelServerActivitiesRequest()
{ {
@@ -215,11 +240,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("cancelServerActivities", null, _securitySource); var hookCtx = new HookContext("cancelServerActivities", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -265,10 +323,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -278,19 +334,15 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

View File

@@ -40,7 +40,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetTransientTokenResponse> GetTransientTokenAsync(GetTransientTokenQueryParamType type, Scope scope); Task<GetTransientTokenResponse> GetTransientTokenAsync(GetTransientTokenQueryParamType type, Scope scope, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get Source Connection Information /// Get Source Connection Information
@@ -51,7 +51,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source); Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get Token Details /// Get Token Details
@@ -60,7 +60,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Get the User data from the provided X-Plex-Token /// Get the User data from the provided X-Plex-Token
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetTokenDetailsResponse> GetTokenDetailsAsync(string? serverUrl = null); Task<GetTokenDetailsResponse> GetTokenDetailsAsync(string? serverUrl = null, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get User Sign In Data /// Get User Sign In Data
@@ -69,7 +69,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Sign in user with username and password and return user data with Plex authentication token /// Sign in user with username and password and return user data with Plex authentication token
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(string? xPlexClientIdentifier = null, PostUsersSignInDataRequestBody? requestBody = null, string? serverUrl = null); Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(PostUsersSignInDataRequest? request = null, string? serverUrl = null, RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -85,20 +85,20 @@ namespace LukeHagar.PlexAPI.SDK
/// List of server URLs available for the getTokenDetails operation. /// List of server URLs available for the getTokenDetails operation.
/// </summary> /// </summary>
public static readonly string[] GetTokenDetailsServerList = { public static readonly string[] GetTokenDetailsServerList = {
"https://plex.tv/api/v2/", "https://plex.tv/api/v2",
}; };
/// <summary> /// <summary>
/// List of server URLs available for the post-users-sign-in-data operation. /// List of server URLs available for the post-users-sign-in-data operation.
/// </summary> /// </summary>
public static readonly string[] PostUsersSignInDataServerList = { public static readonly string[] PostUsersSignInDataServerList = {
"https://plex.tv/api/v2/", "https://plex.tv/api/v2",
}; };
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -111,7 +111,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<GetTransientTokenResponse> GetTransientTokenAsync(GetTransientTokenQueryParamType type, Scope scope) public async Task<GetTransientTokenResponse> GetTransientTokenAsync(GetTransientTokenQueryParamType type, Scope scope, RetryConfig? retryConfig = null)
{ {
var request = new GetTransientTokenRequest() var request = new GetTransientTokenRequest()
{ {
@@ -132,11 +132,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getTransientToken", null, _securitySource); var hookCtx = new HookContext("getTransientToken", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -182,10 +215,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -195,22 +226,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source) public async Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source, RetryConfig? retryConfig = null)
{ {
var request = new GetSourceConnectionInformationRequest() var request = new GetSourceConnectionInformationRequest()
{ {
@@ -230,11 +257,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getSourceConnectionInformation", null, _securitySource); var hookCtx = new HookContext("getSourceConnectionInformation", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -280,10 +340,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -293,22 +351,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetTokenDetailsResponse> GetTokenDetailsAsync(string? serverUrl = null) public async Task<GetTokenDetailsResponse> GetTokenDetailsAsync(string? serverUrl = null, RetryConfig? retryConfig = null)
{ {
string baseUrl = Utilities.TemplateUrl(GetTokenDetailsServerList[0], new Dictionary<string, string>(){ string baseUrl = Utilities.TemplateUrl(GetTokenDetailsServerList[0], new Dictionary<string, string>(){
}); });
@@ -330,11 +384,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getTokenDetails", null, _securitySource); var hookCtx = new HookContext("getTokenDetails", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -377,10 +464,8 @@ namespace LukeHagar.PlexAPI.SDK
response.UserPlexAccount = obj; response.UserPlexAccount = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -390,10 +475,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -403,29 +486,24 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(string? xPlexClientIdentifier = null, PostUsersSignInDataRequestBody? requestBody = null, string? serverUrl = null) public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(PostUsersSignInDataRequest? request = null, string? serverUrl = null, RetryConfig? retryConfig = null)
{ {
var request = new PostUsersSignInDataRequest() request.ClientID ??= SDKConfiguration.ClientID;
{ request.ClientName ??= SDKConfiguration.ClientName;
XPlexClientIdentifier = xPlexClientIdentifier, request.ClientVersion ??= SDKConfiguration.ClientVersion;
RequestBody = requestBody, request.Platform ??= SDKConfiguration.Platform;
}; request.DeviceNickname ??= SDKConfiguration.DeviceNickname;
request.XPlexClientIdentifier ??= SDKConfiguration.XPlexClientIdentifier;
string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary<string, string>(){ string baseUrl = Utilities.TemplateUrl(PostUsersSignInDataServerList[0], new Dictionary<string, string>(){
}); });
@@ -433,10 +511,12 @@ namespace LukeHagar.PlexAPI.SDK
{ {
baseUrl = serverUrl; baseUrl = serverUrl;
} }
var urlString = URLBuilder.Build(baseUrl, "/users/signin", request);
var urlString = baseUrl + "/users/signin";
var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true); var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "form", false, true);
if (serializedBody != null) if (serializedBody != null)
@@ -447,11 +527,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("post-users-sign-in-data", null, null); var hookCtx = new HookContext("post-users-sign-in-data", null, null);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -484,7 +597,7 @@ namespace LukeHagar.PlexAPI.SDK
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataUserPlexAccount>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataUserPlexAccount>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
var response = new PostUsersSignInDataResponse() var response = new PostUsersSignInDataResponse()
{ {
StatusCode = responseStatusCode, StatusCode = responseStatusCode,
@@ -494,45 +607,37 @@ namespace LukeHagar.PlexAPI.SDK
response.UserPlexAccount = obj; response.UserPlexAccount = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

View File

@@ -39,7 +39,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Returns a list of butler tasks /// Returns a list of butler tasks
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetButlerTasksResponse> GetButlerTasksAsync(); Task<GetButlerTasksResponse> GetButlerTasksAsync(RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Start all Butler tasks /// Start all Butler tasks
@@ -53,7 +53,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<StartAllTasksResponse> StartAllTasksAsync(); Task<StartAllTasksResponse> StartAllTasksAsync(RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Stop all Butler tasks /// Stop all Butler tasks
@@ -63,7 +63,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<StopAllTasksResponse> StopAllTasksAsync(); Task<StopAllTasksResponse> StopAllTasksAsync(RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Start a single Butler task /// Start a single Butler task
@@ -77,7 +77,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<StartTaskResponse> StartTaskAsync(TaskName taskName); Task<StartTaskResponse> StartTaskAsync(TaskName taskName, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Stop a single Butler task /// Stop a single Butler task
@@ -87,7 +87,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName); Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName, RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -101,10 +101,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -117,7 +117,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<GetButlerTasksResponse> GetButlerTasksAsync() public async Task<GetButlerTasksResponse> GetButlerTasksAsync(RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -134,11 +134,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getButlerTasks", null, _securitySource); var hookCtx = new HookContext("getButlerTasks", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -181,10 +214,8 @@ namespace LukeHagar.PlexAPI.SDK
response.Object = obj; response.Object = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -194,10 +225,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -207,22 +236,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<StartAllTasksResponse> StartAllTasksAsync() public async Task<StartAllTasksResponse> StartAllTasksAsync(RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -239,11 +264,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("startAllTasks", null, _securitySource); var hookCtx = new HookContext("startAllTasks", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -289,10 +347,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -302,22 +358,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<StopAllTasksResponse> StopAllTasksAsync() public async Task<StopAllTasksResponse> StopAllTasksAsync(RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -334,11 +386,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("stopAllTasks", null, _securitySource); var hookCtx = new HookContext("stopAllTasks", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -384,10 +469,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -397,22 +480,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<StartTaskResponse> StartTaskAsync(TaskName taskName) public async Task<StartTaskResponse> StartTaskAsync(TaskName taskName, RetryConfig? retryConfig = null)
{ {
var request = new StartTaskRequest() var request = new StartTaskRequest()
{ {
@@ -432,11 +511,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("startTask", null, _securitySource); var hookCtx = new HookContext("startTask", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -482,10 +594,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -495,22 +605,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName) public async Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName, RetryConfig? retryConfig = null)
{ {
var request = new StopTaskRequest() var request = new StopTaskRequest()
{ {
@@ -530,11 +636,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("stopTask", null, _securitySource); var hookCtx = new HookContext("stopTask", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode == 404 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -580,10 +719,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -593,19 +730,15 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

View File

@@ -39,7 +39,17 @@ namespace LukeHagar.PlexAPI.SDK
/// Get Global Hubs filtered by the parameters provided. /// Get Global Hubs filtered by the parameters provided.
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetGlobalHubsResponse> GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null); Task<GetGlobalHubsResponse> GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null, RetryConfig? retryConfig = null);
/// <summary>
/// Get Recently Added
///
/// <remarks>
/// This endpoint will return the recently added content.<br/>
///
/// </remarks>
/// </summary>
Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync(GetRecentlyAddedRequest request, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get library specific hubs /// Get library specific hubs
@@ -49,7 +59,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetLibraryHubsResponse> GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null); Task<GetLibraryHubsResponse> GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null, RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -63,10 +73,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -79,7 +89,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<GetGlobalHubsResponse> GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null) public async Task<GetGlobalHubsResponse> GetGlobalHubsAsync(double? count = null, OnlyTransient? onlyTransient = null, RetryConfig? retryConfig = null)
{ {
var request = new GetGlobalHubsRequest() var request = new GetGlobalHubsRequest()
{ {
@@ -100,11 +110,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getGlobalHubs", null, _securitySource); var hookCtx = new HookContext("getGlobalHubs", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -137,7 +180,7 @@ namespace LukeHagar.PlexAPI.SDK
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
var response = new GetGlobalHubsResponse() var response = new GetGlobalHubsResponse()
{ {
StatusCode = responseStatusCode, StatusCode = responseStatusCode,
@@ -147,48 +190,147 @@ namespace LukeHagar.PlexAPI.SDK
response.Object = obj; response.Object = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
if(Utilities.IsContentTypeMatch("application/json", contentType)) if(Utilities.IsContentTypeMatch("application/json", contentType))
{ {
var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetLibraryHubsResponse> GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null) public async Task<GetRecentlyAddedResponse> GetRecentlyAddedAsync(GetRecentlyAddedRequest request, RetryConfig? retryConfig = null)
{
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/hubs/home/recentlyAdded", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent);
if (_securitySource != null)
{
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
}
var hookCtx = new HookContext("get-recently-added", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse;
try
{
httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _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 obj = ResponseBodyDeserializer.Deserialize<GetRecentlyAddedResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
var response = new GetRecentlyAddedResponse()
{
StatusCode = responseStatusCode,
ContentType = contentType,
RawResponse = httpResponse
};
response.Object = obj;
return response;
}
throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else if(responseStatusCode == 400 || responseStatusCode == 401 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{
throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
public async Task<GetLibraryHubsResponse> GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null, RetryConfig? retryConfig = null)
{ {
var request = new GetLibraryHubsRequest() var request = new GetLibraryHubsRequest()
{ {
@@ -210,11 +352,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("getLibraryHubs", null, _securitySource); var hookCtx = new HookContext("getLibraryHubs", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -257,10 +432,8 @@ namespace LukeHagar.PlexAPI.SDK
response.Object = obj; response.Object = obj;
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -270,10 +443,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -283,19 +454,15 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -40,7 +40,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<LogLineResponse> LogLineAsync(Level level, string message, string source); Task<LogLineResponse> LogLineAsync(Level level, string message, string source, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Logging a multi-line message /// Logging a multi-line message
@@ -70,7 +70,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<LogMultiLineResponse> LogMultiLineAsync(string request); Task<LogMultiLineResponse> LogMultiLineAsync(string request, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Enabling Papertrail /// Enabling Papertrail
@@ -80,7 +80,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<EnablePaperTrailResponse> EnablePaperTrailAsync(); Task<EnablePaperTrailResponse> EnablePaperTrailAsync(RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -94,10 +94,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -110,7 +110,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<LogLineResponse> LogLineAsync(Level level, string message, string source) public async Task<LogLineResponse> LogLineAsync(Level level, string message, string source, RetryConfig? retryConfig = null)
{ {
var request = new LogLineRequest() var request = new LogLineRequest()
{ {
@@ -132,11 +132,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("logLine", null, _securitySource); var hookCtx = new HookContext("logLine", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -182,10 +215,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -195,22 +226,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<LogMultiLineResponse> LogMultiLineAsync(string request) public async Task<LogMultiLineResponse> LogMultiLineAsync(string request, RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -233,11 +260,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("logMultiLine", null, _securitySource); var hookCtx = new HookContext("logMultiLine", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -283,10 +343,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -296,22 +354,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<EnablePaperTrailResponse> EnablePaperTrailAsync() public async Task<EnablePaperTrailResponse> EnablePaperTrailAsync(RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
@@ -328,11 +382,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("enablePaperTrail", null, _securitySource); var hookCtx = new HookContext("enablePaperTrail", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode == 403 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -378,10 +465,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -391,19 +476,15 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

View File

@@ -3,14 +3,38 @@
<PropertyGroup> <PropertyGroup>
<IsPackable>true</IsPackable> <IsPackable>true</IsPackable>
<PackageId>LukeHagar.PlexAPI.SDK</PackageId> <PackageId>LukeHagar.PlexAPI.SDK</PackageId>
<Version>0.6.8</Version> <Version>0.9.1</Version>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Authors>LukeHagar</Authors> <Authors>LukeHagar</Authors>
<Copyright>Copyright (c) LukeHagar 2024</Copyright> <Copyright>Copyright (c) LukeHagar 2024</Copyright>
<RepositoryUrl>https://github.com/LukeHagar/plexcsharp.git</RepositoryUrl> <RepositoryUrl>https://github.com/LukeHagar/plexcsharp.git</RepositoryUrl>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<PackageTags>Plex Media Server SDK</PackageTags> <PackageTags>Plex Media Server SDK</PackageTags>
<Description>Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server</Description> <Description># Plex Media Server OpenAPI Specification
An Open Source OpenAPI Specification for Plex Media Server
Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/)
## Documentation
[API Documentation](https://plexapi.dev)
## SDKs
The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec).
| Language | Repository | Releases | Other |
| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- |
| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - |
| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - |
| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) |
| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - |
| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - |
| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - |
| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - |
| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | -
</Description>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

View File

@@ -39,7 +39,7 @@ namespace LukeHagar.PlexAPI.SDK
/// This will mark the provided media key as Played. /// This will mark the provided media key as Played.
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<MarkPlayedResponse> MarkPlayedAsync(double key); Task<MarkPlayedResponse> MarkPlayedAsync(double key, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Mark Media Unplayed /// Mark Media Unplayed
@@ -48,7 +48,7 @@ namespace LukeHagar.PlexAPI.SDK
/// This will mark the provided media key as Unplayed. /// This will mark the provided media key as Unplayed.
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<MarkUnplayedResponse> MarkUnplayedAsync(double key); Task<MarkUnplayedResponse> MarkUnplayedAsync(double key, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Update Media Play Progress /// Update Media Play Progress
@@ -58,7 +58,7 @@ namespace LukeHagar.PlexAPI.SDK
/// ///
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state); Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get Banner Image /// Get Banner Image
@@ -67,7 +67,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Gets the banner image of the media item /// Gets the banner image of the media item
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request); Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request, RetryConfig? retryConfig = null);
/// <summary> /// <summary>
/// Get Thumb Image /// Get Thumb Image
@@ -76,7 +76,7 @@ namespace LukeHagar.PlexAPI.SDK
/// Gets the thumbnail image of the media item /// Gets the thumbnail image of the media item
/// </remarks> /// </remarks>
/// </summary> /// </summary>
Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request); Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request, RetryConfig? retryConfig = null);
} }
/// <summary> /// <summary>
@@ -90,10 +90,10 @@ namespace LukeHagar.PlexAPI.SDK
{ {
public SDKConfig SDKConfiguration { get; private set; } public SDKConfig SDKConfiguration { get; private set; }
private const string _language = "csharp"; private const string _language = "csharp";
private const string _sdkVersion = "0.6.8"; private const string _sdkVersion = "0.9.1";
private const string _sdkGenVersion = "2.415.8"; private const string _sdkGenVersion = "2.429.0";
private const string _openapiDocVersion = "0.0.3"; private const string _openapiDocVersion = "0.0.3";
private const string _userAgent = "speakeasy-sdk/csharp 0.6.8 2.415.8 0.0.3 LukeHagar.PlexAPI.SDK"; private const string _userAgent = "speakeasy-sdk/csharp 0.9.1 2.429.0 0.0.3 LukeHagar.PlexAPI.SDK";
private string _serverUrl = ""; private string _serverUrl = "";
private ISpeakeasyHttpClient _client; private ISpeakeasyHttpClient _client;
private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource; private Func<LukeHagar.PlexAPI.SDK.Models.Components.Security>? _securitySource;
@@ -106,7 +106,7 @@ namespace LukeHagar.PlexAPI.SDK
SDKConfiguration = config; SDKConfiguration = config;
} }
public async Task<MarkPlayedResponse> MarkPlayedAsync(double key) public async Task<MarkPlayedResponse> MarkPlayedAsync(double key, RetryConfig? retryConfig = null)
{ {
var request = new MarkPlayedRequest() var request = new MarkPlayedRequest()
{ {
@@ -126,11 +126,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("markPlayed", null, _securitySource); var hookCtx = new HookContext("markPlayed", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -176,10 +209,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -189,22 +220,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<MarkUnplayedResponse> MarkUnplayedAsync(double key) public async Task<MarkUnplayedResponse> MarkUnplayedAsync(double key, RetryConfig? retryConfig = null)
{ {
var request = new MarkUnplayedRequest() var request = new MarkUnplayedRequest()
{ {
@@ -224,11 +251,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("markUnplayed", null, _securitySource); var hookCtx = new HookContext("markUnplayed", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -274,10 +334,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -287,22 +345,18 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state) public async Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state, RetryConfig? retryConfig = null)
{ {
var request = new UpdatePlayProgressRequest() var request = new UpdatePlayProgressRequest()
{ {
@@ -324,11 +378,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("updatePlayProgress", null, _securitySource); var hookCtx = new HookContext("updatePlayProgress", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -374,10 +461,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -387,28 +472,25 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request) public async Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request, RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/banner", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/banner", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {
@@ -418,11 +500,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("get-banner-image", null, _securitySource); var hookCtx = new HookContext("get-banner-image", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -464,10 +579,8 @@ namespace LukeHagar.PlexAPI.SDK
response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync();
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -477,10 +590,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -490,28 +601,25 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
public async Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request) public async Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request, RetryConfig? retryConfig = null)
{ {
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/thumb", request); var urlString = URLBuilder.Build(baseUrl, "/library/metadata/{ratingKey}/thumb", request);
var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString);
httpRequest.Headers.Add("user-agent", _userAgent); httpRequest.Headers.Add("user-agent", _userAgent);
HeaderSerializer.PopulateHeaders(ref httpRequest, request);
if (_securitySource != null) if (_securitySource != null)
{ {
@@ -521,11 +629,44 @@ namespace LukeHagar.PlexAPI.SDK
var hookCtx = new HookContext("get-thumb-image", null, _securitySource); var hookCtx = new HookContext("get-thumb-image", null, _securitySource);
httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest);
if (retryConfig == null)
{
if (this.SDKConfiguration.RetryConfig != null)
{
retryConfig = this.SDKConfiguration.RetryConfig;
}
else
{
var backoff = new BackoffStrategy(
initialIntervalMs: 500L,
maxIntervalMs: 60000L,
maxElapsedTimeMs: 3600000L,
exponent: 1.5
);
retryConfig = new RetryConfig(
strategy: RetryConfig.RetryStrategy.BACKOFF,
backoff: backoff,
retryConnectionErrors: true
);
}
}
List<string> statusCodes = new List<string>
{
"5XX",
};
Func<Task<HttpResponseMessage>> retrySend = async () =>
{
var _httpRequest = await _client.CloneAsync(httpRequest);
return await _client.SendAsync(_httpRequest);
};
var retries = new LukeHagar.PlexAPI.SDK.Utils.Retries.Retries(retrySend, retryConfig, statusCodes);
HttpResponseMessage httpResponse; HttpResponseMessage httpResponse;
try try
{ {
httpResponse = await _client.SendAsync(httpRequest); httpResponse = await retries.Run();
int _statusCode = (int)httpResponse.StatusCode; int _statusCode = (int)httpResponse.StatusCode;
if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600)
@@ -567,10 +708,8 @@ namespace LukeHagar.PlexAPI.SDK
response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync(); response.Bytes = await httpResponse.Content.ReadAsByteArrayAsync();
return response; return response;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 400) else if(responseStatusCode == 400)
{ {
@@ -580,10 +719,8 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode == 401) else if(responseStatusCode == 401)
{ {
@@ -593,19 +730,15 @@ namespace LukeHagar.PlexAPI.SDK
obj!.RawResponse = httpResponse; obj!.RawResponse = httpResponse;
throw obj!; throw obj!;
} }
else
{ throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
throw new SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
} }
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600) else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
{ {
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
}
else
{
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
} }
} }
} }

View File

@@ -14,7 +14,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Components
public class Security public class Security
{ {
[SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=query,name=X-Plex-Token")] [SpeakeasyMetadata("security:scheme=true,type=apiKey,subType=header,name=X-Plex-Token")]
public string? AccessToken { get; set; } public string? AccessToken { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -19,11 +19,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
/// <summary> /// <summary>
/// Bad Request - A parameter was not specified, or was specified incorrectly. /// Bad Request - A parameter was not specified, or was specified incorrectly.
/// </summary> /// </summary>
public class GetRecentlyAddedBadRequest : Exception public class GetRecentlyAddedLibraryBadRequest : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<GetRecentlyAddedErrors>? Errors { get; set; } public List<GetRecentlyAddedLibraryErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -12,16 +12,16 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
using LukeHagar.PlexAPI.SDK.Utils; using LukeHagar.PlexAPI.SDK.Utils;
using Newtonsoft.Json; using Newtonsoft.Json;
public class GetRecentlyAddedErrors public class GetRecentlyAddedLibraryLibraryErrors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -19,11 +19,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
/// <summary> /// <summary>
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
/// </summary> /// </summary>
public class GetRecentlyAddedUnauthorized : Exception public class GetRecentlyAddedLibraryUnauthorized : Exception
{ {
[JsonProperty("errors")] [JsonProperty("errors")]
public List<GetRecentlyAddedLibraryErrors>? Errors { get; set; } public List<GetRecentlyAddedLibraryLibraryErrors>? Errors { get; set; }
/// <summary> /// <summary>
/// Raw HTTP response; suitable for custom response parsing /// Raw HTTP response; suitable for custom response parsing

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
public string? Message { get; set; } public string? Message { get; set; }
[JsonProperty("status")] [JsonProperty("status")]
public long? Status { get; set; } public int? Status { get; set; }
} }
} }

View File

@@ -21,7 +21,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
{ {
[JsonProperty("code")] [JsonProperty("code")]
public long? Code { get; set; } public int? Code { get; set; }
[JsonProperty("message")] [JsonProperty("message")]
private string? _message { get; set; } private string? _message { get; set; }

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