mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-06 20:47:49 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a183f389bc | ||
|
|
4a443f6f2e | ||
|
|
b9b7cd1146 | ||
|
|
81c55cb08b | ||
|
|
860991f2a0 | ||
|
|
d25639db53 | ||
|
|
227e2351d5 | ||
|
|
3bd4f51297 | ||
|
|
4828de2345 | ||
|
|
2beb707ed5 | ||
|
|
affe5d5a8c | ||
|
|
d16abdad70 | ||
|
|
3e9ae76433 | ||
|
|
e7023f61d0 | ||
|
|
223ab320b2 | ||
|
|
5421ae0531 | ||
|
|
4b10ba72ca | ||
|
|
3b6806d2db | ||
|
|
5883791d10 | ||
|
|
548ce2564d | ||
|
|
46c35ae5e3 | ||
|
|
d15c54d86f | ||
|
|
f517fffa89 | ||
|
|
2309d5a37f | ||
|
|
d71b1b96ea | ||
|
|
24948e0718 | ||
|
|
39a5a0dfb6 | ||
|
|
92730cbe24 | ||
|
|
591cddc929 | ||
|
|
6a6c770319 | ||
|
|
d141934f09 | ||
|
|
61d12eaf66 | ||
|
|
307bd0f675 | ||
|
|
08dcf43f3d | ||
|
|
201fa479dd | ||
|
|
4896fe1bc1 | ||
|
|
241e563440 | ||
|
|
92bc4311c1 | ||
|
|
40563a5174 | ||
|
|
c203fd6602 | ||
|
|
c1f617f0f3 |
31
.github/workflows/sdk_generation.yaml
vendored
Normal file
31
.github/workflows/sdk_generation.yaml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Generate
|
||||||
|
permissions:
|
||||||
|
checks: write
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
statuses: write
|
||||||
|
"on":
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
force:
|
||||||
|
description: Force generation of SDKs
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
set_version:
|
||||||
|
description: optionally set a specific SDK version
|
||||||
|
type: string
|
||||||
|
schedule:
|
||||||
|
- cron: 0 0 * * *
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
|
||||||
|
with:
|
||||||
|
force: ${{ github.event.inputs.force }}
|
||||||
|
mode: direct
|
||||||
|
set_version: ${{ github.event.inputs.set_version }}
|
||||||
|
speakeasy_version: latest
|
||||||
|
dotnet_version: "8.x"
|
||||||
|
secrets:
|
||||||
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
nuget_api_key: ${{ secrets.NUGET_API_KEY }}
|
||||||
|
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
|
||||||
20
.github/workflows/sdk_publish.yaml
vendored
Normal file
20
.github/workflows/sdk_publish.yaml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Publish
|
||||||
|
permissions:
|
||||||
|
checks: write
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
statuses: write
|
||||||
|
"on":
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- RELEASES.md
|
||||||
|
- '*/RELEASES.md'
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
uses: speakeasy-api/sdk-generation-action/.github/workflows/sdk-publish.yaml@v15
|
||||||
|
secrets:
|
||||||
|
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
nuget_api_key: ${{ secrets.NUGET_API_KEY }}
|
||||||
|
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
|
||||||
25
.github/workflows/speakeasy_sdk_generation.yml
vendored
25
.github/workflows/speakeasy_sdk_generation.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
name: Generate
|
|
||||||
permissions:
|
|
||||||
checks: write
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
statuses: write
|
|
||||||
"on":
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
force:
|
|
||||||
description: Force generation of SDKs
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
schedule:
|
|
||||||
- cron: 0 0 * * *
|
|
||||||
jobs:
|
|
||||||
generate:
|
|
||||||
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
|
|
||||||
with:
|
|
||||||
force: ${{ github.event.inputs.force }}
|
|
||||||
mode: direct
|
|
||||||
speakeasy_version: latest
|
|
||||||
secrets:
|
|
||||||
github_access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
|
|
||||||
1
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/.name
generated
Normal file
1
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
LukeHagar.PlexAPI.SDK
|
||||||
4
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/encodings.xml
generated
Normal file
4
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/encodings.xml
generated
Normal 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>
|
||||||
8
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/indexLayout.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/projectSettingsUpdater.xml
generated
Normal file
6
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/projectSettingsUpdater.xml
generated
Normal 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>
|
||||||
6
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.LukeHagar.PlexAPI.SDK/.idea/vcs.xml
generated
Normal 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>
|
||||||
1098
.speakeasy/gen.lock
1098
.speakeasy/gen.lock
File diff suppressed because one or more lines are too long
@@ -12,13 +12,13 @@ generation:
|
|||||||
auth:
|
auth:
|
||||||
oAuth2ClientCredentialsEnabled: true
|
oAuth2ClientCredentialsEnabled: true
|
||||||
csharp:
|
csharp:
|
||||||
version: 0.5.1
|
version: 0.9.1
|
||||||
additionalDependencies: []
|
additionalDependencies: []
|
||||||
author: LukeHagar
|
author: LukeHagar
|
||||||
clientServerStatusCodesAsErrors: true
|
clientServerStatusCodesAsErrors: true
|
||||||
disableNamespacePascalCasingApr2024: true
|
disableNamespacePascalCasingApr2024: true
|
||||||
dotnetVersion: net8.0
|
dotnetVersion: net8.0
|
||||||
enableSourceLink: false
|
enableSourceLink: true
|
||||||
flattenGlobalSecurity: true
|
flattenGlobalSecurity: true
|
||||||
imports:
|
imports:
|
||||||
option: openapi
|
option: openapi
|
||||||
@@ -28,10 +28,11 @@ csharp:
|
|||||||
operations: Models/Requests
|
operations: Models/Requests
|
||||||
shared: Models/Components
|
shared: Models/Components
|
||||||
webhooks: Models/Webhooks
|
webhooks: Models/Webhooks
|
||||||
includeDebugSymbols: false
|
includeDebugSymbols: true
|
||||||
inputModelSuffix: input
|
inputModelSuffix: input
|
||||||
maxMethodParams: 4
|
maxMethodParams: 4
|
||||||
outputModelSuffix: output
|
outputModelSuffix: output
|
||||||
packageName: LukeHagar.PlexAPI.SDK
|
packageName: LukeHagar.PlexAPI.SDK
|
||||||
packageTags: ""
|
packageTags: Plex Media Server SDK
|
||||||
responseFormat: envelope
|
responseFormat: envelope
|
||||||
|
sourceDirectory: ""
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
speakeasyVersion: 1.391.3
|
speakeasyVersion: 1.405.8
|
||||||
sources:
|
sources:
|
||||||
my-source:
|
my-source:
|
||||||
sourceNamespace: my-source
|
sourceNamespace: my-source
|
||||||
@@ -7,23 +7,43 @@ sources:
|
|||||||
tags:
|
tags:
|
||||||
- latest
|
- latest
|
||||||
- main
|
- main
|
||||||
|
plex-api:
|
||||||
|
sourceNamespace: plex-api
|
||||||
|
sourceRevisionDigest: sha256:289c5a73965c8fa779f32919d1353d0d275163982c0a0f5525ef4146c462a486
|
||||||
|
sourceBlobDigest: sha256:f7e2709f52370dff16c1851a7a4e44a89f2e978e9cae335bffc10625950b3bd9
|
||||||
|
tags:
|
||||||
|
- latest
|
||||||
|
- main
|
||||||
|
plexapi:
|
||||||
|
sourceNamespace: plexapi
|
||||||
|
sourceRevisionDigest: sha256:b1e231bd781f352738612b0158382ba51cfac32e97c23d9e4913aab5501e9529
|
||||||
|
sourceBlobDigest: sha256:8ce05d5965182eb3fe9376715c269b9e1c7f3e2d90273c175a4181735f41daa0
|
||||||
|
tags:
|
||||||
|
- latest
|
||||||
|
- main
|
||||||
targets:
|
targets:
|
||||||
plexcsharp:
|
plexcsharp:
|
||||||
source: my-source
|
source: plexapi
|
||||||
sourceNamespace: my-source
|
sourceNamespace: plexapi
|
||||||
sourceRevisionDigest: sha256:674cfdd3e98489e023ae9a80ff8753f30d1b6f625d25bd11b9897875477a4392
|
sourceRevisionDigest: sha256:b1e231bd781f352738612b0158382ba51cfac32e97c23d9e4913aab5501e9529
|
||||||
sourceBlobDigest: sha256:370cb4409748c4811372a81d94f1a84f60b538087c23f2cb24f72082bcc827f6
|
sourceBlobDigest: sha256:8ce05d5965182eb3fe9376715c269b9e1c7f3e2d90273c175a4181735f41daa0
|
||||||
outLocation: /github/workspace/repo
|
codeSamplesNamespace: code-samples-csharp-plexcsharp
|
||||||
|
codeSamplesRevisionDigest: sha256:ef462cf1d9335608fd53502cd183401b095536041eac8d1b26d2e1c3366e6a0e
|
||||||
workflow:
|
workflow:
|
||||||
workflowVersion: 1.0.0
|
workflowVersion: 1.0.0
|
||||||
speakeasyVersion: latest
|
speakeasyVersion: latest
|
||||||
sources:
|
sources:
|
||||||
my-source:
|
plexapi:
|
||||||
inputs:
|
inputs:
|
||||||
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/output/plex-media-server-spec-dereferenced.yaml
|
- location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main
|
||||||
registry:
|
|
||||||
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
|
|
||||||
targets:
|
targets:
|
||||||
plexcsharp:
|
plexcsharp:
|
||||||
target: csharp
|
target: csharp
|
||||||
source: my-source
|
source: plexapi
|
||||||
|
publish:
|
||||||
|
nuget:
|
||||||
|
apiKey: $nuget_api_key
|
||||||
|
codeSamples:
|
||||||
|
output: codeSamples.yaml
|
||||||
|
registry:
|
||||||
|
location: registry.speakeasyapi.dev/plexapi/plexapi/code-samples-csharp-plexcsharp
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
workflowVersion: 1.0.0
|
workflowVersion: 1.0.0
|
||||||
speakeasyVersion: latest
|
speakeasyVersion: latest
|
||||||
sources:
|
sources:
|
||||||
my-source:
|
plexapi:
|
||||||
inputs:
|
inputs:
|
||||||
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/output/plex-media-server-spec-dereferenced.yaml
|
- location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main
|
||||||
registry:
|
|
||||||
location: registry.speakeasyapi.dev/lukehagar/lukehagar/my-source
|
|
||||||
targets:
|
targets:
|
||||||
plexcsharp:
|
plexcsharp:
|
||||||
target: csharp
|
target: csharp
|
||||||
source: my-source
|
source: plexapi
|
||||||
|
publish:
|
||||||
|
nuget:
|
||||||
|
apiKey: $nuget_api_key
|
||||||
|
codeSamples:
|
||||||
|
output: codeSamples.yaml
|
||||||
|
registry:
|
||||||
|
location: registry.speakeasyapi.dev/plexapi/plexapi/code-samples-csharp-plexcsharp
|
||||||
|
|||||||
@@ -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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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)
|
||||||
@@ -144,7 +177,7 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
{
|
{
|
||||||
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
{
|
{
|
||||||
var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetServerActivitiesResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetServerActivitiesResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
var response = new GetServerActivitiesResponse()
|
var response = new GetServerActivitiesResponse()
|
||||||
{
|
{
|
||||||
StatusCode = responseStatusCode,
|
StatusCode = responseStatusCode,
|
||||||
@@ -154,35 +187,40 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetServerActivitiesBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<Models.Errors.GetServerActivitiesResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetServerActivitiesUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<CancelServerActivitiesResponse> CancelServerActivitiesAsync(string activityUUID, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new CancelServerActivitiesRequest()
|
var request = new CancelServerActivitiesRequest()
|
||||||
{
|
{
|
||||||
@@ -202,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)
|
||||||
@@ -244,27 +315,34 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<CancelServerActivitiesBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<CancelServerActivitiesResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<CancelServerActivitiesUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,14 +33,14 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a Transient Token.
|
/// Get a Transient Token
|
||||||
///
|
///
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.<br/>
|
/// This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.<br/>
|
||||||
///
|
///
|
||||||
/// </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,16 +51,16 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
///
|
///
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source);
|
Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source, RetryConfig? retryConfig = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get User Data By Token
|
/// Get Token Details
|
||||||
///
|
///
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// 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<GetUserDetailsResponse> GetUserDetailsAsync(string xPlexToken, 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>
|
||||||
@@ -82,9 +82,9 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
public class Authentication: IAuthentication
|
public class Authentication: IAuthentication
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// List of server URLs available for the getUserDetails operation.
|
/// List of server URLs available for the getTokenDetails operation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string[] GetUserDetailsServerList = {
|
public static readonly string[] GetTokenDetailsServerList = {
|
||||||
"https://plex.tv/api/v2",
|
"https://plex.tv/api/v2",
|
||||||
};
|
};
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -95,10 +95,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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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)
|
||||||
@@ -174,30 +207,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetTransientTokenBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<GetTransientTokenResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetTransientTokenUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<GetSourceConnectionInformationResponse> GetSourceConnectionInformationAsync(string source, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new GetSourceConnectionInformationRequest()
|
var request = new GetSourceConnectionInformationRequest()
|
||||||
{
|
{
|
||||||
@@ -217,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)
|
||||||
@@ -259,42 +332,46 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetSourceConnectionInformationBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<GetSourceConnectionInformationResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetSourceConnectionInformationUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<GetUserDetailsResponse> GetUserDetailsAsync(string xPlexToken, string? serverUrl = null)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<GetTokenDetailsResponse> GetTokenDetailsAsync(string? serverUrl = null, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new GetUserDetailsRequest()
|
string baseUrl = Utilities.TemplateUrl(GetTokenDetailsServerList[0], new Dictionary<string, string>(){
|
||||||
{
|
|
||||||
XPlexToken = xPlexToken,
|
|
||||||
};
|
|
||||||
string baseUrl = Utilities.TemplateUrl(GetUserDetailsServerList[0], new Dictionary<string, string>(){
|
|
||||||
});
|
});
|
||||||
if (serverUrl != null)
|
if (serverUrl != null)
|
||||||
{
|
{
|
||||||
baseUrl = serverUrl;
|
baseUrl = serverUrl;
|
||||||
}
|
}
|
||||||
var urlString = URLBuilder.Build(baseUrl, "/user", request);
|
|
||||||
|
var urlString = baseUrl + "/user";
|
||||||
|
|
||||||
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);
|
||||||
@@ -304,14 +381,47 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
|
httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
var hookCtx = new HookContext("getUserDetails", 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)
|
||||||
@@ -344,8 +454,8 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
{
|
{
|
||||||
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
{
|
{
|
||||||
var obj = ResponseBodyDeserializer.Deserialize<GetUserDetailsUserPlexAccount>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetTokenDetailsUserPlexAccount>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
var response = new GetUserDetailsResponse()
|
var response = new GetTokenDetailsResponse()
|
||||||
{
|
{
|
||||||
StatusCode = responseStatusCode,
|
StatusCode = responseStatusCode,
|
||||||
ContentType = contentType,
|
ContentType = contentType,
|
||||||
@@ -354,42 +464,46 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetTokenDetailsBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<GetUserDetailsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetTokenDetailsUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PostUsersSignInDataResponse> PostUsersSignInDataAsync(string? xPlexClientIdentifier = null, PostUsersSignInDataRequestBody? requestBody = null, string? serverUrl = null)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
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>(){
|
||||||
});
|
});
|
||||||
@@ -397,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)
|
||||||
@@ -411,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)
|
||||||
@@ -448,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,
|
||||||
@@ -458,32 +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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<PostUsersSignInDataBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<PostUsersSignInDataResponseBody>(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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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)
|
||||||
@@ -171,7 +204,7 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
{
|
{
|
||||||
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
{
|
{
|
||||||
var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetButlerTasksResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetButlerTasksResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
var response = new GetButlerTasksResponse()
|
var response = new GetButlerTasksResponse()
|
||||||
{
|
{
|
||||||
StatusCode = responseStatusCode,
|
StatusCode = responseStatusCode,
|
||||||
@@ -181,35 +214,40 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetButlerTasksBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<Models.Errors.GetButlerTasksResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetButlerTasksUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<StartAllTasksResponse> StartAllTasksAsync()
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<StartAllTasksResponse> StartAllTasksAsync(RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
||||||
|
|
||||||
@@ -226,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)
|
||||||
@@ -268,30 +339,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<StartAllTasksBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<StartAllTasksResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<StartAllTasksUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<StopAllTasksResponse> StopAllTasksAsync()
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<StopAllTasksResponse> StopAllTasksAsync(RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
||||||
|
|
||||||
@@ -308,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)
|
||||||
@@ -350,30 +461,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<StopAllTasksBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<StopAllTasksResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<StopAllTasksUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<StartTaskResponse> StartTaskAsync(TaskName taskName)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<StartTaskResponse> StartTaskAsync(TaskName taskName, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new StartTaskRequest()
|
var request = new StartTaskRequest()
|
||||||
{
|
{
|
||||||
@@ -393,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)
|
||||||
@@ -435,30 +586,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<StartTaskBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<StartTaskResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<StartTaskUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<StopTaskResponse> StopTaskAsync(PathParamTaskName taskName, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new StopTaskRequest()
|
var request = new StopTaskRequest()
|
||||||
{
|
{
|
||||||
@@ -478,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)
|
||||||
@@ -520,27 +711,34 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<StopTaskBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<StopTaskResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<StopTaskUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode == 404 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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<Models.Requests.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,35 +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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetGlobalHubsBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Include);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<Models.Errors.GetGlobalHubsResponseBody>(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)
|
||||||
|
{
|
||||||
|
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<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
|
else
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
var backoff = new BackoffStrategy(
|
||||||
|
initialIntervalMs: 500L,
|
||||||
|
maxIntervalMs: 60000L,
|
||||||
|
maxElapsedTimeMs: 3600000L,
|
||||||
|
exponent: 1.5
|
||||||
|
);
|
||||||
|
retryConfig = new RetryConfig(
|
||||||
|
strategy: RetryConfig.RetryStrategy.BACKOFF,
|
||||||
|
backoff: backoff,
|
||||||
|
retryConnectionErrors: true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<GetLibraryHubsResponse> GetLibraryHubsAsync(double sectionId, double? count = null, QueryParamOnlyTransient? onlyTransient = null)
|
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()
|
||||||
{
|
{
|
||||||
@@ -197,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)
|
||||||
@@ -234,7 +422,7 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
{
|
{
|
||||||
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
{
|
{
|
||||||
var obj = ResponseBodyDeserializer.Deserialize<Models.Requests.GetLibraryHubsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetLibraryHubsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
var response = new GetLibraryHubsResponse()
|
var response = new GetLibraryHubsResponse()
|
||||||
{
|
{
|
||||||
StatusCode = responseStatusCode,
|
StatusCode = responseStatusCode,
|
||||||
@@ -244,32 +432,37 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetLibraryHubsBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<Models.Errors.GetLibraryHubsResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetLibraryHubsUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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
@@ -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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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)
|
||||||
@@ -174,30 +207,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<LogLineBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<LogLineResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<LogLineUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<LogMultiLineResponse> LogMultiLineAsync(string request)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<LogMultiLineResponse> LogMultiLineAsync(string request, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
||||||
|
|
||||||
@@ -220,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)
|
||||||
@@ -262,30 +335,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<LogMultiLineBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<LogMultiLineResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<LogMultiLineUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<EnablePaperTrailResponse> EnablePaperTrailAsync()
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<EnablePaperTrailResponse> EnablePaperTrailAsync(RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl();
|
||||||
|
|
||||||
@@ -302,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)
|
||||||
@@ -344,27 +457,34 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<EnablePaperTrailBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<EnablePaperTrailResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<EnablePaperTrailUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode == 403 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,13 +3,38 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<PackageId>LukeHagar.PlexAPI.SDK</PackageId>
|
<PackageId>LukeHagar.PlexAPI.SDK</PackageId>
|
||||||
<Version>0.5.1</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>
|
||||||
<Description>Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server</Description>
|
<PackageTags>Plex Media Server SDK</PackageTags>
|
||||||
|
<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>
|
||||||
@@ -29,9 +54,23 @@
|
|||||||
<None Include="..\..\..\docs\**\*" Pack="true" PackagePath="\docs" CopyToOutputDirectory="PreserveNewest"/>
|
<None Include="..\..\..\docs\**\*" Pack="true" PackagePath="\docs" CopyToOutputDirectory="PreserveNewest"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>portable</DebugType>
|
||||||
|
<IncludeSymbols>true</IncludeSymbols>
|
||||||
|
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
|
||||||
|
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
<EmbedAllSources>true</EmbedAllSources>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="newtonsoft.json" Version="13.0.3" />
|
<PackageReference Include="newtonsoft.json" Version="13.0.3" />
|
||||||
<PackageReference Include="nodatime" Version="3.1.9" />
|
<PackageReference Include="nodatime" Version="3.1.9" />
|
||||||
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
@@ -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.5.1";
|
private const string _sdkVersion = "0.9.1";
|
||||||
private const string _sdkGenVersion = "2.411.5";
|
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.5.1 2.411.5 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)
|
||||||
@@ -168,30 +201,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<MarkPlayedBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<MarkPlayedResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<MarkPlayedUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<MarkUnplayedResponse> MarkUnplayedAsync(double key)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<MarkUnplayedResponse> MarkUnplayedAsync(double key, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new MarkUnplayedRequest()
|
var request = new MarkUnplayedRequest()
|
||||||
{
|
{
|
||||||
@@ -211,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)
|
||||||
@@ -253,30 +326,37 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<MarkUnplayedBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<MarkUnplayedResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<MarkUnplayedUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<UpdatePlayProgressResponse> UpdatePlayProgressAsync(string key, double time, string state)
|
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, RetryConfig? retryConfig = null)
|
||||||
{
|
{
|
||||||
var request = new UpdatePlayProgressRequest()
|
var request = new UpdatePlayProgressRequest()
|
||||||
{
|
{
|
||||||
@@ -298,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)
|
||||||
@@ -340,36 +453,44 @@ namespace LukeHagar.PlexAPI.SDK
|
|||||||
RawResponse = httpResponse
|
RawResponse = httpResponse
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(responseStatusCode == 400 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
else if(responseStatusCode == 400)
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<UpdatePlayProgressBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<UpdatePlayProgressResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<UpdatePlayProgressUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<GetBannerImageResponse> GetBannerImageAsync(GetBannerImageRequest request)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
@@ -379,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)
|
||||||
@@ -425,41 +579,47 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetBannerImageBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<GetBannerImageResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetBannerImageUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<GetThumbImageResponse> GetThumbImageAsync(GetThumbImageRequest request)
|
throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
@@ -469,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)
|
||||||
@@ -515,32 +708,37 @@ 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 || responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
|
||||||
{
|
{
|
||||||
throw new SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse);
|
if(Utilities.IsContentTypeMatch("application/json", contentType))
|
||||||
|
{
|
||||||
|
var obj = ResponseBodyDeserializer.Deserialize<GetThumbImageBadRequest>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
|
obj!.RawResponse = httpResponse;
|
||||||
|
throw obj!;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Models.Errors.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<GetThumbImageResponseBody>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
var obj = ResponseBodyDeserializer.Deserialize<GetThumbImageUnauthorized>(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore);
|
||||||
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);
|
||||||
|
}
|
||||||
|
else if(responseStatusCode >= 400 && responseStatusCode < 500 || responseStatusCode >= 500 && responseStatusCode < 600)
|
||||||
{
|
{
|
||||||
throw new SDKException("Unknown content type received", 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class AddPlaylistContentsBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<AddPlaylistContentsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class AddPlaylistContentsPlaylistsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class AddPlaylistContentsUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<AddPlaylistContentsPlaylistsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class ApplyUpdatesBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<ApplyUpdatesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class ApplyUpdatesUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<ApplyUpdatesUpdaterErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetUserDetailsErrors
|
public class ApplyUpdatesUpdaterErrors
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class CancelServerActivitiesActivitiesErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class CancelServerActivitiesBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<CancelServerActivitiesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class CancelServerActivitiesUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<CancelServerActivitiesActivitiesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class CheckForUpdatesBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<CheckForUpdatesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 GetBandwidthStatisticsResponseBody : Exception
|
public class CheckForUpdatesUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetBandwidthStatisticsErrors>? Errors { get; set; }
|
public List<CheckForUpdatesUpdaterErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -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 CheckForUpdatesUpdaterErrors
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class ClearPlaylistContentsBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<ClearPlaylistContentsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class ClearPlaylistContentsPlaylistsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetSourceConnectionInformationResponseBody : Exception
|
public class ClearPlaylistContentsUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetSourceConnectionInformationErrors>? Errors { get; set; }
|
public List<ClearPlaylistContentsPlaylistsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class CreatePlaylistBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<CreatePlaylistErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class CreatePlaylistPlaylistsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 StartUniversalTranscodeResponseBody : Exception
|
public class CreatePlaylistUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<StartUniversalTranscodeErrors>? Errors { get; set; }
|
public List<CreatePlaylistPlaylistsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteLibraryBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<DeleteLibraryErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class DeleteLibraryLibraryErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class DeleteLibraryUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<DeleteLibraryLibraryErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class DeletePlaylistBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<DeletePlaylistErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class DeletePlaylistPlaylistsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class DeletePlaylistUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<DeletePlaylistPlaylistsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EnablePaperTrailResponseBody : Exception
|
public class EnablePaperTrailBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class EnablePaperTrailLogErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetAvailableClientsResponseBody : Exception
|
public class EnablePaperTrailUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetAvailableClientsErrors>? Errors { get; set; }
|
public List<EnablePaperTrailLogErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetAllLibrariesBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetAllLibrariesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetAllLibrariesLibraryErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetMetaDataByRatingKeyResponseBody : Exception
|
public class GetAllLibrariesUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetMetaDataByRatingKeyErrors>? Errors { get; set; }
|
public List<GetAllLibrariesLibraryErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetAvailableClientsBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetAvailableClientsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetAvailableClientsServerErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetRefreshLibraryMetadataResponseBody : Exception
|
public class GetAvailableClientsUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetRefreshLibraryMetadataErrors>? Errors { get; set; }
|
public List<GetAvailableClientsServerErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetBandwidthStatisticsBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetBandwidthStatisticsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetBandwidthStatisticsStatisticsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||||
|
/// </summary>
|
||||||
|
public class GetBandwidthStatisticsUnauthorized : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetBandwidthStatisticsStatisticsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetBannerImageResponseBody : Exception
|
public class GetBannerImageBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetBannerImageMediaErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 AddPlaylistContentsResponseBody : Exception
|
public class GetBannerImageUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<AddPlaylistContentsErrors>? Errors { get; set; }
|
public List<GetBannerImageMediaErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetButlerTasksResponseBody : Exception
|
public class GetButlerTasksBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetButlerTasksButlerErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 GetServerPreferencesResponseBody : Exception
|
public class GetButlerTasksUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetServerPreferencesErrors>? Errors { get; set; }
|
public List<GetButlerTasksButlerErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetCompanionsDataResponseBody : Exception
|
public class GetCompanionsDataBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetCompanionsDataPlexErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 ClearPlaylistContentsResponseBody : Exception
|
public class GetCompanionsDataUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<ClearPlaylistContentsErrors>? Errors { get; set; }
|
public List<GetCompanionsDataPlexErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs
Normal file
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetDevicesBadRequest.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetDevicesBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetDevicesErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetDevicesServerErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 DeleteLibraryResponseBody : Exception
|
public class GetDevicesUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<DeleteLibraryErrors>? Errors { get; set; }
|
public List<GetDevicesServerErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs
Normal file
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetFileHashBadRequest.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetFileHashBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetFileHashErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetFileHashLibraryErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 DeletePlaylistResponseBody : Exception
|
public class GetFileHashUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<DeletePlaylistErrors>? Errors { get; set; }
|
public List<GetFileHashLibraryErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs
Normal file
34
LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataBadRequest.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Models.Errors;
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
|
/// </summary>
|
||||||
|
public class GetGeoDataBadRequest : Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("errors")]
|
||||||
|
public List<GetGeoDataErrors>? Errors { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("-")]
|
||||||
|
public HttpResponseMessage? RawResponse { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
27
LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs
Normal file
27
LukeHagar/PlexAPI/SDK/Models/Errors/GetGeoDataPlexErrors.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetGeoDataPlexErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 GetGeoDataResponseBody : Exception
|
public class GetGeoDataUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<GetGeoDataErrors>? Errors { get; set; }
|
public List<GetGeoDataPlexErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetGlobalHubsResponseBody : Exception
|
public class GetGlobalHubsBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost when
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
#nullable enable
|
||||||
|
namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
||||||
|
{
|
||||||
|
using LukeHagar.PlexAPI.SDK.Utils;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
public class GetGlobalHubsHubsErrors
|
||||||
|
{
|
||||||
|
|
||||||
|
[JsonProperty("code")]
|
||||||
|
public int? Code { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("message")]
|
||||||
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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 CheckForUpdatesResponseBody : Exception
|
public class GetGlobalHubsUnauthorized : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
public List<CheckForUpdatesErrors>? Errors { get; set; }
|
public List<GetGlobalHubsHubsErrors>? Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raw HTTP response; suitable for custom response parsing
|
/// Raw HTTP response; suitable for custom response parsing
|
||||||
@@ -17,9 +17,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
/// Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class GetHomeDataResponseBody : Exception
|
public class GetHomeDataBadRequest : Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("errors")]
|
[JsonProperty("errors")]
|
||||||
@@ -16,12 +16,12 @@ namespace LukeHagar.PlexAPI.SDK.Models.Errors
|
|||||||
{
|
{
|
||||||
|
|
||||||
[JsonProperty("code")]
|
[JsonProperty("code")]
|
||||||
public double? 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 double? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user