mirror of
https://github.com/LukeHagar/plexgo.git
synced 2025-12-10 20:47:49 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89fbd6238e | ||
|
|
7af7441ac7 | ||
|
|
d1945b544b | ||
|
|
16bb49d558 | ||
|
|
4bea7ae0d8 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
|
.speakeasy/reports
|
||||||
# .gitignore
|
# .gitignore
|
||||||
|
|||||||
1448
.speakeasy/gen.lock
1448
.speakeasy/gen.lock
File diff suppressed because one or more lines are too long
@@ -13,7 +13,7 @@ generation:
|
|||||||
oAuth2ClientCredentialsEnabled: true
|
oAuth2ClientCredentialsEnabled: true
|
||||||
oAuth2PasswordEnabled: false
|
oAuth2PasswordEnabled: false
|
||||||
go:
|
go:
|
||||||
version: 0.16.0
|
version: 0.17.3
|
||||||
additionalDependencies: {}
|
additionalDependencies: {}
|
||||||
allowUnknownFieldsInWeakUnions: false
|
allowUnknownFieldsInWeakUnions: false
|
||||||
clientServerStatusCodesAsErrors: true
|
clientServerStatusCodesAsErrors: true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
speakeasyVersion: 1.438.1
|
speakeasyVersion: 1.476.2
|
||||||
sources:
|
sources:
|
||||||
my-source:
|
my-source:
|
||||||
sourceNamespace: my-source
|
sourceNamespace: my-source
|
||||||
@@ -9,19 +9,19 @@ sources:
|
|||||||
- main
|
- main
|
||||||
plexapi:
|
plexapi:
|
||||||
sourceNamespace: plexapi
|
sourceNamespace: plexapi
|
||||||
sourceRevisionDigest: sha256:15e040d800921ded49cf84650ef2bc8fb1acf32c885ee193c42e838d754bf345
|
sourceRevisionDigest: sha256:e73707dfae50d22dab2166b1661938446b9831bcee252ecd696a1172dfd6ae2c
|
||||||
sourceBlobDigest: sha256:c178be2b4bfefb37d76c0fdaef37c51f9b6ab1410422d3698a41bb6a8d79a79f
|
sourceBlobDigest: sha256:e06caa091ad527fd21714fc0d43e7ea385e181fbad8c4f60296457a89a23c696
|
||||||
tags:
|
tags:
|
||||||
- latest
|
- latest
|
||||||
- main
|
- speakeasy-sdk-regen-1738022950
|
||||||
targets:
|
targets:
|
||||||
plexgo:
|
plexgo:
|
||||||
source: plexapi
|
source: plexapi
|
||||||
sourceNamespace: plexapi
|
sourceNamespace: plexapi
|
||||||
sourceRevisionDigest: sha256:15e040d800921ded49cf84650ef2bc8fb1acf32c885ee193c42e838d754bf345
|
sourceRevisionDigest: sha256:e73707dfae50d22dab2166b1661938446b9831bcee252ecd696a1172dfd6ae2c
|
||||||
sourceBlobDigest: sha256:c178be2b4bfefb37d76c0fdaef37c51f9b6ab1410422d3698a41bb6a8d79a79f
|
sourceBlobDigest: sha256:e06caa091ad527fd21714fc0d43e7ea385e181fbad8c4f60296457a89a23c696
|
||||||
codeSamplesNamespace: code-samples-go-plexgo
|
codeSamplesNamespace: code-samples-go-plexgo
|
||||||
codeSamplesRevisionDigest: sha256:7a02eff4211d44db5a95061e3af9e7151629b6539d0898b2f9aa2f9785268505
|
codeSamplesRevisionDigest: sha256:d074910cd257c690cd88b954cb7adc3401529828c1a9b0b79a96d1fe780cab97
|
||||||
workflow:
|
workflow:
|
||||||
workflowVersion: 1.0.0
|
workflowVersion: 1.0.0
|
||||||
speakeasyVersion: latest
|
speakeasyVersion: latest
|
||||||
|
|||||||
82
README.md
82
README.md
@@ -40,16 +40,24 @@ The following SDKs are generated from the OpenAPI Specification. They are automa
|
|||||||
|
|
||||||
<!-- Start Table of Contents [toc] -->
|
<!-- Start Table of Contents [toc] -->
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
<!-- $toc-max-depth=2 -->
|
||||||
|
* [github.com/LukeHagar/plexgo](#githubcomlukehagarplexgo)
|
||||||
|
* [Plex Media Server OpenAPI Specification](#plex-media-server-openapi-specification)
|
||||||
|
* [Documentation](#documentation)
|
||||||
|
* [SDKs](#sdks)
|
||||||
|
* [SDK Installation](#sdk-installation)
|
||||||
|
* [SDK Example Usage](#sdk-example-usage)
|
||||||
|
* [Available Resources and Operations](#available-resources-and-operations)
|
||||||
|
* [Retries](#retries)
|
||||||
|
* [Error Handling](#error-handling)
|
||||||
|
* [Server Selection](#server-selection)
|
||||||
|
* [Custom HTTP Client](#custom-http-client)
|
||||||
|
* [Authentication](#authentication)
|
||||||
|
* [Special Types](#special-types)
|
||||||
|
* [Development](#development)
|
||||||
|
* [Maturity](#maturity)
|
||||||
|
* [Contributions](#contributions)
|
||||||
|
|
||||||
* [SDK Installation](#sdk-installation)
|
|
||||||
* [SDK Example Usage](#sdk-example-usage)
|
|
||||||
* [Available Resources and Operations](#available-resources-and-operations)
|
|
||||||
* [Retries](#retries)
|
|
||||||
* [Error Handling](#error-handling)
|
|
||||||
* [Server Selection](#server-selection)
|
|
||||||
* [Custom HTTP Client](#custom-http-client)
|
|
||||||
* [Authentication](#authentication)
|
|
||||||
* [Special Types](#special-types)
|
|
||||||
<!-- End Table of Contents [toc] -->
|
<!-- End Table of Contents [toc] -->
|
||||||
|
|
||||||
<!-- Start SDK Installation [installation] -->
|
<!-- Start SDK Installation [installation] -->
|
||||||
@@ -76,16 +84,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -250,16 +254,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx, operations.WithRetries(
|
res, err := s.Server.GetServerCapabilities(ctx, operations.WithRetries(
|
||||||
retry.Config{
|
retry.Config{
|
||||||
Strategy: "backoff",
|
Strategy: "backoff",
|
||||||
@@ -293,6 +293,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithRetryConfig(
|
plexgo.WithRetryConfig(
|
||||||
retry.Config{
|
retry.Config{
|
||||||
@@ -306,14 +308,8 @@ func main() {
|
|||||||
RetryConnectionErrors: false,
|
RetryConnectionErrors: false,
|
||||||
}),
|
}),
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -355,16 +351,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
||||||
@@ -414,17 +406,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithServerURL("https://10.10.10.47:32400"),
|
plexgo.WithServerURL("https://10.10.10.47:32400"),
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -450,16 +438,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Plex.GetCompanionsData(ctx, operations.WithServerURL("https://plex.tv/api/v2"))
|
res, err := s.Plex.GetCompanionsData(ctx, operations.WithServerURL("https://plex.tv/api/v2"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -523,16 +507,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
50
RELEASES.md
50
RELEASES.md
@@ -963,3 +963,53 @@ Based on:
|
|||||||
- [go v0.16.0] .
|
- [go v0.16.0] .
|
||||||
### Releases
|
### Releases
|
||||||
- [Go v0.16.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.16.0 - .
|
- [Go v0.16.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.16.0 - .
|
||||||
|
|
||||||
|
## 2024-11-14 00:09:05
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.438.3 (2.457.9) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.16.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.16.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.16.1 - .
|
||||||
|
|
||||||
|
## 2024-12-21 00:09:02
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.459.2 (2.483.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.17.0] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.17.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.17.0 - .
|
||||||
|
|
||||||
|
## 2024-12-23 00:09:31
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.459.2 (2.483.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.17.1] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.17.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.17.1 - .
|
||||||
|
|
||||||
|
## 2025-01-25 00:08:47
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.476.0 (2.496.0) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.17.2] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.17.2] https://github.com/LukeHagar/plexgo/releases/tag/v0.17.2 - .
|
||||||
|
|
||||||
|
## 2025-01-28 00:08:53
|
||||||
|
### Changes
|
||||||
|
Based on:
|
||||||
|
- OpenAPI Doc
|
||||||
|
- Speakeasy CLI 1.476.2 (2.495.1) https://github.com/speakeasy-api/speakeasy
|
||||||
|
### Generated
|
||||||
|
- [go v0.17.3] .
|
||||||
|
### Releases
|
||||||
|
- [Go v0.17.3] https://github.com/LukeHagar/plexgo/releases/tag/v0.17.3 - .
|
||||||
8
USAGE.md
8
USAGE.md
@@ -9,16 +9,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -54,7 +54,12 @@ func (s *Activities) GetServerActivities(ctx context.Context, opts ...operations
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/activities")
|
opURL, err := url.JoinPath(baseURL, "/activities")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -82,6 +87,10 @@ func (s *Activities) GetServerActivities(ctx context.Context, opts ...operations
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -112,7 +121,11 @@ func (s *Activities) GetServerActivities(ctx context.Context, opts ...operations
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -240,7 +253,11 @@ func (s *Activities) GetServerActivities(ctx context.Context, opts ...operations
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -285,7 +302,12 @@ func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/activities/{activityUUID}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/activities/{activityUUID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -313,6 +335,10 @@ func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID st
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -343,7 +369,11 @@ func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID st
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -451,7 +481,11 @@ func (s *Activities) CancelServerActivities(ctx context.Context, activityUUID st
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,12 @@ func (s *Authentication) GetTransientToken(ctx context.Context, type_ operations
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/security/token")
|
opURL, err := url.JoinPath(baseURL, "/security/token")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -85,6 +90,10 @@ func (s *Authentication) GetTransientToken(ctx context.Context, type_ operations
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -115,7 +124,11 @@ func (s *Authentication) GetTransientToken(ctx context.Context, type_ operations
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -223,7 +236,11 @@ func (s *Authentication) GetTransientToken(ctx context.Context, type_ operations
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -269,7 +286,12 @@ func (s *Authentication) GetSourceConnectionInformation(ctx context.Context, sou
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/security/resources")
|
opURL, err := url.JoinPath(baseURL, "/security/resources")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -301,6 +323,10 @@ func (s *Authentication) GetSourceConnectionInformation(ctx context.Context, sou
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -331,7 +357,11 @@ func (s *Authentication) GetSourceConnectionInformation(ctx context.Context, sou
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -439,7 +469,11 @@ func (s *Authentication) GetSourceConnectionInformation(ctx context.Context, sou
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -470,7 +504,6 @@ func (s *Authentication) GetTokenDetails(ctx context.Context, opts ...operations
|
|||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -513,6 +546,10 @@ func (s *Authentication) GetTokenDetails(ctx context.Context, opts ...operations
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -543,7 +580,11 @@ func (s *Authentication) GetTokenDetails(ctx context.Context, opts ...operations
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -671,7 +712,11 @@ func (s *Authentication) GetTokenDetails(ctx context.Context, opts ...operations
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -700,17 +745,8 @@ func (s *Authentication) PostUsersSignInData(ctx context.Context, request operat
|
|||||||
SecuritySource: nil,
|
SecuritySource: nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
globals := operations.PostUsersSignInDataGlobals{
|
|
||||||
ClientID: s.sdkConfiguration.Globals.ClientID,
|
|
||||||
ClientName: s.sdkConfiguration.Globals.ClientName,
|
|
||||||
DeviceNickname: s.sdkConfiguration.Globals.DeviceNickname,
|
|
||||||
ClientVersion: s.sdkConfiguration.Globals.ClientVersion,
|
|
||||||
Platform: s.sdkConfiguration.Globals.Platform,
|
|
||||||
}
|
|
||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -753,9 +789,15 @@ func (s *Authentication) PostUsersSignInData(ctx context.Context, request operat
|
|||||||
}
|
}
|
||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
if reqContentType != "" {
|
||||||
req.Header.Set("Content-Type", reqContentType)
|
req.Header.Set("Content-Type", reqContentType)
|
||||||
|
}
|
||||||
|
|
||||||
utils.PopulateHeaders(ctx, req, request, globals)
|
utils.PopulateHeaders(ctx, req, request, nil)
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
@@ -787,7 +829,11 @@ func (s *Authentication) PostUsersSignInData(ctx context.Context, request operat
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -915,7 +961,11 @@ func (s *Authentication) PostUsersSignInData(ctx context.Context, request operat
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
117
butler.go
117
butler.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -48,7 +48,12 @@ func (s *Butler) GetButlerTasks(ctx context.Context, opts ...operations.Option)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/butler")
|
opURL, err := url.JoinPath(baseURL, "/butler")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -76,6 +81,10 @@ func (s *Butler) GetButlerTasks(ctx context.Context, opts ...operations.Option)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -106,7 +115,11 @@ func (s *Butler) GetButlerTasks(ctx context.Context, opts ...operations.Option)
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -234,7 +247,11 @@ func (s *Butler) GetButlerTasks(ctx context.Context, opts ...operations.Option)
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -279,7 +296,12 @@ func (s *Butler) StartAllTasks(ctx context.Context, opts ...operations.Option) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/butler")
|
opURL, err := url.JoinPath(baseURL, "/butler")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -307,6 +329,10 @@ func (s *Butler) StartAllTasks(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -337,7 +363,11 @@ func (s *Butler) StartAllTasks(ctx context.Context, opts ...operations.Option) (
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -445,7 +475,11 @@ func (s *Butler) StartAllTasks(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -486,7 +520,12 @@ func (s *Butler) StopAllTasks(ctx context.Context, opts ...operations.Option) (*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/butler")
|
opURL, err := url.JoinPath(baseURL, "/butler")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -514,6 +553,10 @@ func (s *Butler) StopAllTasks(ctx context.Context, opts ...operations.Option) (*
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -544,7 +587,11 @@ func (s *Butler) StopAllTasks(ctx context.Context, opts ...operations.Option) (*
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -652,7 +699,11 @@ func (s *Butler) StopAllTasks(ctx context.Context, opts ...operations.Option) (*
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -701,7 +752,12 @@ func (s *Butler) StartTask(ctx context.Context, taskName operations.TaskName, op
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/butler/{taskName}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/butler/{taskName}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -729,6 +785,10 @@ func (s *Butler) StartTask(ctx context.Context, taskName operations.TaskName, op
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -759,7 +819,11 @@ func (s *Butler) StartTask(ctx context.Context, taskName operations.TaskName, op
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -869,7 +933,11 @@ func (s *Butler) StartTask(ctx context.Context, taskName operations.TaskName, op
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -914,7 +982,12 @@ func (s *Butler) StopTask(ctx context.Context, taskName operations.PathParamTask
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/butler/{taskName}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/butler/{taskName}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -942,6 +1015,10 @@ func (s *Butler) StopTask(ctx context.Context, taskName operations.PathParamTask
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -972,7 +1049,11 @@ func (s *Butler) StopTask(ctx context.Context, taskName operations.PathParamTask
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1082,7 +1163,11 @@ func (s *Butler) StopTask(ctx context.Context, taskName operations.PathParamTask
|
|||||||
case httpRes.StatusCode == 404:
|
case httpRes.StatusCode == 404:
|
||||||
fallthrough
|
fallthrough
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
2339
codeSamples.yaml
2339
codeSamples.yaml
File diff suppressed because it is too large
Load Diff
11
docs/models/operations/enablecreditsmarkergeneration.md
Normal file
11
docs/models/operations/enablecreditsmarkergeneration.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# EnableCreditsMarkerGeneration
|
||||||
|
|
||||||
|
Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| --------------------------------------------- | --------------------------------------------- |
|
||||||
|
| `EnableCreditsMarkerGenerationLibraryDefault` | -1 |
|
||||||
|
| `EnableCreditsMarkerGenerationDisabled` | 0 |
|
||||||
12
docs/models/operations/episodesort.md
Normal file
12
docs/models/operations/episodesort.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# EpisodeSort
|
||||||
|
|
||||||
|
Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| --------------------------- | --------------------------- |
|
||||||
|
| `EpisodeSortLibraryDefault` | -1 |
|
||||||
|
| `EpisodeSortOldestFirst` | 0 |
|
||||||
|
| `EpisodeSortNewestFirst` | 1 |
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
# FlattenSeasons
|
# FlattenSeasons
|
||||||
|
|
||||||
|
Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
|
|
||||||
|
|
||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| --------------------- | --------------------- |
|
| ------------------------------ | ------------------------------ |
|
||||||
| `FlattenSeasonsFalse` | 0 |
|
| `FlattenSeasonsLibraryDefault` | -1 |
|
||||||
| `FlattenSeasonsTrue` | 1 |
|
| `FlattenSeasonsHide` | 0 |
|
||||||
|
| `FlattenSeasonsShow` | 1 |
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# GetLibraryItemsEnableCreditsMarkerGeneration
|
||||||
|
|
||||||
|
Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||||
|
| `GetLibraryItemsEnableCreditsMarkerGenerationLibraryDefault` | -1 |
|
||||||
|
| `GetLibraryItemsEnableCreditsMarkerGenerationDisabled` | 0 |
|
||||||
12
docs/models/operations/getlibraryitemsepisodesort.md
Normal file
12
docs/models/operations/getlibraryitemsepisodesort.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# GetLibraryItemsEpisodeSort
|
||||||
|
|
||||||
|
Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------------------ | ------------------------------------------ |
|
||||||
|
| `GetLibraryItemsEpisodeSortLibraryDefault` | -1 |
|
||||||
|
| `GetLibraryItemsEpisodeSortOldestFirst` | 0 |
|
||||||
|
| `GetLibraryItemsEpisodeSortNewestFirst` | 1 |
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
# GetLibraryItemsFlattenSeasons
|
# GetLibraryItemsFlattenSeasons
|
||||||
|
|
||||||
|
Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
|
|
||||||
|
|
||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| ------------------------------------ | ------------------------------------ |
|
| --------------------------------------------- | --------------------------------------------- |
|
||||||
| `GetLibraryItemsFlattenSeasonsFalse` | 0 |
|
| `GetLibraryItemsFlattenSeasonsLibraryDefault` | -1 |
|
||||||
| `GetLibraryItemsFlattenSeasonsTrue` | 1 |
|
| `GetLibraryItemsFlattenSeasonsHide` | 0 |
|
||||||
|
| `GetLibraryItemsFlattenSeasonsShow` | 1 |
|
||||||
@@ -23,8 +23,10 @@
|
|||||||
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
||||||
| `FlattenSeasons` | [*operations.GetLibraryItemsFlattenSeasons](../../models/operations/getlibraryitemsflattenseasons.md) | :heavy_minus_sign: | N/A | 1 |
|
| `FlattenSeasons` | [*operations.GetLibraryItemsFlattenSeasons](../../models/operations/getlibraryitemsflattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 |
|
||||||
| `ShowOrdering` | [*operations.GetLibraryItemsShowOrdering](../../models/operations/getlibraryitemsshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show <br/>None = Library default, <br/>tmdbAiring = The Movie Database (Aired), <br/>aired = TheTVDB (Aired), <br/>dvd = TheTVDB (DVD), <br/>absolute = TheTVDB (Absolute)).<br/> | dvd |
|
| `EpisodeSort` | [*operations.GetLibraryItemsEpisodeSort](../../models/operations/getlibraryitemsepisodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 |
|
||||||
|
| `EnableCreditsMarkerGeneration` | [*operations.GetLibraryItemsEnableCreditsMarkerGeneration](../../models/operations/getlibraryitemsenablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 |
|
||||||
|
| `ShowOrdering` | [*operations.GetLibraryItemsShowOrdering](../../models/operations/getlibraryitemsshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.<br/>None = Library default,<br/>tmdbAiring = The Movie Database (Aired),<br/>aired = TheTVDB (Aired),<br/>dvd = TheTVDB (DVD),<br/>absolute = TheTVDB (Absolute)).<br/> | absolute |
|
||||||
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
||||||
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
||||||
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
||||||
|
|||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `GetLibraryItemsQueryParamTypeSeason` | 3 |
|
| `GetLibraryItemsQueryParamTypeSeason` | 3 |
|
||||||
| `GetLibraryItemsQueryParamTypeEpisode` | 4 |
|
| `GetLibraryItemsQueryParamTypeEpisode` | 4 |
|
||||||
| `GetLibraryItemsQueryParamTypeAudio` | 8 |
|
| `GetLibraryItemsQueryParamTypeAudio` | 8 |
|
||||||
|
| `GetLibraryItemsQueryParamTypeAlbum` | 9 |
|
||||||
|
| `GetLibraryItemsQueryParamTypeTrack` | 10 |
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# GetLibraryItemsShowOrdering
|
# GetLibraryItemsShowOrdering
|
||||||
|
|
||||||
Setting that indicates the episode ordering for the show
|
Setting that indicates the episode ordering for the show.
|
||||||
None = Library default,
|
None = Library default,
|
||||||
tmdbAiring = The Movie Database (Aired),
|
tmdbAiring = The Movie Database (Aired),
|
||||||
aired = TheTVDB (Aired),
|
aired = TheTVDB (Aired),
|
||||||
@@ -12,9 +12,9 @@ absolute = TheTVDB (Absolute)).
|
|||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| --------------------------------------- | --------------------------------------- |
|
| ----------------------------------------- | ----------------------------------------- |
|
||||||
| `GetLibraryItemsShowOrderingNone` | None |
|
| `GetLibraryItemsShowOrderingNone` | None |
|
||||||
| `GetLibraryItemsShowOrderingTmdbAiring` | tmdbAiring |
|
| `GetLibraryItemsShowOrderingTmdbAiring` | tmdbAiring |
|
||||||
| `GetLibraryItemsShowOrderingAired` | aired |
|
| `GetLibraryItemsShowOrderingTvdbAired` | aired |
|
||||||
| `GetLibraryItemsShowOrderingDvd` | dvd |
|
| `GetLibraryItemsShowOrderingTvdbDvd` | dvd |
|
||||||
| `GetLibraryItemsShowOrderingAbsolute` | absolute |
|
| `GetLibraryItemsShowOrderingTvdbAbsolute` | absolute |
|
||||||
@@ -14,6 +14,11 @@
|
|||||||
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Movies |
|
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Movies |
|
||||||
| `LibrarySectionID` | **int* | :heavy_minus_sign: | N/A | 1 |
|
| `LibrarySectionID` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
| `LibrarySectionKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/1 |
|
| `LibrarySectionKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/1 |
|
||||||
|
| `GrandparentTitle` | **string* | :heavy_minus_sign: | The name of the album artist for the track when audio, and the name of the TV show for the episode when video. | |
|
||||||
|
| `ParentTitle` | **string* | :heavy_minus_sign: | The name of the album for the track when audio, and the name of the season for the episode when TV show. | |
|
||||||
|
| `OriginalTitle` | **string* | :heavy_minus_sign: | The orginal untranslated name of the media item when non-english. | |
|
||||||
|
| `Index` | **int64* | :heavy_minus_sign: | The index starting from 0 of this media item in the MetaData array. | |
|
||||||
|
| `ParentIndex` | **int64* | :heavy_minus_sign: | The parent index starting from 0 of this media item in the parent MetaData array. | |
|
||||||
| `ContentRating` | **string* | :heavy_minus_sign: | N/A | PG-13 |
|
| `ContentRating` | **string* | :heavy_minus_sign: | N/A | PG-13 |
|
||||||
| `Summary` | **string* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. |
|
| `Summary` | **string* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. |
|
||||||
| `Rating` | **float64* | :heavy_minus_sign: | N/A | 8.2 |
|
| `Rating` | **float64* | :heavy_minus_sign: | N/A | 8.2 |
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
# GetPinGlobals
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
|
||||||
| `Platform` | **string* | :heavy_minus_sign: | The platform of the client application. | Roku |
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `Strong` | **bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
|
| `Strong` | **bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> | |
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
||||||
|
|||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `GetPlaylistContentsQueryParamTypeSeason` | 3 |
|
| `GetPlaylistContentsQueryParamTypeSeason` | 3 |
|
||||||
| `GetPlaylistContentsQueryParamTypeEpisode` | 4 |
|
| `GetPlaylistContentsQueryParamTypeEpisode` | 4 |
|
||||||
| `GetPlaylistContentsQueryParamTypeAudio` | 8 |
|
| `GetPlaylistContentsQueryParamTypeAudio` | 8 |
|
||||||
|
| `GetPlaylistContentsQueryParamTypeAlbum` | 9 |
|
||||||
|
| `GetPlaylistContentsQueryParamTypeTrack` | 10 |
|
||||||
@@ -23,8 +23,10 @@
|
|||||||
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
||||||
| `FlattenSeasons` | [*operations.FlattenSeasons](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | N/A | 1 |
|
| `FlattenSeasons` | [*operations.FlattenSeasons](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 |
|
||||||
| `ShowOrdering` | [*operations.ShowOrdering](../../models/operations/showordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show <br/>None = Library default, <br/>tmdbAiring = The Movie Database (Aired), <br/>aired = TheTVDB (Aired), <br/>dvd = TheTVDB (DVD), <br/>absolute = TheTVDB (Absolute)).<br/> | dvd |
|
| `EpisodeSort` | [*operations.EpisodeSort](../../models/operations/episodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 |
|
||||||
|
| `EnableCreditsMarkerGeneration` | [*operations.EnableCreditsMarkerGeneration](../../models/operations/enablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 |
|
||||||
|
| `ShowOrdering` | [*operations.ShowOrdering](../../models/operations/showordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.<br/>None = Library default,<br/>tmdbAiring = The Movie Database (Aired),<br/>aired = TheTVDB (Aired),<br/>dvd = TheTVDB (DVD),<br/>absolute = TheTVDB (Absolute)).<br/> | absolute |
|
||||||
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
||||||
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
||||||
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# GetSearchAllLibrariesEnableCreditsMarkerGeneration
|
||||||
|
|
||||||
|
Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------------------------------------------ | ------------------------------------------------------------------ |
|
||||||
|
| `GetSearchAllLibrariesEnableCreditsMarkerGenerationLibraryDefault` | -1 |
|
||||||
|
| `GetSearchAllLibrariesEnableCreditsMarkerGenerationDisabled` | 0 |
|
||||||
12
docs/models/operations/getsearchalllibrariesepisodesort.md
Normal file
12
docs/models/operations/getsearchalllibrariesepisodesort.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# GetSearchAllLibrariesEpisodeSort
|
||||||
|
|
||||||
|
Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
|
||||||
|
|
||||||
|
## Values
|
||||||
|
|
||||||
|
| Name | Value |
|
||||||
|
| ------------------------------------------------ | ------------------------------------------------ |
|
||||||
|
| `GetSearchAllLibrariesEpisodeSortLibraryDefault` | -1 |
|
||||||
|
| `GetSearchAllLibrariesEpisodeSortOldestFirst` | 0 |
|
||||||
|
| `GetSearchAllLibrariesEpisodeSortNewestFirst` | 1 |
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
# GetSearchAllLibrariesFlattenSeasons
|
# GetSearchAllLibrariesFlattenSeasons
|
||||||
|
|
||||||
|
Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
|
|
||||||
|
|
||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| ------------------------------------------ | ------------------------------------------ |
|
| --------------------------------------------------- | --------------------------------------------------- |
|
||||||
| `GetSearchAllLibrariesFlattenSeasonsFalse` | 0 |
|
| `GetSearchAllLibrariesFlattenSeasonsLibraryDefault` | -1 |
|
||||||
| `GetSearchAllLibrariesFlattenSeasonsTrue` | 1 |
|
| `GetSearchAllLibrariesFlattenSeasonsHide` | 0 |
|
||||||
|
| `GetSearchAllLibrariesFlattenSeasonsShow` | 1 |
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# GetSearchAllLibrariesGlobals
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
@@ -23,8 +23,10 @@
|
|||||||
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `Year` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
| `SeasonCount` | **int* | :heavy_minus_sign: | N/A | 2022 |
|
||||||
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
| `Tagline` | **string* | :heavy_minus_sign: | N/A | Return to Pandora. |
|
||||||
| `FlattenSeasons` | [*operations.GetSearchAllLibrariesFlattenSeasons](../../models/operations/getsearchalllibrariesflattenseasons.md) | :heavy_minus_sign: | N/A | 1 |
|
| `FlattenSeasons` | [*operations.GetSearchAllLibrariesFlattenSeasons](../../models/operations/getsearchalllibrariesflattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 |
|
||||||
| `ShowOrdering` | [*operations.GetSearchAllLibrariesShowOrdering](../../models/operations/getsearchalllibrariesshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show <br/>None = Library default, <br/>tmdbAiring = The Movie Database (Aired), <br/>aired = TheTVDB (Aired), <br/>dvd = TheTVDB (DVD), <br/>absolute = TheTVDB (Absolute)).<br/> | dvd |
|
| `EpisodeSort` | [*operations.GetSearchAllLibrariesEpisodeSort](../../models/operations/getsearchalllibrariesepisodesort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 |
|
||||||
|
| `EnableCreditsMarkerGeneration` | [*operations.GetSearchAllLibrariesEnableCreditsMarkerGeneration](../../models/operations/getsearchalllibrariesenablecreditsmarkergeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 |
|
||||||
|
| `ShowOrdering` | [*operations.GetSearchAllLibrariesShowOrdering](../../models/operations/getsearchalllibrariesshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.<br/>None = Library default,<br/>tmdbAiring = The Movie Database (Aired),<br/>aired = TheTVDB (Aired),<br/>dvd = TheTVDB (DVD),<br/>absolute = TheTVDB (Absolute)).<br/> | absolute |
|
||||||
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
| `Thumb` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 |
|
||||||
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 |
|
||||||
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
| `Banner` | **string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 |
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||||
| `Query` | *string* | :heavy_check_mark: | The search query term. | |
|
| `Query` | *string* | :heavy_check_mark: | The search query term. | |
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
| `Limit` | **int64* | :heavy_minus_sign: | Limit the number of results returned. | |
|
| `Limit` | **int64* | :heavy_minus_sign: | Limit the number of results returned. | |
|
||||||
| `SearchTypes` | [][operations.SearchTypes](../../models/operations/searchtypes.md) | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.<br/> | movies,music,otherVideos,people,tv |
|
| `SearchTypes` | [][operations.SearchTypes](../../models/operations/searchtypes.md) | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.<br/> | movies,music,otherVideos,people,tv |
|
||||||
| `IncludeCollections` | [*operations.QueryParamIncludeCollections](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 |
|
| `IncludeCollections` | [*operations.QueryParamIncludeCollections](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# GetSearchAllLibrariesShowOrdering
|
# GetSearchAllLibrariesShowOrdering
|
||||||
|
|
||||||
Setting that indicates the episode ordering for the show
|
Setting that indicates the episode ordering for the show.
|
||||||
None = Library default,
|
None = Library default,
|
||||||
tmdbAiring = The Movie Database (Aired),
|
tmdbAiring = The Movie Database (Aired),
|
||||||
aired = TheTVDB (Aired),
|
aired = TheTVDB (Aired),
|
||||||
@@ -12,9 +12,9 @@ absolute = TheTVDB (Absolute)).
|
|||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| --------------------------------------------- | --------------------------------------------- |
|
| ----------------------------------------------- | ----------------------------------------------- |
|
||||||
| `GetSearchAllLibrariesShowOrderingNone` | None |
|
| `GetSearchAllLibrariesShowOrderingNone` | None |
|
||||||
| `GetSearchAllLibrariesShowOrderingTmdbAiring` | tmdbAiring |
|
| `GetSearchAllLibrariesShowOrderingTmdbAiring` | tmdbAiring |
|
||||||
| `GetSearchAllLibrariesShowOrderingAired` | aired |
|
| `GetSearchAllLibrariesShowOrderingTvdbAired` | aired |
|
||||||
| `GetSearchAllLibrariesShowOrderingDvd` | dvd |
|
| `GetSearchAllLibrariesShowOrderingTvdbDvd` | dvd |
|
||||||
| `GetSearchAllLibrariesShowOrderingAbsolute` | absolute |
|
| `GetSearchAllLibrariesShowOrderingTvdbAbsolute` | absolute |
|
||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `GetSearchLibraryQueryParamTypeSeason` | 3 |
|
| `GetSearchLibraryQueryParamTypeSeason` | 3 |
|
||||||
| `GetSearchLibraryQueryParamTypeEpisode` | 4 |
|
| `GetSearchLibraryQueryParamTypeEpisode` | 4 |
|
||||||
| `GetSearchLibraryQueryParamTypeAudio` | 8 |
|
| `GetSearchLibraryQueryParamTypeAudio` | 8 |
|
||||||
|
| `GetSearchLibraryQueryParamTypeAlbum` | 9 |
|
||||||
|
| `GetSearchLibraryQueryParamTypeTrack` | 10 |
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# GetServerResourcesGlobals
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
@@ -8,4 +8,4 @@
|
|||||||
| `IncludeHTTPS` | [*operations.IncludeHTTPS](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 |
|
| `IncludeHTTPS` | [*operations.IncludeHTTPS](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 |
|
||||||
| `IncludeRelay` | [*operations.IncludeRelay](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results <br/>E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/> | 1 |
|
| `IncludeRelay` | [*operations.IncludeRelay](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results <br/>E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/> | 1 |
|
||||||
| `IncludeIPv6` | [*operations.IncludeIPv6](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 |
|
| `IncludeIPv6` | [*operations.IncludeIPv6](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 |
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
## Fields
|
## Fields
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1705543312 |
|
| `AddedAt` | **int* | :heavy_minus_sign: | N/A | 1705543312 |
|
||||||
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 |
|
| `Art` | **string* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 |
|
||||||
| `Duration` | **int* | :heavy_minus_sign: | N/A | 186240 |
|
| `Duration` | **int* | :heavy_minus_sign: | N/A | 186240 |
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
| `LibrarySectionKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/3 |
|
| `LibrarySectionKey` | **string* | :heavy_minus_sign: | N/A | /library/sections/3 |
|
||||||
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Music |
|
| `LibrarySectionTitle` | **string* | :heavy_minus_sign: | N/A | Music |
|
||||||
| `MusicAnalysisVersion` | **string* | :heavy_minus_sign: | N/A | 1 |
|
| `MusicAnalysisVersion` | **string* | :heavy_minus_sign: | N/A | 1 |
|
||||||
|
| `OriginalTitle` | **string* | :heavy_minus_sign: | The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist | The American Dream Is Killing Me |
|
||||||
| `ParentGUID` | **string* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 |
|
| `ParentGUID` | **string* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 |
|
||||||
| `ParentIndex` | **int* | :heavy_minus_sign: | N/A | 1 |
|
| `ParentIndex` | **int* | :heavy_minus_sign: | N/A | 1 |
|
||||||
| `ParentKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/67084 |
|
| `ParentKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/67084 |
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
# GetTokenByPinIDGlobals
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
|
||||||
| `Platform` | **string* | :heavy_minus_sign: | The platform of the client application. | Roku |
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
||||||
| `PinID` | *int64* | :heavy_check_mark: | The PinID to retrieve an access token for | |
|
| `PinID` | *int64* | :heavy_check_mark: | The PinID to retrieve an access token for | |
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
||||||
|
|||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `GetTopWatchedContentQueryParamTypeSeason` | 3 |
|
| `GetTopWatchedContentQueryParamTypeSeason` | 3 |
|
||||||
| `GetTopWatchedContentQueryParamTypeEpisode` | 4 |
|
| `GetTopWatchedContentQueryParamTypeEpisode` | 4 |
|
||||||
| `GetTopWatchedContentQueryParamTypeAudio` | 8 |
|
| `GetTopWatchedContentQueryParamTypeAudio` | 8 |
|
||||||
|
| `GetTopWatchedContentQueryParamTypeAlbum` | 9 |
|
||||||
|
| `GetTopWatchedContentQueryParamTypeTrack` | 10 |
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
# PostUsersSignInDataGlobals
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
|
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
|
||||||
| `Platform` | **string* | :heavy_minus_sign: | The platform of the client application. | Roku |
|
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
| Field | Type | Required | Description | Example |
|
| Field | Type | Required | Description | Example |
|
||||||
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||||
| `ClientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
| `ClientName` | **string* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
||||||
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
| `DeviceNickname` | **string* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
||||||
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
| `ClientVersion` | **string* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
||||||
|
|||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `QueryParamTypeSeason` | 3 |
|
| `QueryParamTypeSeason` | 3 |
|
||||||
| `QueryParamTypeEpisode` | 4 |
|
| `QueryParamTypeEpisode` | 4 |
|
||||||
| `QueryParamTypeAudio` | 8 |
|
| `QueryParamTypeAudio` | 8 |
|
||||||
|
| `QueryParamTypeAlbum` | 9 |
|
||||||
|
| `QueryParamTypeTrack` | 10 |
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# ShowOrdering
|
# ShowOrdering
|
||||||
|
|
||||||
Setting that indicates the episode ordering for the show
|
Setting that indicates the episode ordering for the show.
|
||||||
None = Library default,
|
None = Library default,
|
||||||
tmdbAiring = The Movie Database (Aired),
|
tmdbAiring = The Movie Database (Aired),
|
||||||
aired = TheTVDB (Aired),
|
aired = TheTVDB (Aired),
|
||||||
@@ -12,9 +12,9 @@ absolute = TheTVDB (Absolute)).
|
|||||||
## Values
|
## Values
|
||||||
|
|
||||||
| Name | Value |
|
| Name | Value |
|
||||||
| ------------------------ | ------------------------ |
|
| -------------------------- | -------------------------- |
|
||||||
| `ShowOrderingNone` | None |
|
| `ShowOrderingNone` | None |
|
||||||
| `ShowOrderingTmdbAiring` | tmdbAiring |
|
| `ShowOrderingTmdbAiring` | tmdbAiring |
|
||||||
| `ShowOrderingAired` | aired |
|
| `ShowOrderingTvdbAired` | aired |
|
||||||
| `ShowOrderingDvd` | dvd |
|
| `ShowOrderingTvdbDvd` | dvd |
|
||||||
| `ShowOrderingAbsolute` | absolute |
|
| `ShowOrderingTvdbAbsolute` | absolute |
|
||||||
@@ -26,3 +26,4 @@ A key representing a specific tag within the section.
|
|||||||
| `TagResolution` | resolution |
|
| `TagResolution` | resolution |
|
||||||
| `TagFirstCharacter` | firstCharacter |
|
| `TagFirstCharacter` | firstCharacter |
|
||||||
| `TagFolder` | folder |
|
| `TagFolder` | folder |
|
||||||
|
| `TagAlbums` | albums |
|
||||||
@@ -18,3 +18,5 @@ E.g. A movie library will not return anything with type 3 as there are no season
|
|||||||
| `TypeSeason` | 3 |
|
| `TypeSeason` | 3 |
|
||||||
| `TypeEpisode` | 4 |
|
| `TypeEpisode` | 4 |
|
||||||
| `TypeAudio` | 8 |
|
| `TypeAudio` | 8 |
|
||||||
|
| `TypeAlbum` | 9 |
|
||||||
|
| `TypeTrack` | 10 |
|
||||||
@@ -27,22 +27,18 @@ Get Server Activities
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Activities.GetServerActivities(ctx)
|
res, err := s.Activities.GetServerActivities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -82,22 +78,18 @@ Cancel Server Activities
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Activities.CancelServerActivities(ctx, "25b71ed5-0f9d-461c-baa7-d404e9e10d3e")
|
res, err := s.Activities.CancelServerActivities(ctx, "25b71ed5-0f9d-461c-baa7-d404e9e10d3e")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -24,23 +24,19 @@ This endpoint provides the caller with a temporary token with the same access le
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Authentication.GetTransientToken(ctx, operations.GetTransientTokenQueryParamTypeDelegation, operations.ScopeAll)
|
res, err := s.Authentication.GetTransientToken(ctx, operations.GetTransientTokenQueryParamTypeDelegation, operations.ScopeAll)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -84,22 +80,18 @@ Note: requires Plex Media Server >= 1.15.4.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Authentication.GetSourceConnectionInformation(ctx, "provider://provider-identifier")
|
res, err := s.Authentication.GetSourceConnectionInformation(ctx, "provider://provider-identifier")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -140,22 +132,18 @@ Get the User data from the provided X-Plex-Token
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Authentication.GetTokenDetails(ctx)
|
res, err := s.Authentication.GetTokenDetails(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -195,26 +183,27 @@ Sign in user with username and password and return user data with Plex authentic
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
s := plexgo.New()
|
||||||
|
|
||||||
res, err := s.Authentication.PostUsersSignInData(ctx, operations.PostUsersSignInDataRequest{
|
res, err := s.Authentication.PostUsersSignInData(ctx, operations.PostUsersSignInDataRequest{
|
||||||
|
ClientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||||
|
ClientName: plexgo.String("Plex for Roku"),
|
||||||
|
DeviceNickname: plexgo.String("Roku 3"),
|
||||||
|
ClientVersion: plexgo.String("2.4.1"),
|
||||||
|
Platform: plexgo.String("Roku"),
|
||||||
RequestBody: &operations.PostUsersSignInDataRequestBody{
|
RequestBody: &operations.PostUsersSignInDataRequestBody{
|
||||||
Login: "username@email.com",
|
Login: "username@email.com",
|
||||||
Password: "password123",
|
Password: "password123",
|
||||||
|
RememberMe: plexgo.Bool(false),
|
||||||
VerificationCode: plexgo.String("123456"),
|
VerificationCode: plexgo.String("123456"),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -24,22 +24,18 @@ Returns a list of butler tasks
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Butler.GetButlerTasks(ctx)
|
res, err := s.Butler.GetButlerTasks(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -84,22 +80,18 @@ This endpoint will attempt to start all Butler tasks that are enabled in the set
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Butler.StartAllTasks(ctx)
|
res, err := s.Butler.StartAllTasks(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -140,22 +132,18 @@ This endpoint will stop all currently running tasks and remove any scheduled tas
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Butler.StopAllTasks(ctx)
|
res, err := s.Butler.StopAllTasks(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -200,23 +188,19 @@ This endpoint will attempt to start a single Butler task that is enabled in the
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Butler.StartTask(ctx, operations.TaskNameCleanOldBundles)
|
res, err := s.Butler.StartTask(ctx, operations.TaskNameCleanOldBundles)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -258,23 +242,19 @@ This endpoint will stop a currently running task by name, or remove it from the
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Butler.StopTask(ctx, operations.PathParamTaskNameBackupDatabase)
|
res, err := s.Butler.StopTask(ctx, operations.PathParamTaskNameBackupDatabase)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -22,22 +22,18 @@ Get Global Hubs filtered by the parameters provided.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Hubs.GetGlobalHubs(ctx, nil, nil)
|
res, err := s.Hubs.GetGlobalHubs(ctx, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -80,23 +76,19 @@ This endpoint will return the recently added content.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Hubs.GetRecentlyAdded(ctx, operations.GetRecentlyAddedRequest{
|
res, err := s.Hubs.GetRecentlyAdded(ctx, operations.GetRecentlyAddedRequest{
|
||||||
ContentDirectoryID: 470161,
|
ContentDirectoryID: 470161,
|
||||||
SectionID: plexgo.Int64(2),
|
SectionID: plexgo.Int64(2),
|
||||||
@@ -143,22 +135,18 @@ This endpoint will return a list of library specific hubs
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Hubs.GetLibraryHubs(ctx, 6728.76, nil, nil)
|
res, err := s.Hubs.GetLibraryHubs(ctx, 6728.76, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -32,22 +32,18 @@ This resource returns hash values for local files
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetFileHash(ctx, "file://C:\Image.png&type=13", nil)
|
res, err := s.Library.GetFileHash(ctx, "file://C:\Image.png&type=13", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -90,23 +86,19 @@ This endpoint will return the recently added content.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetRecentlyAddedLibrary(ctx, operations.GetRecentlyAddedLibraryRequest{
|
res, err := s.Library.GetRecentlyAddedLibrary(ctx, operations.GetRecentlyAddedLibraryRequest{
|
||||||
ContentDirectoryID: plexgo.Int64(2),
|
ContentDirectoryID: plexgo.Int64(2),
|
||||||
PinnedContentDirectoryID: []int64{
|
PinnedContentDirectoryID: []int64{
|
||||||
@@ -174,22 +166,18 @@ This allows a client to provide a rich interface around the media (e.g. allow so
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetAllLibraries(ctx)
|
res, err := s.Library.GetAllLibraries(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -268,23 +256,20 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
res, err := s.Library.GetLibraryDetails(ctx, 9518, operations.IncludeDetailsZero.ToPointer())
|
||||||
res, err := s.Library.GetLibraryDetails(ctx, 9518, nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -325,22 +310,18 @@ Delete a library using a specific section id
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.DeleteLibrary(ctx, 9518)
|
res, err := s.Library.DeleteLibrary(ctx, 9518)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -393,6 +374,7 @@ Fetches details from a specific section of the library identified by a section k
|
|||||||
- `resolution`: Items categorized by resolution.
|
- `resolution`: Items categorized by resolution.
|
||||||
- `firstCharacter`: Items categorized by the first letter.
|
- `firstCharacter`: Items categorized by the first letter.
|
||||||
- `folder`: Items categorized by folder.
|
- `folder`: Items categorized by folder.
|
||||||
|
- `albums`: Items categorized by album.
|
||||||
|
|
||||||
|
|
||||||
### Example Usage
|
### Example Usage
|
||||||
@@ -401,23 +383,19 @@ Fetches details from a specific section of the library identified by a section k
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetLibraryItems(ctx, operations.GetLibraryItemsRequest{
|
res, err := s.Library.GetLibraryItems(ctx, operations.GetLibraryItemsRequest{
|
||||||
Tag: operations.TagEdition,
|
Tag: operations.TagEdition,
|
||||||
IncludeGuids: operations.IncludeGuidsEnable.ToPointer(),
|
IncludeGuids: operations.IncludeGuidsEnable.ToPointer(),
|
||||||
@@ -467,23 +445,19 @@ This endpoint Refreshes all the Metadata of the library.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetRefreshLibraryMetadata(ctx, 9518, operations.ForceOne.ToPointer())
|
res, err := s.Library.GetRefreshLibraryMetadata(ctx, 9518, operations.ForceOne.ToPointer())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -543,23 +517,19 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetSearchLibrary(ctx, 9518, operations.GetSearchLibraryQueryParamTypeTvShow)
|
res, err := s.Library.GetSearchLibrary(ctx, 9518, operations.GetSearchLibraryQueryParamTypeTvShow)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -602,25 +572,22 @@ Search the provided query across all library sections, or a single section, and
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetSearchAllLibraries(ctx, operations.GetSearchAllLibrariesRequest{
|
res, err := s.Library.GetSearchAllLibraries(ctx, operations.GetSearchAllLibrariesRequest{
|
||||||
Query: "<value>",
|
Query: "<value>",
|
||||||
|
ClientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||||
SearchTypes: []operations.SearchTypes{
|
SearchTypes: []operations.SearchTypes{
|
||||||
operations.SearchTypesPeople,
|
operations.SearchTypesPeople,
|
||||||
},
|
},
|
||||||
@@ -667,22 +634,18 @@ This endpoint will return the metadata of a library item specified with the rati
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetMetaDataByRatingKey(ctx, 9518)
|
res, err := s.Library.GetMetaDataByRatingKey(ctx, 9518)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -724,22 +687,18 @@ This endpoint will return the children of of a library item specified with the r
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetMetadataChildren(ctx, 1539.14, plexgo.String("Stream"))
|
res, err := s.Library.GetMetadataChildren(ctx, 1539.14, plexgo.String("Stream"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -782,23 +741,19 @@ This endpoint will return the top watched content from libraries of a certain ty
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetTopWatchedContent(ctx, operations.GetTopWatchedContentQueryParamTypeTvShow, plexgo.Int64(1))
|
res, err := s.Library.GetTopWatchedContent(ctx, operations.GetTopWatchedContentQueryParamTypeTvShow, plexgo.Int64(1))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -841,22 +796,18 @@ This endpoint will return the on deck content.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Library.GetOnDeck(ctx)
|
res, err := s.Library.GetOnDeck(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -23,23 +23,19 @@ This endpoint will write a single-line log message, including a level and source
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Log.LogLine(ctx, operations.LevelThree, "Test log message", "Postman")
|
res, err := s.Log.LogLine(ctx, operations.LevelThree, "Test log message", "Postman")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -103,22 +99,18 @@ Ensure each parameter is properly URL-encoded to avoid interpretation issues.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Log.LogMultiLine(ctx, "level=4&message=Test%20message%201&source=postman\n" +
|
res, err := s.Log.LogMultiLine(ctx, "level=4&message=Test%20message%201&source=postman\n" +
|
||||||
"level=3&message=Test%20message%202&source=postman\n" +
|
"level=3&message=Test%20message%202&source=postman\n" +
|
||||||
"level=1&message=Test%20message%203&source=postman")
|
"level=1&message=Test%20message%203&source=postman")
|
||||||
@@ -162,22 +154,18 @@ This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Log.EnablePaperTrail(ctx)
|
res, err := s.Log.EnablePaperTrail(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -24,22 +24,18 @@ This will mark the provided media key as Played.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Media.MarkPlayed(ctx, 59398)
|
res, err := s.Media.MarkPlayed(ctx, 59398)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -80,22 +76,18 @@ This will mark the provided media key as Unplayed.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Media.MarkUnplayed(ctx, 59398)
|
res, err := s.Media.MarkUnplayed(ctx, 59398)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -137,22 +129,18 @@ This API command can be used to update the play progress of a media item.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Media.UpdatePlayProgress(ctx, "<key>", 90000, "played")
|
res, err := s.Media.UpdatePlayProgress(ctx, "<key>", 90000, "played")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -195,23 +183,19 @@ Gets the banner image of the media item
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Media.GetBannerImage(ctx, operations.GetBannerImageRequest{
|
res, err := s.Media.GetBannerImage(ctx, operations.GetBannerImageRequest{
|
||||||
RatingKey: 9518,
|
RatingKey: 9518,
|
||||||
Width: 396,
|
Width: 396,
|
||||||
@@ -259,23 +243,19 @@ Gets the thumbnail image of the media item
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Media.GetThumbImage(ctx, operations.GetThumbImageRequest{
|
res, err := s.Media.GetThumbImage(ctx, operations.GetThumbImageRequest{
|
||||||
RatingKey: 9518,
|
RatingKey: 9518,
|
||||||
Width: 396,
|
Width: 396,
|
||||||
|
|||||||
@@ -34,28 +34,24 @@ Create a new playlist. By default the playlist is blank. To create a playlist al
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.CreatePlaylist(ctx, operations.CreatePlaylistRequest{
|
res, err := s.Playlists.CreatePlaylist(ctx, operations.CreatePlaylistRequest{
|
||||||
Title: "<value>",
|
Title: "<value>",
|
||||||
Type: operations.CreatePlaylistQueryParamTypePhoto,
|
Type: operations.CreatePlaylistQueryParamTypePhoto,
|
||||||
Smart: operations.SmartOne,
|
Smart: operations.SmartOne,
|
||||||
URI: "https://inborn-brochure.biz",
|
URI: "https://hoarse-testing.info/",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -96,22 +92,18 @@ Get All Playlists given the specified filters.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.GetPlaylists(ctx, nil, nil)
|
res, err := s.Playlists.GetPlaylists(ctx, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -155,22 +147,18 @@ Smart playlist details contain the `content` attribute. This is the content URI
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.GetPlaylist(ctx, 4109.48)
|
res, err := s.Playlists.GetPlaylist(ctx, 4109.48)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -212,22 +200,18 @@ This endpoint will delete a playlist
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.DeletePlaylist(ctx, 216.22)
|
res, err := s.Playlists.DeletePlaylist(ctx, 216.22)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -269,22 +253,18 @@ From PMS version 1.9.1 clients can also edit playlist metadata using this endpoi
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.UpdatePlaylist(ctx, 3915, nil, nil)
|
res, err := s.Playlists.UpdatePlaylist(ctx, 3915, nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -331,23 +311,19 @@ Note that for dumb playlists, items have a `playlistItemID` attribute which is u
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.GetPlaylistContents(ctx, 5004.46, operations.GetPlaylistContentsQueryParamTypeTvShow)
|
res, err := s.Playlists.GetPlaylistContents(ctx, 5004.46, operations.GetPlaylistContentsQueryParamTypeTvShow)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -390,22 +366,18 @@ Clears a playlist, only works with dumb playlists. Returns the playlist.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.ClearPlaylistContents(ctx, 1893.18)
|
res, err := s.Playlists.ClearPlaylistContents(ctx, 1893.18)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -448,22 +420,18 @@ With a smart playlist, passing a new `uri` parameter replaces the rules for the
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.AddPlaylistContents(ctx, 8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", plexgo.Float64(123))
|
res, err := s.Playlists.AddPlaylistContents(ctx, 8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", plexgo.Float64(123))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -507,23 +475,19 @@ Imports m3u playlists by passing a path on the server to scan for m3u-formatted
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Playlists.UploadPlaylist(ctx, "/home/barkley/playlist.m3u", operations.QueryParamForceZero, 1)
|
res, err := s.Playlists.UploadPlaylist(ctx, "/home/barkley/playlist.m3u", operations.QueryParamForceZero, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -26,22 +26,18 @@ Get Companions Data
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Plex.GetCompanionsData(ctx)
|
res, err := s.Plex.GetCompanionsData(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -81,22 +77,18 @@ Get friends of provided auth token.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Plex.GetUserFriends(ctx)
|
res, err := s.Plex.GetUserFriends(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -136,21 +128,16 @@ Returns the geolocation and locale data of the caller
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
s := plexgo.New()
|
||||||
|
|
||||||
res, err := s.Plex.GetGeoData(ctx)
|
res, err := s.Plex.GetGeoData(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -190,22 +177,18 @@ Retrieves the home data for the authenticated user, including details like home
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Plex.GetHomeData(ctx)
|
res, err := s.Plex.GetHomeData(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -245,24 +228,20 @@ Get Plex server access tokens and server connections
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
res, err := s.Plex.GetServerResources(ctx, "3381b62b-9ab7-4e37-827b-203e9809eb58", operations.IncludeHTTPSEnable.ToPointer(), operations.IncludeRelayEnable.ToPointer(), operations.IncludeIPv6Enable.ToPointer())
|
||||||
res, err := s.Plex.GetServerResources(ctx, operations.IncludeHTTPSEnable.ToPointer(), operations.IncludeRelayEnable.ToPointer(), operations.IncludeIPv6Enable.ToPointer(), plexgo.String("3381b62b-9ab7-4e37-827b-203e9809eb58"))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -277,10 +256,10 @@ func main() {
|
|||||||
| Parameter | Type | Required | Description | Example |
|
| Parameter | Type | Required | Description | Example |
|
||||||
| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
|
| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | |
|
| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | |
|
||||||
|
| `clientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||||
| `includeHTTPS` | [*operations.IncludeHTTPS](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 |
|
| `includeHTTPS` | [*operations.IncludeHTTPS](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 |
|
||||||
| `includeRelay` | [*operations.IncludeRelay](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results <br/>E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/> | 1 |
|
| `includeRelay` | [*operations.IncludeRelay](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results <br/>E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400<br/> | 1 |
|
||||||
| `includeIPv6` | [*operations.IncludeIPv6](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 |
|
| `includeIPv6` | [*operations.IncludeIPv6](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 |
|
||||||
| `clientID` | **string* | :heavy_minus_sign: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
|
||||||
| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | |
|
| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | |
|
||||||
|
|
||||||
### Response
|
### Response
|
||||||
@@ -305,23 +284,25 @@ Retrieve a Pin ID from Plex.tv to use for authentication flows
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
res, err := s.Plex.GetPin(ctx, operations.GetPinRequest{})
|
|
||||||
|
s := plexgo.New()
|
||||||
|
|
||||||
|
res, err := s.Plex.GetPin(ctx, operations.GetPinRequest{
|
||||||
|
Strong: plexgo.Bool(false),
|
||||||
|
ClientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||||
|
ClientName: plexgo.String("Plex for Roku"),
|
||||||
|
DeviceNickname: plexgo.String("Roku 3"),
|
||||||
|
ClientVersion: plexgo.String("2.4.1"),
|
||||||
|
Platform: plexgo.String("Roku"),
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -360,24 +341,24 @@ Retrieve an Access Token from Plex.tv after the Pin has been authenticated
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
s := plexgo.New()
|
||||||
|
|
||||||
res, err := s.Plex.GetTokenByPinID(ctx, operations.GetTokenByPinIDRequest{
|
res, err := s.Plex.GetTokenByPinID(ctx, operations.GetTokenByPinIDRequest{
|
||||||
PinID: 408895,
|
PinID: 408895,
|
||||||
|
ClientID: "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||||
|
ClientName: plexgo.String("Plex for Roku"),
|
||||||
|
DeviceNickname: plexgo.String("Roku 3"),
|
||||||
|
ClientVersion: plexgo.String("2.4.1"),
|
||||||
|
Platform: plexgo.String("Roku"),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -26,3 +26,6 @@ The following SDKs are generated from the OpenAPI Specification. They are automa
|
|||||||
| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/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) | - |
|
| 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) | -
|
| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | -
|
||||||
|
|
||||||
|
|
||||||
|
### Available Operations
|
||||||
|
|||||||
@@ -34,22 +34,18 @@ This request is intended to be very fast, and called as the user types.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Search.PerformSearch(ctx, "dylan", nil, plexgo.Float64(5))
|
res, err := s.Search.PerformSearch(ctx, "dylan", nil, plexgo.Float64(5))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -96,22 +92,18 @@ Results, as well as their containing per-type hubs, contain a `distance` attribu
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Search.PerformVoiceSearch(ctx, "dead+poop", nil, plexgo.Float64(5))
|
res, err := s.Search.PerformVoiceSearch(ctx, "dead+poop", nil, plexgo.Float64(5))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -154,22 +146,18 @@ This will search the database for the string provided.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Search.GetSearchResults(ctx, "110")
|
res, err := s.Search.GetSearchResults(ctx, "110")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -28,22 +28,18 @@ Get Server Capabilities
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerCapabilities(ctx)
|
res, err := s.Server.GetServerCapabilities(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -83,22 +79,18 @@ Get Server Preferences
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerPreferences(ctx)
|
res, err := s.Server.GetServerPreferences(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -138,22 +130,18 @@ Get Available Clients
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetAvailableClients(ctx)
|
res, err := s.Server.GetAvailableClients(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -193,22 +181,18 @@ Get Devices
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetDevices(ctx)
|
res, err := s.Server.GetDevices(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -248,21 +232,16 @@ This request is useful to determine if the server is online or offline
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
s := plexgo.New(
|
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
s := plexgo.New()
|
||||||
|
|
||||||
res, err := s.Server.GetServerIdentity(ctx)
|
res, err := s.Server.GetServerIdentity(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -301,22 +280,18 @@ Returns MyPlex Account Information
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetMyPlexAccount(ctx)
|
res, err := s.Server.GetMyPlexAccount(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -357,23 +332,19 @@ Plex's Photo transcoder is used throughout the service to serve images at specif
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetResizedPhoto(ctx, operations.GetResizedPhotoRequest{
|
res, err := s.Server.GetResizedPhoto(ctx, operations.GetResizedPhotoRequest{
|
||||||
Width: 110,
|
Width: 110,
|
||||||
Height: 165,
|
Height: 165,
|
||||||
@@ -422,22 +393,18 @@ Retrieves media providers and their features from the Plex server.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetMediaProviders(ctx, "CV5xoxjTpFKUzBTShsaf")
|
res, err := s.Server.GetMediaProviders(ctx, "CV5xoxjTpFKUzBTShsaf")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -478,22 +445,18 @@ Get Server List
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Server.GetServerList(ctx)
|
res, err := s.Server.GetServerList(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -23,22 +23,18 @@ This will retrieve the "Now Playing" Information of the PMS.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Sessions.GetSessions(ctx)
|
res, err := s.Sessions.GetSessions(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -78,23 +74,19 @@ This will Retrieve a listing of all history views.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Sessions.GetSessionHistory(ctx, plexgo.String("viewedAt:desc"), plexgo.Int64(1), &operations.QueryParamFilter{}, plexgo.Int64(12))
|
res, err := s.Sessions.GetSessionHistory(ctx, plexgo.String("viewedAt:desc"), plexgo.Int64(1), &operations.QueryParamFilter{}, plexgo.Int64(12))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -138,22 +130,18 @@ Get Transcode Sessions
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Sessions.GetTranscodeSessions(ctx)
|
res, err := s.Sessions.GetTranscodeSessions(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -193,22 +181,18 @@ Stop a Transcode Session
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Sessions.StopTranscodeSession(ctx, "zz7llzqlx8w9vnrsbnwhbmep")
|
res, err := s.Sessions.StopTranscodeSession(ctx, "zz7llzqlx8w9vnrsbnwhbmep")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -22,22 +22,18 @@ This will return the media statistics for the server
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Statistics.GetStatistics(ctx, plexgo.Int64(4))
|
res, err := s.Statistics.GetStatistics(ctx, plexgo.Int64(4))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -78,22 +74,18 @@ This will return the resources for the server
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Statistics.GetResourcesStatistics(ctx, plexgo.Int64(4))
|
res, err := s.Statistics.GetResourcesStatistics(ctx, plexgo.Int64(4))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -134,22 +126,18 @@ This will return the bandwidth statistics for the server
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Statistics.GetBandwidthStatistics(ctx, plexgo.Int64(4))
|
res, err := s.Statistics.GetBandwidthStatistics(ctx, plexgo.Int64(4))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -23,22 +23,18 @@ Querying status of updates
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Updater.GetUpdateStatus(ctx)
|
res, err := s.Updater.GetUpdateStatus(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -78,23 +74,19 @@ Checking for updates
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Updater.CheckForUpdates(ctx, operations.DownloadOne.ToPointer())
|
res, err := s.Updater.CheckForUpdates(ctx, operations.DownloadOne.ToPointer())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -136,23 +128,19 @@ Note that these two parameters are effectively mutually exclusive. The `tonight`
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Updater.ApplyUpdates(ctx, operations.TonightOne.ToPointer(), operations.SkipOne.ToPointer())
|
res, err := s.Updater.ApplyUpdates(ctx, operations.TonightOne.ToPointer(), operations.SkipOne.ToPointer())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
@@ -21,23 +21,19 @@ Get the timeline for a media item
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Video.GetTimeline(ctx, operations.GetTimelineRequest{
|
res, err := s.Video.GetTimeline(ctx, operations.GetTimelineRequest{
|
||||||
RatingKey: 23409,
|
RatingKey: 23409,
|
||||||
Key: "/library/metadata/23409",
|
Key: "/library/metadata/23409",
|
||||||
@@ -89,23 +85,19 @@ Begin a Universal Transcode Session
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Video.StartUniversalTranscode(ctx, operations.StartUniversalTranscodeRequest{
|
res, err := s.Video.StartUniversalTranscode(ctx, operations.StartUniversalTranscodeRequest{
|
||||||
HasMDE: 1,
|
HasMDE: 1,
|
||||||
Path: "/library/metadata/23409",
|
Path: "/library/metadata/23409",
|
||||||
|
|||||||
@@ -20,23 +20,19 @@ Get User Watchlist
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"github.com/LukeHagar/plexgo"
|
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/LukeHagar/plexgo"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
s := plexgo.New(
|
s := plexgo.New(
|
||||||
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
|
||||||
plexgo.WithClientID("3381b62b-9ab7-4e37-827b-203e9809eb58"),
|
|
||||||
plexgo.WithClientName("Plex for Roku"),
|
|
||||||
plexgo.WithClientVersion("2.4.1"),
|
|
||||||
plexgo.WithPlatform("Roku"),
|
|
||||||
plexgo.WithDeviceNickname("Roku 3"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
res, err := s.Watchlist.GetWatchList(ctx, operations.GetWatchListRequest{
|
res, err := s.Watchlist.GetWatchList(ctx, operations.GetWatchListRequest{
|
||||||
Filter: operations.FilterAvailable,
|
Filter: operations.FilterAvailable,
|
||||||
XPlexContainerStart: plexgo.Int(0),
|
XPlexContainerStart: plexgo.Int(0),
|
||||||
|
|||||||
5
go.mod
5
go.mod
@@ -2,7 +2,4 @@ module github.com/LukeHagar/plexgo
|
|||||||
|
|
||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require (
|
require github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05
|
||||||
github.com/cenkalti/backoff/v4 v4.2.0
|
|
||||||
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05
|
|
||||||
)
|
|
||||||
|
|||||||
2
go.sum
2
go.sum
@@ -1,4 +1,2 @@
|
|||||||
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
|
|
||||||
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
|
||||||
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05 h1:S92OBrGuLLZsyM5ybUzgc/mPjIYk2AZqufieooe98uw=
|
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05 h1:S92OBrGuLLZsyM5ybUzgc/mPjIYk2AZqufieooe98uw=
|
||||||
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05/go.mod h1:M9R1FoZ3y//hwwnJtO51ypFGwm8ZfpxPT/ZLtO1mcgQ=
|
github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05/go.mod h1:M9R1FoZ3y//hwwnJtO51ypFGwm8ZfpxPT/ZLtO1mcgQ=
|
||||||
|
|||||||
71
hubs.go
71
hubs.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,12 @@ func (s *Hubs) GetGlobalHubs(ctx context.Context, count *float64, onlyTransient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/hubs")
|
opURL, err := url.JoinPath(baseURL, "/hubs")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -85,6 +90,10 @@ func (s *Hubs) GetGlobalHubs(ctx context.Context, count *float64, onlyTransient
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -115,7 +124,11 @@ func (s *Hubs) GetGlobalHubs(ctx context.Context, count *float64, onlyTransient
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -243,7 +256,11 @@ func (s *Hubs) GetGlobalHubs(ctx context.Context, count *float64, onlyTransient
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -284,7 +301,12 @@ func (s *Hubs) GetRecentlyAdded(ctx context.Context, request operations.GetRecen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/hubs/home/recentlyAdded")
|
opURL, err := url.JoinPath(baseURL, "/hubs/home/recentlyAdded")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -316,6 +338,10 @@ func (s *Hubs) GetRecentlyAdded(ctx context.Context, request operations.GetRecen
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -346,7 +372,11 @@ func (s *Hubs) GetRecentlyAdded(ctx context.Context, request operations.GetRecen
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -434,7 +464,11 @@ func (s *Hubs) GetRecentlyAdded(ctx context.Context, request operations.GetRecen
|
|||||||
case httpRes.StatusCode == 401:
|
case httpRes.StatusCode == 401:
|
||||||
fallthrough
|
fallthrough
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -481,7 +515,12 @@ func (s *Hubs) GetLibraryHubs(ctx context.Context, sectionID float64, count *flo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/hubs/sections/{sectionId}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/hubs/sections/{sectionId}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -513,6 +552,10 @@ func (s *Hubs) GetLibraryHubs(ctx context.Context, sectionID float64, count *flo
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -543,7 +586,11 @@ func (s *Hubs) GetLibraryHubs(ctx context.Context, sectionID float64, count *flo
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -671,7 +718,11 @@ func (s *Hubs) GetLibraryHubs(ctx context.Context, sectionID float64, count *flo
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
||||||
|
|
||||||
package globals
|
|
||||||
|
|
||||||
type Globals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
|
||||||
// The version of the client application.
|
|
||||||
ClientVersion *string `header:"style=simple,explode=false,name=X-Plex-Version"`
|
|
||||||
// The platform of the client application.
|
|
||||||
Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
|
|
||||||
// A relatively friendly name for the client device
|
|
||||||
DeviceNickname *string `header:"style=simple,explode=false,name=X-Plex-Device"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Globals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Globals) GetClientName() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientName
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Globals) GetClientVersion() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Globals) GetPlatform() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.Platform
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Globals) GetDeviceNickname() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.DeviceNickname
|
|
||||||
}
|
|
||||||
16
internal/utils/env.go
Normal file
16
internal/utils/env.go
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
||||||
|
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetEnv returns the value of the environment variable named by the key or the defaultValue if the environment variable is not set.
|
||||||
|
func GetEnv(name, defaultValue string) string {
|
||||||
|
value := os.Getenv(name)
|
||||||
|
if value == "" {
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
}
|
||||||
@@ -214,7 +214,11 @@ func populateDeepObjectParamsStruct(qsValues url.Values, priorScope string, stru
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
scope := priorScope + "[" + qpTag.ParamName + "]"
|
scope := priorScope
|
||||||
|
|
||||||
|
if !qpTag.Inline {
|
||||||
|
scope = priorScope + "[" + qpTag.ParamName + "]"
|
||||||
|
}
|
||||||
|
|
||||||
switch fieldValue.Kind() {
|
switch fieldValue.Kind() {
|
||||||
case reflect.Array, reflect.Slice:
|
case reflect.Array, reflect.Slice:
|
||||||
@@ -252,6 +256,13 @@ type paramTag struct {
|
|||||||
Explode bool
|
Explode bool
|
||||||
ParamName string
|
ParamName string
|
||||||
Serialization string
|
Serialization string
|
||||||
|
|
||||||
|
// Inline is a special case for union/oneOf. When a wrapper struct type is
|
||||||
|
// used, each union/oneOf value field should be inlined (e.g. not appended
|
||||||
|
// in deepObject style with the name) as if the value was directly on the
|
||||||
|
// parent struct field. Without this annotation, the value would not be
|
||||||
|
// encoded by downstream logic that requires the struct field tag.
|
||||||
|
Inline bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseQueryParamTag(field reflect.StructField) *paramTag {
|
func parseQueryParamTag(field reflect.StructField) *paramTag {
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ func encodeMultipartFormData(w io.Writer, data interface{}) (string, error) {
|
|||||||
|
|
||||||
tag := parseMultipartFormTag(field)
|
tag := parseMultipartFormTag(field)
|
||||||
if tag.File {
|
if tag.File {
|
||||||
if err := encodeMultipartFormDataFile(writer, fieldType, valType); err != nil {
|
if err := encodeMultipartFormDataFile(writer, tag.Name, fieldType, valType); err != nil {
|
||||||
writer.Close()
|
writer.Close()
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@@ -211,12 +211,11 @@ func encodeMultipartFormData(w io.Writer, data interface{}) (string, error) {
|
|||||||
return writer.FormDataContentType(), nil
|
return writer.FormDataContentType(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeMultipartFormDataFile(w *multipart.Writer, fieldType reflect.Type, valType reflect.Value) error {
|
func encodeMultipartFormDataFile(w *multipart.Writer, fieldName string, fieldType reflect.Type, valType reflect.Value) error {
|
||||||
if fieldType.Kind() != reflect.Struct {
|
if fieldType.Kind() != reflect.Struct {
|
||||||
return fmt.Errorf("invalid type %s for multipart/form-data file", valType.Type())
|
return fmt.Errorf("invalid type %s for multipart/form-data file", valType.Type())
|
||||||
}
|
}
|
||||||
|
|
||||||
var fieldName string
|
|
||||||
var fileName string
|
var fileName string
|
||||||
var reader io.Reader
|
var reader io.Reader
|
||||||
|
|
||||||
@@ -236,12 +235,11 @@ func encodeMultipartFormDataFile(w *multipart.Writer, fieldType reflect.Type, va
|
|||||||
reader = val.Interface().(io.Reader)
|
reader = val.Interface().(io.Reader)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fieldName = tag.Name
|
|
||||||
fileName = val.String()
|
fileName = val.String()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if fieldName == "" || fileName == "" || reader == nil {
|
if fileName == "" || reader == nil {
|
||||||
return fmt.Errorf("invalid multipart/form-data file")
|
return fmt.Errorf("invalid multipart/form-data file")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/LukeHagar/plexgo/retry"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"math"
|
||||||
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -15,8 +16,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var errRequestFailed = errors.New("request failed")
|
|
||||||
|
|
||||||
// Deprecated: Use retry.BackoffStrategy instead.
|
// Deprecated: Use retry.BackoffStrategy instead.
|
||||||
type BackoffStrategy = retry.BackoffStrategy
|
type BackoffStrategy = retry.BackoffStrategy
|
||||||
|
|
||||||
@@ -28,34 +27,27 @@ type Retries struct {
|
|||||||
StatusCodes []string
|
StatusCodes []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func Retry(ctx context.Context, r Retries, action func() (*http.Response, error)) (*http.Response, error) {
|
func Retry(ctx context.Context, r Retries, operation func() (*http.Response, error)) (*http.Response, error) {
|
||||||
switch r.Config.Strategy {
|
switch r.Config.Strategy {
|
||||||
case "backoff":
|
case "backoff":
|
||||||
if r.Config.Backoff == nil {
|
if r.Config.Backoff == nil {
|
||||||
return action()
|
return operation()
|
||||||
}
|
}
|
||||||
|
|
||||||
config := backoff.NewExponentialBackOff()
|
|
||||||
config.InitialInterval = time.Duration(r.Config.Backoff.InitialInterval) * time.Millisecond
|
|
||||||
config.MaxInterval = time.Duration(r.Config.Backoff.MaxInterval) * time.Millisecond
|
|
||||||
config.Multiplier = r.Config.Backoff.Exponent
|
|
||||||
config.MaxElapsedTime = time.Duration(r.Config.Backoff.MaxElapsedTime) * time.Millisecond
|
|
||||||
config.Reset()
|
|
||||||
|
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
|
|
||||||
err := backoff.Retry(func() error {
|
err := retryWithBackoff(ctx, r.Config.Backoff, func() error {
|
||||||
if resp != nil {
|
if resp != nil {
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return backoff.Permanent(ctx.Err())
|
return retry.Permanent(ctx.Err())
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := action()
|
res, err := operation()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
urlError := new(url.Error)
|
urlError := new(url.Error)
|
||||||
if errors.As(err, &urlError) {
|
if errors.As(err, &urlError) {
|
||||||
@@ -64,7 +56,7 @@ func Retry(ctx context.Context, r Retries, action func() (*http.Response, error)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return backoff.Permanent(err)
|
return retry.Permanent(err)
|
||||||
}
|
}
|
||||||
resp = res
|
resp = res
|
||||||
if res == nil {
|
if res == nil {
|
||||||
@@ -81,7 +73,7 @@ func Retry(ctx context.Context, r Retries, action func() (*http.Response, error)
|
|||||||
s := res.StatusCode / 100
|
s := res.StatusCode / 100
|
||||||
|
|
||||||
if s >= codeRange && s < codeRange+1 {
|
if s >= codeRange && s < codeRange+1 {
|
||||||
return errRequestFailed
|
return retry.TemporaryFromResponse("request failed", res)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parsedCode, err := strconv.Atoi(code)
|
parsedCode, err := strconv.Atoi(code)
|
||||||
@@ -90,7 +82,7 @@ func Retry(ctx context.Context, r Retries, action func() (*http.Response, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if res.StatusCode == parsedCode {
|
if res.StatusCode == parsedCode {
|
||||||
return errRequestFailed
|
return retry.TemporaryFromResponse("request failed", res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,13 +90,131 @@ func Retry(ctx context.Context, r Retries, action func() (*http.Response, error)
|
|||||||
resp = res
|
resp = res
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}, config)
|
})
|
||||||
if err != nil && !errors.Is(err, errRequestFailed) {
|
|
||||||
|
var tempErr *retry.TemporaryError
|
||||||
|
if err != nil && !errors.As(err, &tempErr) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
default:
|
default:
|
||||||
return action()
|
return operation()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func retryWithBackoff(ctx context.Context, s *retry.BackoffStrategy, operation func() error) error {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
next time.Duration
|
||||||
|
attempt int
|
||||||
|
start = time.Now()
|
||||||
|
maxElapsedTime = time.Duration(s.MaxElapsedTime) * time.Millisecond
|
||||||
|
)
|
||||||
|
|
||||||
|
timer := &defaultTimer{}
|
||||||
|
defer func() {
|
||||||
|
timer.Stop()
|
||||||
|
}()
|
||||||
|
|
||||||
|
for {
|
||||||
|
err = operation()
|
||||||
|
if err == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var permanent *retry.PermanentError
|
||||||
|
if errors.As(err, &permanent) {
|
||||||
|
return permanent.Unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
if time.Since(start) >= maxElapsedTime {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var temporary *retry.TemporaryError
|
||||||
|
if errors.As(err, &temporary) {
|
||||||
|
next = temporary.RetryAfter()
|
||||||
|
}
|
||||||
|
|
||||||
|
if next <= 0 {
|
||||||
|
next = nextInterval(s, attempt)
|
||||||
|
}
|
||||||
|
|
||||||
|
timer.Start(next)
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
case <-timer.C():
|
||||||
|
}
|
||||||
|
|
||||||
|
attempt += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Timer interface {
|
||||||
|
Start(duration time.Duration)
|
||||||
|
Stop()
|
||||||
|
C() <-chan time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// defaultTimer implements Timer interface using time.Timer
|
||||||
|
type defaultTimer struct {
|
||||||
|
timer *time.Timer
|
||||||
|
}
|
||||||
|
|
||||||
|
// C returns the timers channel which receives the current time when the timer fires.
|
||||||
|
func (t *defaultTimer) C() <-chan time.Time {
|
||||||
|
return t.timer.C
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start starts the timer to fire after the given duration
|
||||||
|
func (t *defaultTimer) Start(duration time.Duration) {
|
||||||
|
if t.timer == nil {
|
||||||
|
t.timer = time.NewTimer(duration)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !t.timer.Stop() {
|
||||||
|
select {
|
||||||
|
case <-t.timer.C:
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
t.timer.Reset(duration)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop is called when the timer is not used anymore and resources may be freed.
|
||||||
|
func (t *defaultTimer) Stop() {
|
||||||
|
if t.timer != nil {
|
||||||
|
t.timer.Stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func nextInterval(s *retry.BackoffStrategy, attempt int) time.Duration {
|
||||||
|
initialInterval := float64(time.Duration(s.InitialInterval) * time.Millisecond)
|
||||||
|
maxInterval := float64(time.Duration(s.MaxInterval) * time.Millisecond)
|
||||||
|
exponent := s.Exponent
|
||||||
|
jitterFactor := float64(0.25)
|
||||||
|
|
||||||
|
interval := initialInterval * math.Pow(float64(attempt+1), exponent)
|
||||||
|
|
||||||
|
jitter := rand.Float64() * jitterFactor * interval
|
||||||
|
if rand.Float64() < 0.5 {
|
||||||
|
jitter = -1 * jitter
|
||||||
|
}
|
||||||
|
|
||||||
|
interval = interval + jitter
|
||||||
|
|
||||||
|
if interval <= 0 {
|
||||||
|
interval = initialInterval
|
||||||
|
}
|
||||||
|
|
||||||
|
if interval > maxInterval {
|
||||||
|
interval = maxInterval
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Duration(interval)
|
||||||
|
}
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ func parseStructTag(tagKey string, field reflect.StructField) map[string]string
|
|||||||
|
|
||||||
func parseParamTag(tagKey string, field reflect.StructField, defaultStyle string, defaultExplode bool) *paramTag {
|
func parseParamTag(tagKey string, field reflect.StructField, defaultStyle string, defaultExplode bool) *paramTag {
|
||||||
// example `{tagKey}:"style=simple,explode=false,name=apiID"`
|
// example `{tagKey}:"style=simple,explode=false,name=apiID"`
|
||||||
|
// example `{tagKey}:"inline"`
|
||||||
values := parseStructTag(tagKey, field)
|
values := parseStructTag(tagKey, field)
|
||||||
if values == nil {
|
if values == nil {
|
||||||
return nil
|
return nil
|
||||||
@@ -140,6 +141,8 @@ func parseParamTag(tagKey string, field reflect.StructField, defaultStyle string
|
|||||||
|
|
||||||
for k, v := range values {
|
for k, v := range values {
|
||||||
switch k {
|
switch k {
|
||||||
|
case "inline":
|
||||||
|
tag.Inline = v == "true"
|
||||||
case "style":
|
case "style":
|
||||||
tag.Style = v
|
tag.Style = v
|
||||||
case "explode":
|
case "explode":
|
||||||
|
|||||||
310
library.go
310
library.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,12 @@ func (s *Library) GetFileHash(ctx context.Context, url_ string, type_ *float64,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/hashes")
|
opURL, err := url.JoinPath(baseURL, "/library/hashes")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -85,6 +90,10 @@ func (s *Library) GetFileHash(ctx context.Context, url_ string, type_ *float64,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -115,7 +124,11 @@ func (s *Library) GetFileHash(ctx context.Context, url_ string, type_ *float64,
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -223,7 +236,11 @@ func (s *Library) GetFileHash(ctx context.Context, url_ string, type_ *float64,
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -264,7 +281,12 @@ func (s *Library) GetRecentlyAddedLibrary(ctx context.Context, request operation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/recentlyAdded")
|
opURL, err := url.JoinPath(baseURL, "/library/recentlyAdded")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -296,6 +318,10 @@ func (s *Library) GetRecentlyAddedLibrary(ctx context.Context, request operation
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -326,7 +352,11 @@ func (s *Library) GetRecentlyAddedLibrary(ctx context.Context, request operation
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -454,7 +484,11 @@ func (s *Library) GetRecentlyAddedLibrary(ctx context.Context, request operation
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -500,7 +534,12 @@ func (s *Library) GetAllLibraries(ctx context.Context, opts ...operations.Option
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/sections")
|
opURL, err := url.JoinPath(baseURL, "/library/sections")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -528,6 +567,10 @@ func (s *Library) GetAllLibraries(ctx context.Context, opts ...operations.Option
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -558,7 +601,11 @@ func (s *Library) GetAllLibraries(ctx context.Context, opts ...operations.Option
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -686,7 +733,11 @@ func (s *Library) GetAllLibraries(ctx context.Context, opts ...operations.Option
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -770,7 +821,12 @@ func (s *Library) GetLibraryDetails(ctx context.Context, sectionKey int, include
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -802,6 +858,10 @@ func (s *Library) GetLibraryDetails(ctx context.Context, sectionKey int, include
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -832,7 +892,11 @@ func (s *Library) GetLibraryDetails(ctx context.Context, sectionKey int, include
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -960,7 +1024,11 @@ func (s *Library) GetLibraryDetails(ctx context.Context, sectionKey int, include
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1005,7 +1073,12 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionKey int, opts ...ope
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1033,6 +1106,10 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionKey int, opts ...ope
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1063,7 +1140,11 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionKey int, opts ...ope
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1171,7 +1252,11 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionKey int, opts ...ope
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1211,6 +1296,7 @@ func (s *Library) DeleteLibrary(ctx context.Context, sectionKey int, opts ...ope
|
|||||||
// - `resolution`: Items categorized by resolution.
|
// - `resolution`: Items categorized by resolution.
|
||||||
// - `firstCharacter`: Items categorized by the first letter.
|
// - `firstCharacter`: Items categorized by the first letter.
|
||||||
// - `folder`: Items categorized by folder.
|
// - `folder`: Items categorized by folder.
|
||||||
|
// - `albums`: Items categorized by album.
|
||||||
func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLibraryItemsRequest, opts ...operations.Option) (*operations.GetLibraryItemsResponse, error) {
|
func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLibraryItemsRequest, opts ...operations.Option) (*operations.GetLibraryItemsResponse, error) {
|
||||||
hookCtx := hooks.HookContext{
|
hookCtx := hooks.HookContext{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
@@ -1231,7 +1317,12 @@ func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLib
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/{tag}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/{tag}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1263,6 +1354,10 @@ func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLib
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1293,7 +1388,11 @@ func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLib
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1421,7 +1520,11 @@ func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLib
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1467,7 +1570,12 @@ func (s *Library) GetRefreshLibraryMetadata(ctx context.Context, sectionKey int,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/refresh", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/refresh", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1499,6 +1607,10 @@ func (s *Library) GetRefreshLibraryMetadata(ctx context.Context, sectionKey int,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1529,7 +1641,11 @@ func (s *Library) GetRefreshLibraryMetadata(ctx context.Context, sectionKey int,
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1637,7 +1753,11 @@ func (s *Library) GetRefreshLibraryMetadata(ctx context.Context, sectionKey int,
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1700,7 +1820,12 @@ func (s *Library) GetSearchLibrary(ctx context.Context, sectionKey int, type_ op
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/search", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/search", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1732,6 +1857,10 @@ func (s *Library) GetSearchLibrary(ctx context.Context, sectionKey int, type_ op
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1762,7 +1891,11 @@ func (s *Library) GetSearchLibrary(ctx context.Context, sectionKey int, type_ op
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1890,7 +2023,11 @@ func (s *Library) GetSearchLibrary(ctx context.Context, sectionKey int, type_ op
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1919,10 +2056,6 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
SecuritySource: s.sdkConfiguration.Security,
|
SecuritySource: s.sdkConfiguration.Security,
|
||||||
}
|
}
|
||||||
|
|
||||||
globals := operations.GetSearchAllLibrariesGlobals{
|
|
||||||
ClientID: s.sdkConfiguration.Globals.ClientID,
|
|
||||||
}
|
|
||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
@@ -1935,7 +2068,12 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/search")
|
opURL, err := url.JoinPath(baseURL, "/library/search")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1959,9 +2097,9 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
utils.PopulateHeaders(ctx, req, request, globals)
|
utils.PopulateHeaders(ctx, req, request, nil)
|
||||||
|
|
||||||
if err := utils.PopulateQueryParams(ctx, req, request, globals); err != nil {
|
if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil {
|
||||||
return nil, fmt.Errorf("error populating query params: %w", err)
|
return nil, fmt.Errorf("error populating query params: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1969,6 +2107,10 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1999,7 +2141,11 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2127,7 +2273,11 @@ func (s *Library) GetSearchAllLibraries(ctx context.Context, request operations.
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2172,7 +2322,12 @@ func (s *Library) GetMetaDataByRatingKey(ctx context.Context, ratingKey int64, o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -2200,6 +2355,10 @@ func (s *Library) GetMetaDataByRatingKey(ctx context.Context, ratingKey int64, o
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -2230,7 +2389,11 @@ func (s *Library) GetMetaDataByRatingKey(ctx context.Context, ratingKey int64, o
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2358,7 +2521,11 @@ func (s *Library) GetMetaDataByRatingKey(ctx context.Context, ratingKey int64, o
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2404,7 +2571,12 @@ func (s *Library) GetMetadataChildren(ctx context.Context, ratingKey float64, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/children", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/children", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -2436,6 +2608,10 @@ func (s *Library) GetMetadataChildren(ctx context.Context, ratingKey float64, in
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -2466,7 +2642,11 @@ func (s *Library) GetMetadataChildren(ctx context.Context, ratingKey float64, in
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2594,7 +2774,11 @@ func (s *Library) GetMetadataChildren(ctx context.Context, ratingKey float64, in
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2640,7 +2824,12 @@ func (s *Library) GetTopWatchedContent(ctx context.Context, type_ operations.Get
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/all/top")
|
opURL, err := url.JoinPath(baseURL, "/library/all/top")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -2672,6 +2861,10 @@ func (s *Library) GetTopWatchedContent(ctx context.Context, type_ operations.Get
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -2702,7 +2895,11 @@ func (s *Library) GetTopWatchedContent(ctx context.Context, type_ operations.Get
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2830,7 +3027,11 @@ func (s *Library) GetTopWatchedContent(ctx context.Context, type_ operations.Get
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2871,7 +3072,12 @@ func (s *Library) GetOnDeck(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/library/onDeck")
|
opURL, err := url.JoinPath(baseURL, "/library/onDeck")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -2899,6 +3105,10 @@ func (s *Library) GetOnDeck(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -2929,7 +3139,11 @@ func (s *Library) GetOnDeck(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -3057,7 +3271,11 @@ func (s *Library) GetOnDeck(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
73
log.go
73
log.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -54,7 +54,12 @@ func (s *Log) LogLine(ctx context.Context, level operations.Level, message strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/log")
|
opURL, err := url.JoinPath(baseURL, "/log")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -86,6 +91,10 @@ func (s *Log) LogLine(ctx context.Context, level operations.Level, message strin
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -116,7 +125,11 @@ func (s *Log) LogLine(ctx context.Context, level operations.Level, message strin
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -224,7 +237,11 @@ func (s *Log) LogLine(ctx context.Context, level operations.Level, message strin
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -285,7 +302,12 @@ func (s *Log) LogMultiLine(ctx context.Context, request string, opts ...operatio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/log")
|
opURL, err := url.JoinPath(baseURL, "/log")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -313,12 +335,18 @@ func (s *Log) LogMultiLine(ctx context.Context, request string, opts ...operatio
|
|||||||
}
|
}
|
||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
if reqContentType != "" {
|
||||||
req.Header.Set("Content-Type", reqContentType)
|
req.Header.Set("Content-Type", reqContentType)
|
||||||
|
}
|
||||||
|
|
||||||
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -349,7 +377,11 @@ func (s *Log) LogMultiLine(ctx context.Context, request string, opts ...operatio
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -457,7 +489,11 @@ func (s *Log) LogMultiLine(ctx context.Context, request string, opts ...operatio
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -498,7 +534,12 @@ func (s *Log) EnablePaperTrail(ctx context.Context, opts ...operations.Option) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/log/networked")
|
opURL, err := url.JoinPath(baseURL, "/log/networked")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -526,6 +567,10 @@ func (s *Log) EnablePaperTrail(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -556,7 +601,11 @@ func (s *Log) EnablePaperTrail(ctx context.Context, opts ...operations.Option) (
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -666,7 +715,11 @@ func (s *Log) EnablePaperTrail(ctx context.Context, opts ...operations.Option) (
|
|||||||
case httpRes.StatusCode == 403:
|
case httpRes.StatusCode == 403:
|
||||||
fallthrough
|
fallthrough
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
117
media.go
117
media.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -52,7 +52,12 @@ func (s *Media) MarkPlayed(ctx context.Context, key float64, opts ...operations.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/:/scrobble")
|
opURL, err := url.JoinPath(baseURL, "/:/scrobble")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -84,6 +89,10 @@ func (s *Media) MarkPlayed(ctx context.Context, key float64, opts ...operations.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -114,7 +123,11 @@ func (s *Media) MarkPlayed(ctx context.Context, key float64, opts ...operations.
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -222,7 +235,11 @@ func (s *Media) MarkPlayed(ctx context.Context, key float64, opts ...operations.
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -267,7 +284,12 @@ func (s *Media) MarkUnplayed(ctx context.Context, key float64, opts ...operation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/:/unscrobble")
|
opURL, err := url.JoinPath(baseURL, "/:/unscrobble")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -299,6 +321,10 @@ func (s *Media) MarkUnplayed(ctx context.Context, key float64, opts ...operation
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -329,7 +355,11 @@ func (s *Media) MarkUnplayed(ctx context.Context, key float64, opts ...operation
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -437,7 +467,11 @@ func (s *Media) MarkUnplayed(ctx context.Context, key float64, opts ...operation
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -484,7 +518,12 @@ func (s *Media) UpdatePlayProgress(ctx context.Context, key string, time float64
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/:/progress")
|
opURL, err := url.JoinPath(baseURL, "/:/progress")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -516,6 +555,10 @@ func (s *Media) UpdatePlayProgress(ctx context.Context, key string, time float64
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -546,7 +589,11 @@ func (s *Media) UpdatePlayProgress(ctx context.Context, key string, time float64
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -654,7 +701,11 @@ func (s *Media) UpdatePlayProgress(ctx context.Context, key string, time float64
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -695,7 +746,12 @@ func (s *Media) GetBannerImage(ctx context.Context, request operations.GetBanner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/banner", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/banner", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -729,6 +785,10 @@ func (s *Media) GetBannerImage(ctx context.Context, request operations.GetBanner
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -759,7 +819,11 @@ func (s *Media) GetBannerImage(ctx context.Context, request operations.GetBanner
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -881,7 +945,11 @@ func (s *Media) GetBannerImage(ctx context.Context, request operations.GetBanner
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -922,7 +990,12 @@ func (s *Media) GetThumbImage(ctx context.Context, request operations.GetThumbIm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/thumb", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/library/metadata/{ratingKey}/thumb", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -956,6 +1029,10 @@ func (s *Media) GetThumbImage(ctx context.Context, request operations.GetThumbIm
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -986,7 +1063,11 @@ func (s *Media) GetThumbImage(ctx context.Context, request operations.GetThumbIm
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1108,7 +1189,11 @@ func (s *Media) GetThumbImage(ctx context.Context, request operations.GetThumbIm
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ type GetBandwidthStatisticsRequest struct {
|
|||||||
// The timespan to retrieve statistics for
|
// The timespan to retrieve statistics for
|
||||||
// the exact meaning of this parameter is not known
|
// the exact meaning of this parameter is not known
|
||||||
//
|
//
|
||||||
Timespan *int64 `queryParam:"style=form,explode=true,name=Timespan"`
|
Timespan *int64 `queryParam:"style=form,explode=true,name=timespan"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetBandwidthStatisticsRequest) GetTimespan() *int64 {
|
func (o *GetBandwidthStatisticsRequest) GetTimespan() *int64 {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ const (
|
|||||||
TagResolution Tag = "resolution"
|
TagResolution Tag = "resolution"
|
||||||
TagFirstCharacter Tag = "firstCharacter"
|
TagFirstCharacter Tag = "firstCharacter"
|
||||||
TagFolder Tag = "folder"
|
TagFolder Tag = "folder"
|
||||||
|
TagAlbums Tag = "albums"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e Tag) ToPointer() *Tag {
|
func (e Tag) ToPointer() *Tag {
|
||||||
@@ -81,6 +82,8 @@ func (e *Tag) UnmarshalJSON(data []byte) error {
|
|||||||
case "firstCharacter":
|
case "firstCharacter":
|
||||||
fallthrough
|
fallthrough
|
||||||
case "folder":
|
case "folder":
|
||||||
|
fallthrough
|
||||||
|
case "albums":
|
||||||
*e = Tag(v)
|
*e = Tag(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
@@ -129,6 +132,8 @@ const (
|
|||||||
GetLibraryItemsQueryParamTypeSeason GetLibraryItemsQueryParamType = 3
|
GetLibraryItemsQueryParamTypeSeason GetLibraryItemsQueryParamType = 3
|
||||||
GetLibraryItemsQueryParamTypeEpisode GetLibraryItemsQueryParamType = 4
|
GetLibraryItemsQueryParamTypeEpisode GetLibraryItemsQueryParamType = 4
|
||||||
GetLibraryItemsQueryParamTypeAudio GetLibraryItemsQueryParamType = 8
|
GetLibraryItemsQueryParamTypeAudio GetLibraryItemsQueryParamType = 8
|
||||||
|
GetLibraryItemsQueryParamTypeAlbum GetLibraryItemsQueryParamType = 9
|
||||||
|
GetLibraryItemsQueryParamTypeTrack GetLibraryItemsQueryParamType = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetLibraryItemsQueryParamType) ToPointer() *GetLibraryItemsQueryParamType {
|
func (e GetLibraryItemsQueryParamType) ToPointer() *GetLibraryItemsQueryParamType {
|
||||||
@@ -149,6 +154,10 @@ func (e *GetLibraryItemsQueryParamType) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = GetLibraryItemsQueryParamType(v)
|
*e = GetLibraryItemsQueryParamType(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
@@ -620,11 +629,13 @@ func (e *GetLibraryItemsLibraryType) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetLibraryItemsFlattenSeasons - Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
type GetLibraryItemsFlattenSeasons string
|
type GetLibraryItemsFlattenSeasons string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GetLibraryItemsFlattenSeasonsFalse GetLibraryItemsFlattenSeasons = "0"
|
GetLibraryItemsFlattenSeasonsLibraryDefault GetLibraryItemsFlattenSeasons = "-1"
|
||||||
GetLibraryItemsFlattenSeasonsTrue GetLibraryItemsFlattenSeasons = "1"
|
GetLibraryItemsFlattenSeasonsHide GetLibraryItemsFlattenSeasons = "0"
|
||||||
|
GetLibraryItemsFlattenSeasonsShow GetLibraryItemsFlattenSeasons = "1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetLibraryItemsFlattenSeasons) ToPointer() *GetLibraryItemsFlattenSeasons {
|
func (e GetLibraryItemsFlattenSeasons) ToPointer() *GetLibraryItemsFlattenSeasons {
|
||||||
@@ -636,6 +647,8 @@ func (e *GetLibraryItemsFlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
switch v {
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
case "0":
|
case "0":
|
||||||
fallthrough
|
fallthrough
|
||||||
case "1":
|
case "1":
|
||||||
@@ -646,7 +659,64 @@ func (e *GetLibraryItemsFlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetLibraryItemsShowOrdering - Setting that indicates the episode ordering for the show
|
// GetLibraryItemsEpisodeSort - Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
type GetLibraryItemsEpisodeSort string
|
||||||
|
|
||||||
|
const (
|
||||||
|
GetLibraryItemsEpisodeSortLibraryDefault GetLibraryItemsEpisodeSort = "-1"
|
||||||
|
GetLibraryItemsEpisodeSortOldestFirst GetLibraryItemsEpisodeSort = "0"
|
||||||
|
GetLibraryItemsEpisodeSortNewestFirst GetLibraryItemsEpisodeSort = "1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e GetLibraryItemsEpisodeSort) ToPointer() *GetLibraryItemsEpisodeSort {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *GetLibraryItemsEpisodeSort) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
fallthrough
|
||||||
|
case "1":
|
||||||
|
*e = GetLibraryItemsEpisodeSort(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for GetLibraryItemsEpisodeSort: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLibraryItemsEnableCreditsMarkerGeneration - Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
type GetLibraryItemsEnableCreditsMarkerGeneration string
|
||||||
|
|
||||||
|
const (
|
||||||
|
GetLibraryItemsEnableCreditsMarkerGenerationLibraryDefault GetLibraryItemsEnableCreditsMarkerGeneration = "-1"
|
||||||
|
GetLibraryItemsEnableCreditsMarkerGenerationDisabled GetLibraryItemsEnableCreditsMarkerGeneration = "0"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e GetLibraryItemsEnableCreditsMarkerGeneration) ToPointer() *GetLibraryItemsEnableCreditsMarkerGeneration {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *GetLibraryItemsEnableCreditsMarkerGeneration) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
*e = GetLibraryItemsEnableCreditsMarkerGeneration(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for GetLibraryItemsEnableCreditsMarkerGeneration: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLibraryItemsShowOrdering - Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -657,9 +727,9 @@ type GetLibraryItemsShowOrdering string
|
|||||||
const (
|
const (
|
||||||
GetLibraryItemsShowOrderingNone GetLibraryItemsShowOrdering = "None"
|
GetLibraryItemsShowOrderingNone GetLibraryItemsShowOrdering = "None"
|
||||||
GetLibraryItemsShowOrderingTmdbAiring GetLibraryItemsShowOrdering = "tmdbAiring"
|
GetLibraryItemsShowOrderingTmdbAiring GetLibraryItemsShowOrdering = "tmdbAiring"
|
||||||
GetLibraryItemsShowOrderingAired GetLibraryItemsShowOrdering = "aired"
|
GetLibraryItemsShowOrderingTvdbAired GetLibraryItemsShowOrdering = "aired"
|
||||||
GetLibraryItemsShowOrderingDvd GetLibraryItemsShowOrdering = "dvd"
|
GetLibraryItemsShowOrderingTvdbDvd GetLibraryItemsShowOrdering = "dvd"
|
||||||
GetLibraryItemsShowOrderingAbsolute GetLibraryItemsShowOrdering = "absolute"
|
GetLibraryItemsShowOrderingTvdbAbsolute GetLibraryItemsShowOrdering = "absolute"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetLibraryItemsShowOrdering) ToPointer() *GetLibraryItemsShowOrdering {
|
func (e GetLibraryItemsShowOrdering) ToPointer() *GetLibraryItemsShowOrdering {
|
||||||
@@ -1643,8 +1713,13 @@ type GetLibraryItemsMetadata struct {
|
|||||||
Year *int `json:"year,omitempty"`
|
Year *int `json:"year,omitempty"`
|
||||||
SeasonCount *int `json:"seasonCount,omitempty"`
|
SeasonCount *int `json:"seasonCount,omitempty"`
|
||||||
Tagline *string `json:"tagline,omitempty"`
|
Tagline *string `json:"tagline,omitempty"`
|
||||||
FlattenSeasons *GetLibraryItemsFlattenSeasons `default:"0" json:"flattenSeasons"`
|
// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
// Setting that indicates the episode ordering for the show
|
FlattenSeasons *GetLibraryItemsFlattenSeasons `json:"flattenSeasons,omitempty"`
|
||||||
|
// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
EpisodeSort *GetLibraryItemsEpisodeSort `json:"episodeSort,omitempty"`
|
||||||
|
// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
EnableCreditsMarkerGeneration *GetLibraryItemsEnableCreditsMarkerGeneration `json:"enableCreditsMarkerGeneration,omitempty"`
|
||||||
|
// Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -1860,6 +1935,20 @@ func (o *GetLibraryItemsMetadata) GetFlattenSeasons() *GetLibraryItemsFlattenSea
|
|||||||
return o.FlattenSeasons
|
return o.FlattenSeasons
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *GetLibraryItemsMetadata) GetEpisodeSort() *GetLibraryItemsEpisodeSort {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EpisodeSort
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetLibraryItemsMetadata) GetEnableCreditsMarkerGeneration() *GetLibraryItemsEnableCreditsMarkerGeneration {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EnableCreditsMarkerGeneration
|
||||||
|
}
|
||||||
|
|
||||||
func (o *GetLibraryItemsMetadata) GetShowOrdering() *GetLibraryItemsShowOrdering {
|
func (o *GetLibraryItemsMetadata) GetShowOrdering() *GetLibraryItemsShowOrdering {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -791,6 +791,16 @@ type GetMetaDataByRatingKeyMetadata struct {
|
|||||||
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
|
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
|
||||||
LibrarySectionID *int `json:"librarySectionID,omitempty"`
|
LibrarySectionID *int `json:"librarySectionID,omitempty"`
|
||||||
LibrarySectionKey *string `json:"librarySectionKey,omitempty"`
|
LibrarySectionKey *string `json:"librarySectionKey,omitempty"`
|
||||||
|
// The name of the album artist for the track when audio, and the name of the TV show for the episode when video.
|
||||||
|
GrandparentTitle *string `json:"grandparentTitle,omitempty"`
|
||||||
|
// The name of the album for the track when audio, and the name of the season for the episode when TV show.
|
||||||
|
ParentTitle *string `json:"parentTitle,omitempty"`
|
||||||
|
// The orginal untranslated name of the media item when non-english.
|
||||||
|
OriginalTitle *string `json:"originalTitle,omitempty"`
|
||||||
|
// The index starting from 0 of this media item in the MetaData array.
|
||||||
|
Index *int64 `json:"index,omitempty"`
|
||||||
|
// The parent index starting from 0 of this media item in the parent MetaData array.
|
||||||
|
ParentIndex *int64 `json:"parentIndex,omitempty"`
|
||||||
ContentRating *string `json:"contentRating,omitempty"`
|
ContentRating *string `json:"contentRating,omitempty"`
|
||||||
Summary *string `json:"summary,omitempty"`
|
Summary *string `json:"summary,omitempty"`
|
||||||
Rating *float64 `json:"rating,omitempty"`
|
Rating *float64 `json:"rating,omitempty"`
|
||||||
@@ -891,6 +901,41 @@ func (o *GetMetaDataByRatingKeyMetadata) GetLibrarySectionKey() *string {
|
|||||||
return o.LibrarySectionKey
|
return o.LibrarySectionKey
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *GetMetaDataByRatingKeyMetadata) GetGrandparentTitle() *string {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.GrandparentTitle
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetMetaDataByRatingKeyMetadata) GetParentTitle() *string {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.ParentTitle
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetMetaDataByRatingKeyMetadata) GetOriginalTitle() *string {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.OriginalTitle
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetMetaDataByRatingKeyMetadata) GetIndex() *int64 {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.Index
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetMetaDataByRatingKeyMetadata) GetParentIndex() *int64 {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.ParentIndex
|
||||||
|
}
|
||||||
|
|
||||||
func (o *GetMetaDataByRatingKeyMetadata) GetContentRating() *string {
|
func (o *GetMetaDataByRatingKeyMetadata) GetContentRating() *string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -12,54 +12,6 @@ var GetPinServerList = []string{
|
|||||||
"https://plex.tv/api/v2",
|
"https://plex.tv/api/v2",
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetPinGlobals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
|
||||||
// A relatively friendly name for the client device
|
|
||||||
DeviceNickname *string `header:"style=simple,explode=false,name=X-Plex-Device"`
|
|
||||||
// The version of the client application.
|
|
||||||
ClientVersion *string `header:"style=simple,explode=false,name=X-Plex-Version"`
|
|
||||||
// The platform of the client application.
|
|
||||||
Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetPinGlobals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetPinGlobals) GetClientName() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientName
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetPinGlobals) GetDeviceNickname() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.DeviceNickname
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetPinGlobals) GetClientVersion() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetPinGlobals) GetPlatform() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.Platform
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetPinRequest struct {
|
type GetPinRequest struct {
|
||||||
// Determines the kind of code returned by the API call
|
// Determines the kind of code returned by the API call
|
||||||
// Strong codes are used for Pin authentication flows
|
// Strong codes are used for Pin authentication flows
|
||||||
@@ -67,7 +19,7 @@ type GetPinRequest struct {
|
|||||||
//
|
//
|
||||||
Strong *bool `default:"false" queryParam:"style=form,explode=true,name=strong"`
|
Strong *bool `default:"false" queryParam:"style=form,explode=true,name=strong"`
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
ClientID string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
||||||
// A relatively friendly name for the client device
|
// A relatively friendly name for the client device
|
||||||
@@ -96,9 +48,9 @@ func (o *GetPinRequest) GetStrong() *bool {
|
|||||||
return o.Strong
|
return o.Strong
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetPinRequest) GetClientID() *string {
|
func (o *GetPinRequest) GetClientID() string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
return o.ClientID
|
return o.ClientID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ const (
|
|||||||
GetPlaylistContentsQueryParamTypeSeason GetPlaylistContentsQueryParamType = 3
|
GetPlaylistContentsQueryParamTypeSeason GetPlaylistContentsQueryParamType = 3
|
||||||
GetPlaylistContentsQueryParamTypeEpisode GetPlaylistContentsQueryParamType = 4
|
GetPlaylistContentsQueryParamTypeEpisode GetPlaylistContentsQueryParamType = 4
|
||||||
GetPlaylistContentsQueryParamTypeAudio GetPlaylistContentsQueryParamType = 8
|
GetPlaylistContentsQueryParamTypeAudio GetPlaylistContentsQueryParamType = 8
|
||||||
|
GetPlaylistContentsQueryParamTypeAlbum GetPlaylistContentsQueryParamType = 9
|
||||||
|
GetPlaylistContentsQueryParamTypeTrack GetPlaylistContentsQueryParamType = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetPlaylistContentsQueryParamType) ToPointer() *GetPlaylistContentsQueryParamType {
|
func (e GetPlaylistContentsQueryParamType) ToPointer() *GetPlaylistContentsQueryParamType {
|
||||||
@@ -44,6 +46,10 @@ func (e *GetPlaylistContentsQueryParamType) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = GetPlaylistContentsQueryParamType(v)
|
*e = GetPlaylistContentsQueryParamType(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ const (
|
|||||||
TypeSeason Type = 3
|
TypeSeason Type = 3
|
||||||
TypeEpisode Type = 4
|
TypeEpisode Type = 4
|
||||||
TypeAudio Type = 8
|
TypeAudio Type = 8
|
||||||
|
TypeAlbum Type = 9
|
||||||
|
TypeTrack Type = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e Type) ToPointer() *Type {
|
func (e Type) ToPointer() *Type {
|
||||||
@@ -44,6 +46,10 @@ func (e *Type) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = Type(v)
|
*e = Type(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
@@ -532,11 +538,13 @@ func (e *GetRecentlyAddedHubsType) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FlattenSeasons - Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
type FlattenSeasons string
|
type FlattenSeasons string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
FlattenSeasonsFalse FlattenSeasons = "0"
|
FlattenSeasonsLibraryDefault FlattenSeasons = "-1"
|
||||||
FlattenSeasonsTrue FlattenSeasons = "1"
|
FlattenSeasonsHide FlattenSeasons = "0"
|
||||||
|
FlattenSeasonsShow FlattenSeasons = "1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e FlattenSeasons) ToPointer() *FlattenSeasons {
|
func (e FlattenSeasons) ToPointer() *FlattenSeasons {
|
||||||
@@ -548,6 +556,8 @@ func (e *FlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
switch v {
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
case "0":
|
case "0":
|
||||||
fallthrough
|
fallthrough
|
||||||
case "1":
|
case "1":
|
||||||
@@ -558,7 +568,64 @@ func (e *FlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ShowOrdering - Setting that indicates the episode ordering for the show
|
// EpisodeSort - Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
type EpisodeSort string
|
||||||
|
|
||||||
|
const (
|
||||||
|
EpisodeSortLibraryDefault EpisodeSort = "-1"
|
||||||
|
EpisodeSortOldestFirst EpisodeSort = "0"
|
||||||
|
EpisodeSortNewestFirst EpisodeSort = "1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e EpisodeSort) ToPointer() *EpisodeSort {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *EpisodeSort) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
fallthrough
|
||||||
|
case "1":
|
||||||
|
*e = EpisodeSort(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for EpisodeSort: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableCreditsMarkerGeneration - Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
type EnableCreditsMarkerGeneration string
|
||||||
|
|
||||||
|
const (
|
||||||
|
EnableCreditsMarkerGenerationLibraryDefault EnableCreditsMarkerGeneration = "-1"
|
||||||
|
EnableCreditsMarkerGenerationDisabled EnableCreditsMarkerGeneration = "0"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e EnableCreditsMarkerGeneration) ToPointer() *EnableCreditsMarkerGeneration {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *EnableCreditsMarkerGeneration) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
*e = EnableCreditsMarkerGeneration(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for EnableCreditsMarkerGeneration: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowOrdering - Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -569,9 +636,9 @@ type ShowOrdering string
|
|||||||
const (
|
const (
|
||||||
ShowOrderingNone ShowOrdering = "None"
|
ShowOrderingNone ShowOrdering = "None"
|
||||||
ShowOrderingTmdbAiring ShowOrdering = "tmdbAiring"
|
ShowOrderingTmdbAiring ShowOrdering = "tmdbAiring"
|
||||||
ShowOrderingAired ShowOrdering = "aired"
|
ShowOrderingTvdbAired ShowOrdering = "aired"
|
||||||
ShowOrderingDvd ShowOrdering = "dvd"
|
ShowOrderingTvdbDvd ShowOrdering = "dvd"
|
||||||
ShowOrderingAbsolute ShowOrdering = "absolute"
|
ShowOrderingTvdbAbsolute ShowOrdering = "absolute"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e ShowOrdering) ToPointer() *ShowOrdering {
|
func (e ShowOrdering) ToPointer() *ShowOrdering {
|
||||||
@@ -1555,8 +1622,13 @@ type GetRecentlyAddedMetadata struct {
|
|||||||
Year *int `json:"year,omitempty"`
|
Year *int `json:"year,omitempty"`
|
||||||
SeasonCount *int `json:"seasonCount,omitempty"`
|
SeasonCount *int `json:"seasonCount,omitempty"`
|
||||||
Tagline *string `json:"tagline,omitempty"`
|
Tagline *string `json:"tagline,omitempty"`
|
||||||
FlattenSeasons *FlattenSeasons `default:"0" json:"flattenSeasons"`
|
// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
// Setting that indicates the episode ordering for the show
|
FlattenSeasons *FlattenSeasons `json:"flattenSeasons,omitempty"`
|
||||||
|
// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
EpisodeSort *EpisodeSort `json:"episodeSort,omitempty"`
|
||||||
|
// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
EnableCreditsMarkerGeneration *EnableCreditsMarkerGeneration `json:"enableCreditsMarkerGeneration,omitempty"`
|
||||||
|
// Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -1772,6 +1844,20 @@ func (o *GetRecentlyAddedMetadata) GetFlattenSeasons() *FlattenSeasons {
|
|||||||
return o.FlattenSeasons
|
return o.FlattenSeasons
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *GetRecentlyAddedMetadata) GetEpisodeSort() *EpisodeSort {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EpisodeSort
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetRecentlyAddedMetadata) GetEnableCreditsMarkerGeneration() *EnableCreditsMarkerGeneration {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EnableCreditsMarkerGeneration
|
||||||
|
}
|
||||||
|
|
||||||
func (o *GetRecentlyAddedMetadata) GetShowOrdering() *ShowOrdering {
|
func (o *GetRecentlyAddedMetadata) GetShowOrdering() *ShowOrdering {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ const (
|
|||||||
QueryParamTypeSeason QueryParamType = 3
|
QueryParamTypeSeason QueryParamType = 3
|
||||||
QueryParamTypeEpisode QueryParamType = 4
|
QueryParamTypeEpisode QueryParamType = 4
|
||||||
QueryParamTypeAudio QueryParamType = 8
|
QueryParamTypeAudio QueryParamType = 8
|
||||||
|
QueryParamTypeAlbum QueryParamType = 9
|
||||||
|
QueryParamTypeTrack QueryParamType = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e QueryParamType) ToPointer() *QueryParamType {
|
func (e QueryParamType) ToPointer() *QueryParamType {
|
||||||
@@ -44,6 +46,10 @@ func (e *QueryParamType) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = QueryParamType(v)
|
*e = QueryParamType(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ type GetResourcesStatisticsRequest struct {
|
|||||||
// The timespan to retrieve statistics for
|
// The timespan to retrieve statistics for
|
||||||
// the exact meaning of this parameter is not known
|
// the exact meaning of this parameter is not known
|
||||||
//
|
//
|
||||||
Timespan *int64 `queryParam:"style=form,explode=true,name=Timespan"`
|
Timespan *int64 `queryParam:"style=form,explode=true,name=timespan"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetResourcesStatisticsRequest) GetTimespan() *int64 {
|
func (o *GetResourcesStatisticsRequest) GetTimespan() *int64 {
|
||||||
|
|||||||
@@ -10,18 +10,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GetSearchAllLibrariesGlobals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetSearchAllLibrariesGlobals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
type SearchTypes string
|
type SearchTypes string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -115,7 +103,7 @@ type GetSearchAllLibrariesRequest struct {
|
|||||||
// The search query term.
|
// The search query term.
|
||||||
Query string `queryParam:"style=form,explode=true,name=query"`
|
Query string `queryParam:"style=form,explode=true,name=query"`
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
ClientID string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
||||||
// Limit the number of results returned.
|
// Limit the number of results returned.
|
||||||
Limit *int64 `queryParam:"style=form,explode=true,name=limit"`
|
Limit *int64 `queryParam:"style=form,explode=true,name=limit"`
|
||||||
// A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
|
// A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
|
||||||
@@ -145,9 +133,9 @@ func (o *GetSearchAllLibrariesRequest) GetQuery() string {
|
|||||||
return o.Query
|
return o.Query
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetSearchAllLibrariesRequest) GetClientID() *string {
|
func (o *GetSearchAllLibrariesRequest) GetClientID() string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
return o.ClientID
|
return o.ClientID
|
||||||
}
|
}
|
||||||
@@ -213,11 +201,13 @@ func (e *GetSearchAllLibrariesType) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetSearchAllLibrariesFlattenSeasons - Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
type GetSearchAllLibrariesFlattenSeasons string
|
type GetSearchAllLibrariesFlattenSeasons string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GetSearchAllLibrariesFlattenSeasonsFalse GetSearchAllLibrariesFlattenSeasons = "0"
|
GetSearchAllLibrariesFlattenSeasonsLibraryDefault GetSearchAllLibrariesFlattenSeasons = "-1"
|
||||||
GetSearchAllLibrariesFlattenSeasonsTrue GetSearchAllLibrariesFlattenSeasons = "1"
|
GetSearchAllLibrariesFlattenSeasonsHide GetSearchAllLibrariesFlattenSeasons = "0"
|
||||||
|
GetSearchAllLibrariesFlattenSeasonsShow GetSearchAllLibrariesFlattenSeasons = "1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetSearchAllLibrariesFlattenSeasons) ToPointer() *GetSearchAllLibrariesFlattenSeasons {
|
func (e GetSearchAllLibrariesFlattenSeasons) ToPointer() *GetSearchAllLibrariesFlattenSeasons {
|
||||||
@@ -229,6 +219,8 @@ func (e *GetSearchAllLibrariesFlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
switch v {
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
case "0":
|
case "0":
|
||||||
fallthrough
|
fallthrough
|
||||||
case "1":
|
case "1":
|
||||||
@@ -239,7 +231,64 @@ func (e *GetSearchAllLibrariesFlattenSeasons) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSearchAllLibrariesShowOrdering - Setting that indicates the episode ordering for the show
|
// GetSearchAllLibrariesEpisodeSort - Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
type GetSearchAllLibrariesEpisodeSort string
|
||||||
|
|
||||||
|
const (
|
||||||
|
GetSearchAllLibrariesEpisodeSortLibraryDefault GetSearchAllLibrariesEpisodeSort = "-1"
|
||||||
|
GetSearchAllLibrariesEpisodeSortOldestFirst GetSearchAllLibrariesEpisodeSort = "0"
|
||||||
|
GetSearchAllLibrariesEpisodeSortNewestFirst GetSearchAllLibrariesEpisodeSort = "1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e GetSearchAllLibrariesEpisodeSort) ToPointer() *GetSearchAllLibrariesEpisodeSort {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *GetSearchAllLibrariesEpisodeSort) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
fallthrough
|
||||||
|
case "1":
|
||||||
|
*e = GetSearchAllLibrariesEpisodeSort(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for GetSearchAllLibrariesEpisodeSort: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSearchAllLibrariesEnableCreditsMarkerGeneration - Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
type GetSearchAllLibrariesEnableCreditsMarkerGeneration string
|
||||||
|
|
||||||
|
const (
|
||||||
|
GetSearchAllLibrariesEnableCreditsMarkerGenerationLibraryDefault GetSearchAllLibrariesEnableCreditsMarkerGeneration = "-1"
|
||||||
|
GetSearchAllLibrariesEnableCreditsMarkerGenerationDisabled GetSearchAllLibrariesEnableCreditsMarkerGeneration = "0"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (e GetSearchAllLibrariesEnableCreditsMarkerGeneration) ToPointer() *GetSearchAllLibrariesEnableCreditsMarkerGeneration {
|
||||||
|
return &e
|
||||||
|
}
|
||||||
|
func (e *GetSearchAllLibrariesEnableCreditsMarkerGeneration) UnmarshalJSON(data []byte) error {
|
||||||
|
var v string
|
||||||
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch v {
|
||||||
|
case "-1":
|
||||||
|
fallthrough
|
||||||
|
case "0":
|
||||||
|
*e = GetSearchAllLibrariesEnableCreditsMarkerGeneration(v)
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("invalid value for GetSearchAllLibrariesEnableCreditsMarkerGeneration: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSearchAllLibrariesShowOrdering - Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -250,9 +299,9 @@ type GetSearchAllLibrariesShowOrdering string
|
|||||||
const (
|
const (
|
||||||
GetSearchAllLibrariesShowOrderingNone GetSearchAllLibrariesShowOrdering = "None"
|
GetSearchAllLibrariesShowOrderingNone GetSearchAllLibrariesShowOrdering = "None"
|
||||||
GetSearchAllLibrariesShowOrderingTmdbAiring GetSearchAllLibrariesShowOrdering = "tmdbAiring"
|
GetSearchAllLibrariesShowOrderingTmdbAiring GetSearchAllLibrariesShowOrdering = "tmdbAiring"
|
||||||
GetSearchAllLibrariesShowOrderingAired GetSearchAllLibrariesShowOrdering = "aired"
|
GetSearchAllLibrariesShowOrderingTvdbAired GetSearchAllLibrariesShowOrdering = "aired"
|
||||||
GetSearchAllLibrariesShowOrderingDvd GetSearchAllLibrariesShowOrdering = "dvd"
|
GetSearchAllLibrariesShowOrderingTvdbDvd GetSearchAllLibrariesShowOrdering = "dvd"
|
||||||
GetSearchAllLibrariesShowOrderingAbsolute GetSearchAllLibrariesShowOrdering = "absolute"
|
GetSearchAllLibrariesShowOrderingTvdbAbsolute GetSearchAllLibrariesShowOrdering = "absolute"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetSearchAllLibrariesShowOrdering) ToPointer() *GetSearchAllLibrariesShowOrdering {
|
func (e GetSearchAllLibrariesShowOrdering) ToPointer() *GetSearchAllLibrariesShowOrdering {
|
||||||
@@ -1236,8 +1285,13 @@ type GetSearchAllLibrariesMetadata struct {
|
|||||||
Year *int `json:"year,omitempty"`
|
Year *int `json:"year,omitempty"`
|
||||||
SeasonCount *int `json:"seasonCount,omitempty"`
|
SeasonCount *int `json:"seasonCount,omitempty"`
|
||||||
Tagline *string `json:"tagline,omitempty"`
|
Tagline *string `json:"tagline,omitempty"`
|
||||||
FlattenSeasons *GetSearchAllLibrariesFlattenSeasons `default:"0" json:"flattenSeasons"`
|
// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
|
||||||
// Setting that indicates the episode ordering for the show
|
FlattenSeasons *GetSearchAllLibrariesFlattenSeasons `json:"flattenSeasons,omitempty"`
|
||||||
|
// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first).
|
||||||
|
EpisodeSort *GetSearchAllLibrariesEpisodeSort `json:"episodeSort,omitempty"`
|
||||||
|
// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled).
|
||||||
|
EnableCreditsMarkerGeneration *GetSearchAllLibrariesEnableCreditsMarkerGeneration `json:"enableCreditsMarkerGeneration,omitempty"`
|
||||||
|
// Setting that indicates the episode ordering for the show.
|
||||||
// None = Library default,
|
// None = Library default,
|
||||||
// tmdbAiring = The Movie Database (Aired),
|
// tmdbAiring = The Movie Database (Aired),
|
||||||
// aired = TheTVDB (Aired),
|
// aired = TheTVDB (Aired),
|
||||||
@@ -1453,6 +1507,20 @@ func (o *GetSearchAllLibrariesMetadata) GetFlattenSeasons() *GetSearchAllLibrari
|
|||||||
return o.FlattenSeasons
|
return o.FlattenSeasons
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *GetSearchAllLibrariesMetadata) GetEpisodeSort() *GetSearchAllLibrariesEpisodeSort {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EpisodeSort
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *GetSearchAllLibrariesMetadata) GetEnableCreditsMarkerGeneration() *GetSearchAllLibrariesEnableCreditsMarkerGeneration {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.EnableCreditsMarkerGeneration
|
||||||
|
}
|
||||||
|
|
||||||
func (o *GetSearchAllLibrariesMetadata) GetShowOrdering() *GetSearchAllLibrariesShowOrdering {
|
func (o *GetSearchAllLibrariesMetadata) GetShowOrdering() *GetSearchAllLibrariesShowOrdering {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ const (
|
|||||||
GetSearchLibraryQueryParamTypeSeason GetSearchLibraryQueryParamType = 3
|
GetSearchLibraryQueryParamTypeSeason GetSearchLibraryQueryParamType = 3
|
||||||
GetSearchLibraryQueryParamTypeEpisode GetSearchLibraryQueryParamType = 4
|
GetSearchLibraryQueryParamTypeEpisode GetSearchLibraryQueryParamType = 4
|
||||||
GetSearchLibraryQueryParamTypeAudio GetSearchLibraryQueryParamType = 8
|
GetSearchLibraryQueryParamTypeAudio GetSearchLibraryQueryParamType = 8
|
||||||
|
GetSearchLibraryQueryParamTypeAlbum GetSearchLibraryQueryParamType = 9
|
||||||
|
GetSearchLibraryQueryParamTypeTrack GetSearchLibraryQueryParamType = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetSearchLibraryQueryParamType) ToPointer() *GetSearchLibraryQueryParamType {
|
func (e GetSearchLibraryQueryParamType) ToPointer() *GetSearchLibraryQueryParamType {
|
||||||
@@ -42,6 +44,10 @@ func (e *GetSearchLibraryQueryParamType) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = GetSearchLibraryQueryParamType(v)
|
*e = GetSearchLibraryQueryParamType(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -14,18 +14,6 @@ var GetServerResourcesServerList = []string{
|
|||||||
"https://plex.tv/api/v2",
|
"https://plex.tv/api/v2",
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetServerResourcesGlobals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetServerResourcesGlobals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
// IncludeHTTPS - Include Https entries in the results
|
// IncludeHTTPS - Include Https entries in the results
|
||||||
type IncludeHTTPS int
|
type IncludeHTTPS int
|
||||||
|
|
||||||
@@ -118,7 +106,7 @@ type GetServerResourcesRequest struct {
|
|||||||
// Include IPv6 entries in the results
|
// Include IPv6 entries in the results
|
||||||
IncludeIPv6 *IncludeIPv6 `default:"0" queryParam:"style=form,explode=true,name=includeIPv6"`
|
IncludeIPv6 *IncludeIPv6 `default:"0" queryParam:"style=form,explode=true,name=includeIPv6"`
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
ClientID string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g GetServerResourcesRequest) MarshalJSON() ([]byte, error) {
|
func (g GetServerResourcesRequest) MarshalJSON() ([]byte, error) {
|
||||||
@@ -153,9 +141,9 @@ func (o *GetServerResourcesRequest) GetIncludeIPv6() *IncludeIPv6 {
|
|||||||
return o.IncludeIPv6
|
return o.IncludeIPv6
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetServerResourcesRequest) GetClientID() *string {
|
func (o *GetServerResourcesRequest) GetClientID() string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
return o.ClientID
|
return o.ClientID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -513,6 +513,8 @@ type GetSessionsMetadata struct {
|
|||||||
LibrarySectionKey *string `json:"librarySectionKey,omitempty"`
|
LibrarySectionKey *string `json:"librarySectionKey,omitempty"`
|
||||||
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
|
LibrarySectionTitle *string `json:"librarySectionTitle,omitempty"`
|
||||||
MusicAnalysisVersion *string `json:"musicAnalysisVersion,omitempty"`
|
MusicAnalysisVersion *string `json:"musicAnalysisVersion,omitempty"`
|
||||||
|
// The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist
|
||||||
|
OriginalTitle *string `json:"originalTitle,omitempty"`
|
||||||
ParentGUID *string `json:"parentGuid,omitempty"`
|
ParentGUID *string `json:"parentGuid,omitempty"`
|
||||||
ParentIndex *int `json:"parentIndex,omitempty"`
|
ParentIndex *int `json:"parentIndex,omitempty"`
|
||||||
ParentKey *string `json:"parentKey,omitempty"`
|
ParentKey *string `json:"parentKey,omitempty"`
|
||||||
@@ -648,6 +650,13 @@ func (o *GetSessionsMetadata) GetMusicAnalysisVersion() *string {
|
|||||||
return o.MusicAnalysisVersion
|
return o.MusicAnalysisVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *GetSessionsMetadata) GetOriginalTitle() *string {
|
||||||
|
if o == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return o.OriginalTitle
|
||||||
|
}
|
||||||
|
|
||||||
func (o *GetSessionsMetadata) GetParentGUID() *string {
|
func (o *GetSessionsMetadata) GetParentGUID() *string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ type GetStatisticsRequest struct {
|
|||||||
// The timespan to retrieve statistics for
|
// The timespan to retrieve statistics for
|
||||||
// the exact meaning of this parameter is not known
|
// the exact meaning of this parameter is not known
|
||||||
//
|
//
|
||||||
Timespan *int64 `queryParam:"style=form,explode=true,name=Timespan"`
|
Timespan *int64 `queryParam:"style=form,explode=true,name=timespan"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetStatisticsRequest) GetTimespan() *int64 {
|
func (o *GetStatisticsRequest) GetTimespan() *int64 {
|
||||||
|
|||||||
@@ -12,59 +12,11 @@ var GetTokenByPinIDServerList = []string{
|
|||||||
"https://plex.tv/api/v2",
|
"https://plex.tv/api/v2",
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetTokenByPinIDGlobals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
|
||||||
// A relatively friendly name for the client device
|
|
||||||
DeviceNickname *string `header:"style=simple,explode=false,name=X-Plex-Device"`
|
|
||||||
// The version of the client application.
|
|
||||||
ClientVersion *string `header:"style=simple,explode=false,name=X-Plex-Version"`
|
|
||||||
// The platform of the client application.
|
|
||||||
Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetTokenByPinIDGlobals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetTokenByPinIDGlobals) GetClientName() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientName
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetTokenByPinIDGlobals) GetDeviceNickname() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.DeviceNickname
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetTokenByPinIDGlobals) GetClientVersion() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *GetTokenByPinIDGlobals) GetPlatform() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.Platform
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetTokenByPinIDRequest struct {
|
type GetTokenByPinIDRequest struct {
|
||||||
// The PinID to retrieve an access token for
|
// The PinID to retrieve an access token for
|
||||||
PinID int64 `pathParam:"style=simple,explode=false,name=pinID"`
|
PinID int64 `pathParam:"style=simple,explode=false,name=pinID"`
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
ClientID string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
||||||
// A relatively friendly name for the client device
|
// A relatively friendly name for the client device
|
||||||
@@ -82,9 +34,9 @@ func (o *GetTokenByPinIDRequest) GetPinID() int64 {
|
|||||||
return o.PinID
|
return o.PinID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GetTokenByPinIDRequest) GetClientID() *string {
|
func (o *GetTokenByPinIDRequest) GetClientID() string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
return o.ClientID
|
return o.ClientID
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -544,7 +544,7 @@ type GetTokenDetailsUserPlexAccount struct {
|
|||||||
MaxHomeSize int `json:"maxHomeSize"`
|
MaxHomeSize int `json:"maxHomeSize"`
|
||||||
// [Might be removed] The hashed Plex Home PIN
|
// [Might be removed] The hashed Plex Home PIN
|
||||||
//
|
//
|
||||||
// Deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
|
// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible.
|
||||||
Pin *string `json:"pin,omitempty"`
|
Pin *string `json:"pin,omitempty"`
|
||||||
Profile UserProfile `json:"profile"`
|
Profile UserProfile `json:"profile"`
|
||||||
// If the account has a Plex Home PIN enabled
|
// If the account has a Plex Home PIN enabled
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ const (
|
|||||||
GetTopWatchedContentQueryParamTypeSeason GetTopWatchedContentQueryParamType = 3
|
GetTopWatchedContentQueryParamTypeSeason GetTopWatchedContentQueryParamType = 3
|
||||||
GetTopWatchedContentQueryParamTypeEpisode GetTopWatchedContentQueryParamType = 4
|
GetTopWatchedContentQueryParamTypeEpisode GetTopWatchedContentQueryParamType = 4
|
||||||
GetTopWatchedContentQueryParamTypeAudio GetTopWatchedContentQueryParamType = 8
|
GetTopWatchedContentQueryParamTypeAudio GetTopWatchedContentQueryParamType = 8
|
||||||
|
GetTopWatchedContentQueryParamTypeAlbum GetTopWatchedContentQueryParamType = 9
|
||||||
|
GetTopWatchedContentQueryParamTypeTrack GetTopWatchedContentQueryParamType = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e GetTopWatchedContentQueryParamType) ToPointer() *GetTopWatchedContentQueryParamType {
|
func (e GetTopWatchedContentQueryParamType) ToPointer() *GetTopWatchedContentQueryParamType {
|
||||||
@@ -44,6 +46,10 @@ func (e *GetTopWatchedContentQueryParamType) UnmarshalJSON(data []byte) error {
|
|||||||
case 4:
|
case 4:
|
||||||
fallthrough
|
fallthrough
|
||||||
case 8:
|
case 8:
|
||||||
|
fallthrough
|
||||||
|
case 9:
|
||||||
|
fallthrough
|
||||||
|
case 10:
|
||||||
*e = GetTopWatchedContentQueryParamType(v)
|
*e = GetTopWatchedContentQueryParamType(v)
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import (
|
|||||||
var ErrUnsupportedOption = errors.New("unsupported option")
|
var ErrUnsupportedOption = errors.New("unsupported option")
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SupportedOptionServerURL = "serverURL"
|
|
||||||
SupportedOptionRetries = "retries"
|
SupportedOptionRetries = "retries"
|
||||||
SupportedOptionTimeout = "timeout"
|
SupportedOptionTimeout = "timeout"
|
||||||
SupportedOptionAcceptHeaderOverride = "acceptHeaderOverride"
|
SupportedOptionAcceptHeaderOverride = "acceptHeaderOverride"
|
||||||
@@ -36,6 +35,7 @@ type Options struct {
|
|||||||
Timeout *time.Duration
|
Timeout *time.Duration
|
||||||
AcceptHeaderOverride *AcceptHeaderEnum
|
AcceptHeaderOverride *AcceptHeaderEnum
|
||||||
URLOverride *string
|
URLOverride *string
|
||||||
|
SetHeaders map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Option func(*Options, ...string) error
|
type Option func(*Options, ...string) error
|
||||||
@@ -43,10 +43,6 @@ type Option func(*Options, ...string) error
|
|||||||
// WithServerURL allows providing an alternative server URL.
|
// WithServerURL allows providing an alternative server URL.
|
||||||
func WithServerURL(serverURL string) Option {
|
func WithServerURL(serverURL string) Option {
|
||||||
return func(opts *Options, supportedOptions ...string) error {
|
return func(opts *Options, supportedOptions ...string) error {
|
||||||
if !utils.Contains(supportedOptions, SupportedOptionServerURL) {
|
|
||||||
return ErrUnsupportedOption
|
|
||||||
}
|
|
||||||
|
|
||||||
opts.ServerURL = &serverURL
|
opts.ServerURL = &serverURL
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -55,10 +51,6 @@ func WithServerURL(serverURL string) Option {
|
|||||||
// WithTemplatedServerURL allows providing an alternative server URL with templated parameters.
|
// WithTemplatedServerURL allows providing an alternative server URL with templated parameters.
|
||||||
func WithTemplatedServerURL(serverURL string, params map[string]string) Option {
|
func WithTemplatedServerURL(serverURL string, params map[string]string) Option {
|
||||||
return func(opts *Options, supportedOptions ...string) error {
|
return func(opts *Options, supportedOptions ...string) error {
|
||||||
if !utils.Contains(supportedOptions, SupportedOptionServerURL) {
|
|
||||||
return ErrUnsupportedOption
|
|
||||||
}
|
|
||||||
|
|
||||||
if params != nil {
|
if params != nil {
|
||||||
serverURL = utils.ReplaceParameters(serverURL, params)
|
serverURL = utils.ReplaceParameters(serverURL, params)
|
||||||
}
|
}
|
||||||
@@ -114,3 +106,12 @@ func WithURLOverride(urlOverride string) Option {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithSetHeaders takes a map of headers that will applied to a request. If the
|
||||||
|
// request contains headers that are in the map then they will be overwritten.
|
||||||
|
func WithSetHeaders(hdrs map[string]string) Option {
|
||||||
|
return func(opts *Options, supportedOptions ...string) error {
|
||||||
|
opts.SetHeaders = hdrs
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,54 +13,6 @@ var PostUsersSignInDataServerList = []string{
|
|||||||
"https://plex.tv/api/v2",
|
"https://plex.tv/api/v2",
|
||||||
}
|
}
|
||||||
|
|
||||||
type PostUsersSignInDataGlobals struct {
|
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
|
||||||
// A relatively friendly name for the client device
|
|
||||||
DeviceNickname *string `header:"style=simple,explode=false,name=X-Plex-Device"`
|
|
||||||
// The version of the client application.
|
|
||||||
ClientVersion *string `header:"style=simple,explode=false,name=X-Plex-Version"`
|
|
||||||
// The platform of the client application.
|
|
||||||
Platform *string `header:"style=simple,explode=false,name=X-Plex-Platform"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *PostUsersSignInDataGlobals) GetClientID() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *PostUsersSignInDataGlobals) GetClientName() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientName
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *PostUsersSignInDataGlobals) GetDeviceNickname() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.DeviceNickname
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *PostUsersSignInDataGlobals) GetClientVersion() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.ClientVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *PostUsersSignInDataGlobals) GetPlatform() *string {
|
|
||||||
if o == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return o.Platform
|
|
||||||
}
|
|
||||||
|
|
||||||
// PostUsersSignInDataRequestBody - Login credentials
|
// PostUsersSignInDataRequestBody - Login credentials
|
||||||
type PostUsersSignInDataRequestBody struct {
|
type PostUsersSignInDataRequestBody struct {
|
||||||
Login string `form:"name=login"`
|
Login string `form:"name=login"`
|
||||||
@@ -110,7 +62,7 @@ func (o *PostUsersSignInDataRequestBody) GetVerificationCode() *string {
|
|||||||
|
|
||||||
type PostUsersSignInDataRequest struct {
|
type PostUsersSignInDataRequest struct {
|
||||||
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
// An opaque identifier unique to the client (UUID, serial number, or other unique device ID)
|
||||||
ClientID *string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
ClientID string `header:"style=simple,explode=false,name=X-Plex-Client-Identifier"`
|
||||||
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
// The name of the client application. (Plex Web, Plex Media Server, etc.)
|
||||||
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
ClientName *string `header:"style=simple,explode=false,name=X-Plex-Product"`
|
||||||
// A relatively friendly name for the client device
|
// A relatively friendly name for the client device
|
||||||
@@ -123,9 +75,9 @@ type PostUsersSignInDataRequest struct {
|
|||||||
RequestBody *PostUsersSignInDataRequestBody `request:"mediaType=application/x-www-form-urlencoded"`
|
RequestBody *PostUsersSignInDataRequestBody `request:"mediaType=application/x-www-form-urlencoded"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *PostUsersSignInDataRequest) GetClientID() *string {
|
func (o *PostUsersSignInDataRequest) GetClientID() string {
|
||||||
if o == nil {
|
if o == nil {
|
||||||
return nil
|
return ""
|
||||||
}
|
}
|
||||||
return o.ClientID
|
return o.ClientID
|
||||||
}
|
}
|
||||||
@@ -878,7 +830,7 @@ type PostUsersSignInDataUserPlexAccount struct {
|
|||||||
MaxHomeSize int `json:"maxHomeSize"`
|
MaxHomeSize int `json:"maxHomeSize"`
|
||||||
// [Might be removed] The hashed Plex Home PIN
|
// [Might be removed] The hashed Plex Home PIN
|
||||||
//
|
//
|
||||||
// Deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
|
// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible.
|
||||||
Pin *string `json:"pin,omitempty"`
|
Pin *string `json:"pin,omitempty"`
|
||||||
Profile PostUsersSignInDataUserProfile `json:"profile"`
|
Profile PostUsersSignInDataUserProfile `json:"profile"`
|
||||||
// If the account has a Plex Home PIN enabled
|
// If the account has a Plex Home PIN enabled
|
||||||
|
|||||||
209
playlists.go
209
playlists.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -53,7 +53,12 @@ func (s *Playlists) CreatePlaylist(ctx context.Context, request operations.Creat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/playlists")
|
opURL, err := url.JoinPath(baseURL, "/playlists")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -85,6 +90,10 @@ func (s *Playlists) CreatePlaylist(ctx context.Context, request operations.Creat
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -115,7 +124,11 @@ func (s *Playlists) CreatePlaylist(ctx context.Context, request operations.Creat
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -243,7 +256,11 @@ func (s *Playlists) CreatePlaylist(ctx context.Context, request operations.Creat
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -289,7 +306,12 @@ func (s *Playlists) GetPlaylists(ctx context.Context, playlistType *operations.P
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/playlists")
|
opURL, err := url.JoinPath(baseURL, "/playlists")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -321,6 +343,10 @@ func (s *Playlists) GetPlaylists(ctx context.Context, playlistType *operations.P
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -351,7 +377,11 @@ func (s *Playlists) GetPlaylists(ctx context.Context, playlistType *operations.P
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -479,7 +509,11 @@ func (s *Playlists) GetPlaylists(ctx context.Context, playlistType *operations.P
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -525,7 +559,12 @@ func (s *Playlists) GetPlaylist(ctx context.Context, playlistID float64, opts ..
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -553,6 +592,10 @@ func (s *Playlists) GetPlaylist(ctx context.Context, playlistID float64, opts ..
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -583,7 +626,11 @@ func (s *Playlists) GetPlaylist(ctx context.Context, playlistID float64, opts ..
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -711,7 +758,11 @@ func (s *Playlists) GetPlaylist(ctx context.Context, playlistID float64, opts ..
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -756,7 +807,12 @@ func (s *Playlists) DeletePlaylist(ctx context.Context, playlistID float64, opts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -784,6 +840,10 @@ func (s *Playlists) DeletePlaylist(ctx context.Context, playlistID float64, opts
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -814,7 +874,11 @@ func (s *Playlists) DeletePlaylist(ctx context.Context, playlistID float64, opts
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -922,7 +986,11 @@ func (s *Playlists) DeletePlaylist(ctx context.Context, playlistID float64, opts
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -969,7 +1037,12 @@ func (s *Playlists) UpdatePlaylist(ctx context.Context, playlistID float64, titl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1001,6 +1074,10 @@ func (s *Playlists) UpdatePlaylist(ctx context.Context, playlistID float64, titl
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1031,7 +1108,11 @@ func (s *Playlists) UpdatePlaylist(ctx context.Context, playlistID float64, titl
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1139,7 +1220,11 @@ func (s *Playlists) UpdatePlaylist(ctx context.Context, playlistID float64, titl
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1188,7 +1273,12 @@ func (s *Playlists) GetPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1220,6 +1310,10 @@ func (s *Playlists) GetPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1250,7 +1344,11 @@ func (s *Playlists) GetPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1378,7 +1476,11 @@ func (s *Playlists) GetPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1423,7 +1525,12 @@ func (s *Playlists) ClearPlaylistContents(ctx context.Context, playlistID float6
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1451,6 +1558,10 @@ func (s *Playlists) ClearPlaylistContents(ctx context.Context, playlistID float6
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1481,7 +1592,11 @@ func (s *Playlists) ClearPlaylistContents(ctx context.Context, playlistID float6
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1589,7 +1704,11 @@ func (s *Playlists) ClearPlaylistContents(ctx context.Context, playlistID float6
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1637,7 +1756,12 @@ func (s *Playlists) AddPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/playlists/{playlistID}/items", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1669,6 +1793,10 @@ func (s *Playlists) AddPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1699,7 +1827,11 @@ func (s *Playlists) AddPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1827,7 +1959,11 @@ func (s *Playlists) AddPlaylistContents(ctx context.Context, playlistID float64,
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1874,7 +2010,12 @@ func (s *Playlists) UploadPlaylist(ctx context.Context, path string, force opera
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/playlists/upload")
|
opURL, err := url.JoinPath(baseURL, "/playlists/upload")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1906,6 +2047,10 @@ func (s *Playlists) UploadPlaylist(ctx context.Context, path string, force opera
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1936,7 +2081,11 @@ func (s *Playlists) UploadPlaylist(ctx context.Context, path string, force opera
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2044,7 +2193,11 @@ func (s *Playlists) UploadPlaylist(ctx context.Context, path string, force opera
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
161
plex.go
161
plex.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -38,7 +38,6 @@ func (s *Plex) GetCompanionsData(ctx context.Context, opts ...operations.Option)
|
|||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -81,6 +80,10 @@ func (s *Plex) GetCompanionsData(ctx context.Context, opts ...operations.Option)
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -111,7 +114,11 @@ func (s *Plex) GetCompanionsData(ctx context.Context, opts ...operations.Option)
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -239,7 +246,11 @@ func (s *Plex) GetCompanionsData(ctx context.Context, opts ...operations.Option)
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -270,7 +281,6 @@ func (s *Plex) GetUserFriends(ctx context.Context, opts ...operations.Option) (*
|
|||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -313,6 +323,10 @@ func (s *Plex) GetUserFriends(ctx context.Context, opts ...operations.Option) (*
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -343,7 +357,11 @@ func (s *Plex) GetUserFriends(ctx context.Context, opts ...operations.Option) (*
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -471,7 +489,11 @@ func (s *Plex) GetUserFriends(ctx context.Context, opts ...operations.Option) (*
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -502,7 +524,6 @@ func (s *Plex) GetGeoData(ctx context.Context, opts ...operations.Option) (*oper
|
|||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -541,6 +562,10 @@ func (s *Plex) GetGeoData(ctx context.Context, opts ...operations.Option) (*oper
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -571,7 +596,11 @@ func (s *Plex) GetGeoData(ctx context.Context, opts ...operations.Option) (*oper
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -699,7 +728,11 @@ func (s *Plex) GetGeoData(ctx context.Context, opts ...operations.Option) (*oper
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -740,7 +773,12 @@ func (s *Plex) GetHomeData(ctx context.Context, opts ...operations.Option) (*ope
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/home")
|
opURL, err := url.JoinPath(baseURL, "/home")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -768,6 +806,10 @@ func (s *Plex) GetHomeData(ctx context.Context, opts ...operations.Option) (*ope
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -798,7 +840,11 @@ func (s *Plex) GetHomeData(ctx context.Context, opts ...operations.Option) (*ope
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -926,7 +972,11 @@ func (s *Plex) GetHomeData(ctx context.Context, opts ...operations.Option) (*ope
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -947,7 +997,7 @@ func (s *Plex) GetHomeData(ctx context.Context, opts ...operations.Option) (*ope
|
|||||||
|
|
||||||
// GetServerResources - Get Server Resources
|
// GetServerResources - Get Server Resources
|
||||||
// Get Plex server access tokens and server connections
|
// Get Plex server access tokens and server connections
|
||||||
func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.IncludeHTTPS, includeRelay *operations.IncludeRelay, includeIPv6 *operations.IncludeIPv6, clientID *string, opts ...operations.Option) (*operations.GetServerResourcesResponse, error) {
|
func (s *Plex) GetServerResources(ctx context.Context, clientID string, includeHTTPS *operations.IncludeHTTPS, includeRelay *operations.IncludeRelay, includeIPv6 *operations.IncludeIPv6, opts ...operations.Option) (*operations.GetServerResourcesResponse, error) {
|
||||||
hookCtx := hooks.HookContext{
|
hookCtx := hooks.HookContext{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
OperationID: "get-server-resources",
|
OperationID: "get-server-resources",
|
||||||
@@ -962,13 +1012,8 @@ func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.
|
|||||||
ClientID: clientID,
|
ClientID: clientID,
|
||||||
}
|
}
|
||||||
|
|
||||||
globals := operations.GetServerResourcesGlobals{
|
|
||||||
ClientID: s.sdkConfiguration.Globals.ClientID,
|
|
||||||
}
|
|
||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -1007,9 +1052,9 @@ func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
utils.PopulateHeaders(ctx, req, request, globals)
|
utils.PopulateHeaders(ctx, req, request, nil)
|
||||||
|
|
||||||
if err := utils.PopulateQueryParams(ctx, req, request, globals); err != nil {
|
if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil {
|
||||||
return nil, fmt.Errorf("error populating query params: %w", err)
|
return nil, fmt.Errorf("error populating query params: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1017,6 +1062,10 @@ func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1047,7 +1096,11 @@ func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1175,7 +1228,11 @@ func (s *Plex) GetServerResources(ctx context.Context, includeHTTPS *operations.
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1204,17 +1261,8 @@ func (s *Plex) GetPin(ctx context.Context, request operations.GetPinRequest, opt
|
|||||||
SecuritySource: nil,
|
SecuritySource: nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
globals := operations.GetPinGlobals{
|
|
||||||
ClientID: s.sdkConfiguration.Globals.ClientID,
|
|
||||||
ClientName: s.sdkConfiguration.Globals.ClientName,
|
|
||||||
DeviceNickname: s.sdkConfiguration.Globals.DeviceNickname,
|
|
||||||
ClientVersion: s.sdkConfiguration.Globals.ClientVersion,
|
|
||||||
Platform: s.sdkConfiguration.Globals.Platform,
|
|
||||||
}
|
|
||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -1253,12 +1301,16 @@ func (s *Plex) GetPin(ctx context.Context, request operations.GetPinRequest, opt
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
utils.PopulateHeaders(ctx, req, request, globals)
|
utils.PopulateHeaders(ctx, req, request, nil)
|
||||||
|
|
||||||
if err := utils.PopulateQueryParams(ctx, req, request, globals); err != nil {
|
if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil {
|
||||||
return nil, fmt.Errorf("error populating query params: %w", err)
|
return nil, fmt.Errorf("error populating query params: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1289,7 +1341,11 @@ func (s *Plex) GetPin(ctx context.Context, request operations.GetPinRequest, opt
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1395,7 +1451,11 @@ func (s *Plex) GetPin(ctx context.Context, request operations.GetPinRequest, opt
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1424,17 +1484,8 @@ func (s *Plex) GetTokenByPinID(ctx context.Context, request operations.GetTokenB
|
|||||||
SecuritySource: nil,
|
SecuritySource: nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
globals := operations.GetTokenByPinIDGlobals{
|
|
||||||
ClientID: s.sdkConfiguration.Globals.ClientID,
|
|
||||||
ClientName: s.sdkConfiguration.Globals.ClientName,
|
|
||||||
DeviceNickname: s.sdkConfiguration.Globals.DeviceNickname,
|
|
||||||
ClientVersion: s.sdkConfiguration.Globals.ClientVersion,
|
|
||||||
Platform: s.sdkConfiguration.Globals.Platform,
|
|
||||||
}
|
|
||||||
|
|
||||||
o := operations.Options{}
|
o := operations.Options{}
|
||||||
supportedOptions := []string{
|
supportedOptions := []string{
|
||||||
operations.SupportedOptionServerURL,
|
|
||||||
operations.SupportedOptionRetries,
|
operations.SupportedOptionRetries,
|
||||||
operations.SupportedOptionTimeout,
|
operations.SupportedOptionTimeout,
|
||||||
}
|
}
|
||||||
@@ -1450,7 +1501,7 @@ func (s *Plex) GetTokenByPinID(ctx context.Context, request operations.GetTokenB
|
|||||||
baseURL = *o.ServerURL
|
baseURL = *o.ServerURL
|
||||||
}
|
}
|
||||||
|
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/pins/{pinID}", request, globals)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/pins/{pinID}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
}
|
}
|
||||||
@@ -1473,7 +1524,11 @@ func (s *Plex) GetTokenByPinID(ctx context.Context, request operations.GetTokenB
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
utils.PopulateHeaders(ctx, req, request, globals)
|
utils.PopulateHeaders(ctx, req, request, nil)
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
@@ -1505,7 +1560,11 @@ func (s *Plex) GetTokenByPinID(ctx context.Context, request operations.GetTokenB
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1633,7 +1692,11 @@ func (s *Plex) GetTokenByPinID(ctx context.Context, request operations.GetTokenB
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
44
plexapi.go
44
plexapi.go
@@ -6,7 +6,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/LukeHagar/plexgo/internal/globals"
|
|
||||||
"github.com/LukeHagar/plexgo/internal/hooks"
|
"github.com/LukeHagar/plexgo/internal/hooks"
|
||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/components"
|
"github.com/LukeHagar/plexgo/models/components"
|
||||||
@@ -58,7 +57,6 @@ type sdkConfiguration struct {
|
|||||||
SDKVersion string
|
SDKVersion string
|
||||||
GenVersion string
|
GenVersion string
|
||||||
UserAgent string
|
UserAgent string
|
||||||
Globals globals.Globals
|
|
||||||
RetryConfig *retry.Config
|
RetryConfig *retry.Config
|
||||||
Hooks *hooks.Hooks
|
Hooks *hooks.Hooks
|
||||||
Timeout *time.Duration
|
Timeout *time.Duration
|
||||||
@@ -281,41 +279,6 @@ func WithSecuritySource(security func(context.Context) (components.Security, err
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithClientID allows setting the ClientID parameter for all supported operations
|
|
||||||
func WithClientID(clientID string) SDKOption {
|
|
||||||
return func(sdk *PlexAPI) {
|
|
||||||
sdk.sdkConfiguration.Globals.ClientID = &clientID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithClientName allows setting the ClientName parameter for all supported operations
|
|
||||||
func WithClientName(clientName string) SDKOption {
|
|
||||||
return func(sdk *PlexAPI) {
|
|
||||||
sdk.sdkConfiguration.Globals.ClientName = &clientName
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithClientVersion allows setting the ClientVersion parameter for all supported operations
|
|
||||||
func WithClientVersion(clientVersion string) SDKOption {
|
|
||||||
return func(sdk *PlexAPI) {
|
|
||||||
sdk.sdkConfiguration.Globals.ClientVersion = &clientVersion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithPlatform allows setting the Platform parameter for all supported operations
|
|
||||||
func WithPlatform(platform string) SDKOption {
|
|
||||||
return func(sdk *PlexAPI) {
|
|
||||||
sdk.sdkConfiguration.Globals.Platform = &platform
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithDeviceNickname allows setting the DeviceNickname parameter for all supported operations
|
|
||||||
func WithDeviceNickname(deviceNickname string) SDKOption {
|
|
||||||
return func(sdk *PlexAPI) {
|
|
||||||
sdk.sdkConfiguration.Globals.DeviceNickname = &deviceNickname
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func WithRetryConfig(retryConfig retry.Config) SDKOption {
|
func WithRetryConfig(retryConfig retry.Config) SDKOption {
|
||||||
return func(sdk *PlexAPI) {
|
return func(sdk *PlexAPI) {
|
||||||
sdk.sdkConfiguration.RetryConfig = &retryConfig
|
sdk.sdkConfiguration.RetryConfig = &retryConfig
|
||||||
@@ -335,10 +298,9 @@ func New(opts ...SDKOption) *PlexAPI {
|
|||||||
sdkConfiguration: sdkConfiguration{
|
sdkConfiguration: sdkConfiguration{
|
||||||
Language: "go",
|
Language: "go",
|
||||||
OpenAPIDocVersion: "0.0.3",
|
OpenAPIDocVersion: "0.0.3",
|
||||||
SDKVersion: "0.16.0",
|
SDKVersion: "0.17.3",
|
||||||
GenVersion: "2.457.2",
|
GenVersion: "2.495.1",
|
||||||
UserAgent: "speakeasy-sdk/go 0.16.0 2.457.2 0.0.3 github.com/LukeHagar/plexgo",
|
UserAgent: "speakeasy-sdk/go 0.17.3 2.495.1 0.0.3 github.com/LukeHagar/plexgo",
|
||||||
Globals: globals.Globals{},
|
|
||||||
ServerDefaults: []map[string]string{
|
ServerDefaults: []map[string]string{
|
||||||
{
|
{
|
||||||
"protocol": "https",
|
"protocol": "https",
|
||||||
|
|||||||
132
retry/config.go
132
retry/config.go
@@ -2,6 +2,15 @@
|
|||||||
|
|
||||||
package retry
|
package retry
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BackoffStrategy defines the parameters for exponential backoff. This can be
|
||||||
|
// used to drive a retry loop for example.
|
||||||
type BackoffStrategy struct {
|
type BackoffStrategy struct {
|
||||||
InitialInterval int
|
InitialInterval int
|
||||||
MaxInterval int
|
MaxInterval int
|
||||||
@@ -9,8 +18,131 @@ type BackoffStrategy struct {
|
|||||||
MaxElapsedTime int
|
MaxElapsedTime int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Config configures a retry policy.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
// Strategy sets the algorithm to use for a retry loop. It can be one of:
|
||||||
|
// - "backoff": retry with exponential backoff and random jitter.
|
||||||
|
// - "none" or "": disables retries.
|
||||||
Strategy string
|
Strategy string
|
||||||
Backoff *BackoffStrategy
|
Backoff *BackoffStrategy
|
||||||
RetryConnectionErrors bool
|
RetryConnectionErrors bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PermanentError is an error that signals that some operation has terminally
|
||||||
|
// failed and should not be retried.
|
||||||
|
type PermanentError struct {
|
||||||
|
cause error
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permanent creates a PermanentError that signals to a retry loop that it
|
||||||
|
// should stop retrying an operation and return the underlying error.
|
||||||
|
func Permanent(cause error) error {
|
||||||
|
if IsPermanentError(cause) {
|
||||||
|
return cause
|
||||||
|
}
|
||||||
|
|
||||||
|
return &PermanentError{
|
||||||
|
cause: cause,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *PermanentError) Error() string {
|
||||||
|
return e.cause.Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *PermanentError) Unwrap() error {
|
||||||
|
return e.cause
|
||||||
|
}
|
||||||
|
|
||||||
|
// TemporaryError represents a retryable error and signals to a retry loop that
|
||||||
|
// an operation may be retried with an optional wait interval.
|
||||||
|
type TemporaryError struct {
|
||||||
|
wait time.Duration
|
||||||
|
message string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Temporary creates a TemporaryError that signals to a retry loop that an
|
||||||
|
// operation can be retried. The error may also carry details about how long to
|
||||||
|
// wait before retrying. This wait interval may be used to override the retry
|
||||||
|
// policy in use.
|
||||||
|
func Temporary(message string) error {
|
||||||
|
return &TemporaryError{
|
||||||
|
message: message,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TemporaryFromResponse creates a TemporaryError similar to Temporary but
|
||||||
|
// additionally parses the Retry-After header from a response to determine the
|
||||||
|
// wait interval before the next retry attempt.
|
||||||
|
func TemporaryFromResponse(message string, res *http.Response) error {
|
||||||
|
return &TemporaryError{
|
||||||
|
wait: retryIntervalFromResponse(res),
|
||||||
|
message: message,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *TemporaryError) Error() string {
|
||||||
|
return e.message
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetryAfter returns the time to wait before retrying the request. The zero
|
||||||
|
// value should be interpreted by retry loops to mean they should fallback on
|
||||||
|
// their default policy whether expenonential, constant backoff or something
|
||||||
|
// else. It does not mean that an operation should be retried immediately.
|
||||||
|
func (e *TemporaryError) RetryAfter() time.Duration {
|
||||||
|
return e.wait
|
||||||
|
}
|
||||||
|
|
||||||
|
func retryIntervalFromResponse(res *http.Response) time.Duration {
|
||||||
|
if res == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
retryVal := res.Header.Get("retry-after")
|
||||||
|
if retryVal == "" {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
parsedNumber, err := strconv.ParseInt(retryVal, 10, 64)
|
||||||
|
if err == nil {
|
||||||
|
if parsedNumber < 0 {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return time.Duration(parsedNumber) * time.Second
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parsedDate, err := time.Parse(time.RFC1123, retryVal)
|
||||||
|
if err == nil {
|
||||||
|
delta := parsedDate.Sub(time.Now())
|
||||||
|
if delta < 0 {
|
||||||
|
return 0
|
||||||
|
} else {
|
||||||
|
return delta
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsPermanentError returns true if an error value is or contains a
|
||||||
|
// PermanentError in its chain of errors.
|
||||||
|
func IsPermanentError(err error) bool {
|
||||||
|
if err == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var pe *PermanentError
|
||||||
|
return errors.As(err, &pe)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsTemporaryError returns true if an error value is or contains a
|
||||||
|
// TemporaryError in its chain of errors.
|
||||||
|
func IsTemporaryError(err error) bool {
|
||||||
|
if err == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var pe *TemporaryError
|
||||||
|
return errors.As(err, &pe)
|
||||||
|
}
|
||||||
|
|||||||
71
search.go
71
search.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -66,7 +66,12 @@ func (s *Search) PerformSearch(ctx context.Context, query string, sectionID *flo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/hubs/search")
|
opURL, err := url.JoinPath(baseURL, "/hubs/search")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -98,6 +103,10 @@ func (s *Search) PerformSearch(ctx context.Context, query string, sectionID *flo
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -128,7 +137,11 @@ func (s *Search) PerformSearch(ctx context.Context, query string, sectionID *flo
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -236,7 +249,11 @@ func (s *Search) PerformSearch(ctx context.Context, query string, sectionID *flo
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -286,7 +303,12 @@ func (s *Search) PerformVoiceSearch(ctx context.Context, query string, sectionID
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/hubs/search/voice")
|
opURL, err := url.JoinPath(baseURL, "/hubs/search/voice")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -318,6 +340,10 @@ func (s *Search) PerformVoiceSearch(ctx context.Context, query string, sectionID
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -348,7 +374,11 @@ func (s *Search) PerformVoiceSearch(ctx context.Context, query string, sectionID
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -456,7 +486,11 @@ func (s *Search) PerformVoiceSearch(ctx context.Context, query string, sectionID
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -501,7 +535,12 @@ func (s *Search) GetSearchResults(ctx context.Context, query string, opts ...ope
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/search")
|
opURL, err := url.JoinPath(baseURL, "/search")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -533,6 +572,10 @@ func (s *Search) GetSearchResults(ctx context.Context, query string, opts ...ope
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -563,7 +606,11 @@ func (s *Search) GetSearchResults(ctx context.Context, query string, opts ...ope
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -691,7 +738,11 @@ func (s *Search) GetSearchResults(ctx context.Context, query string, opts ...ope
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
209
server.go
209
server.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -48,7 +48,12 @@ func (s *Server) GetServerCapabilities(ctx context.Context, opts ...operations.O
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/")
|
opURL, err := url.JoinPath(baseURL, "/")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -76,6 +81,10 @@ func (s *Server) GetServerCapabilities(ctx context.Context, opts ...operations.O
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -106,7 +115,11 @@ func (s *Server) GetServerCapabilities(ctx context.Context, opts ...operations.O
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -234,7 +247,11 @@ func (s *Server) GetServerCapabilities(ctx context.Context, opts ...operations.O
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -275,7 +292,12 @@ func (s *Server) GetServerPreferences(ctx context.Context, opts ...operations.Op
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/:/prefs")
|
opURL, err := url.JoinPath(baseURL, "/:/prefs")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -303,6 +325,10 @@ func (s *Server) GetServerPreferences(ctx context.Context, opts ...operations.Op
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -333,7 +359,11 @@ func (s *Server) GetServerPreferences(ctx context.Context, opts ...operations.Op
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -461,7 +491,11 @@ func (s *Server) GetServerPreferences(ctx context.Context, opts ...operations.Op
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -502,7 +536,12 @@ func (s *Server) GetAvailableClients(ctx context.Context, opts ...operations.Opt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/clients")
|
opURL, err := url.JoinPath(baseURL, "/clients")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -530,6 +569,10 @@ func (s *Server) GetAvailableClients(ctx context.Context, opts ...operations.Opt
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -560,7 +603,11 @@ func (s *Server) GetAvailableClients(ctx context.Context, opts ...operations.Opt
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -688,7 +735,11 @@ func (s *Server) GetAvailableClients(ctx context.Context, opts ...operations.Opt
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -729,7 +780,12 @@ func (s *Server) GetDevices(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/devices")
|
opURL, err := url.JoinPath(baseURL, "/devices")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -757,6 +813,10 @@ func (s *Server) GetDevices(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -787,7 +847,11 @@ func (s *Server) GetDevices(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -915,7 +979,11 @@ func (s *Server) GetDevices(ctx context.Context, opts ...operations.Option) (*op
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -956,7 +1024,12 @@ func (s *Server) GetServerIdentity(ctx context.Context, opts ...operations.Optio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/identity")
|
opURL, err := url.JoinPath(baseURL, "/identity")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -980,6 +1053,10 @@ func (s *Server) GetServerIdentity(ctx context.Context, opts ...operations.Optio
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent)
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1010,7 +1087,11 @@ func (s *Server) GetServerIdentity(ctx context.Context, opts ...operations.Optio
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1116,7 +1197,11 @@ func (s *Server) GetServerIdentity(ctx context.Context, opts ...operations.Optio
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1157,7 +1242,12 @@ func (s *Server) GetMyPlexAccount(ctx context.Context, opts ...operations.Option
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/myplex/account")
|
opURL, err := url.JoinPath(baseURL, "/myplex/account")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1185,6 +1275,10 @@ func (s *Server) GetMyPlexAccount(ctx context.Context, opts ...operations.Option
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1215,7 +1309,11 @@ func (s *Server) GetMyPlexAccount(ctx context.Context, opts ...operations.Option
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1343,7 +1441,11 @@ func (s *Server) GetMyPlexAccount(ctx context.Context, opts ...operations.Option
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1384,7 +1486,12 @@ func (s *Server) GetResizedPhoto(ctx context.Context, request operations.GetResi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/photo/:/transcode")
|
opURL, err := url.JoinPath(baseURL, "/photo/:/transcode")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1416,6 +1523,10 @@ func (s *Server) GetResizedPhoto(ctx context.Context, request operations.GetResi
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1446,7 +1557,11 @@ func (s *Server) GetResizedPhoto(ctx context.Context, request operations.GetResi
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1554,7 +1669,11 @@ func (s *Server) GetResizedPhoto(ctx context.Context, request operations.GetResi
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1599,7 +1718,12 @@ func (s *Server) GetMediaProviders(ctx context.Context, xPlexToken string, opts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/media/providers")
|
opURL, err := url.JoinPath(baseURL, "/media/providers")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1629,6 +1753,10 @@ func (s *Server) GetMediaProviders(ctx context.Context, xPlexToken string, opts
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1659,7 +1787,11 @@ func (s *Server) GetMediaProviders(ctx context.Context, xPlexToken string, opts
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -1787,7 +1919,11 @@ func (s *Server) GetMediaProviders(ctx context.Context, xPlexToken string, opts
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1828,7 +1964,12 @@ func (s *Server) GetServerList(ctx context.Context, opts ...operations.Option) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/servers")
|
opURL, err := url.JoinPath(baseURL, "/servers")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -1856,6 +1997,10 @@ func (s *Server) GetServerList(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -1886,7 +2031,11 @@ func (s *Server) GetServerList(ctx context.Context, opts ...operations.Option) (
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -2014,7 +2163,11 @@ func (s *Server) GetServerList(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
94
sessions.go
94
sessions.go
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -48,7 +48,12 @@ func (s *Sessions) GetSessions(ctx context.Context, opts ...operations.Option) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/status/sessions")
|
opURL, err := url.JoinPath(baseURL, "/status/sessions")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -76,6 +81,10 @@ func (s *Sessions) GetSessions(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -106,7 +115,11 @@ func (s *Sessions) GetSessions(ctx context.Context, opts ...operations.Option) (
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -234,7 +247,11 @@ func (s *Sessions) GetSessions(ctx context.Context, opts ...operations.Option) (
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -282,7 +299,12 @@ func (s *Sessions) GetSessionHistory(ctx context.Context, sort *string, accountI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/status/sessions/history/all")
|
opURL, err := url.JoinPath(baseURL, "/status/sessions/history/all")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -314,6 +336,10 @@ func (s *Sessions) GetSessionHistory(ctx context.Context, sort *string, accountI
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -344,7 +370,11 @@ func (s *Sessions) GetSessionHistory(ctx context.Context, sort *string, accountI
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -472,7 +502,11 @@ func (s *Sessions) GetSessionHistory(ctx context.Context, sort *string, accountI
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -513,7 +547,12 @@ func (s *Sessions) GetTranscodeSessions(ctx context.Context, opts ...operations.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/transcode/sessions")
|
opURL, err := url.JoinPath(baseURL, "/transcode/sessions")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -541,6 +580,10 @@ func (s *Sessions) GetTranscodeSessions(ctx context.Context, opts ...operations.
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -571,7 +614,11 @@ func (s *Sessions) GetTranscodeSessions(ctx context.Context, opts ...operations.
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -699,7 +746,11 @@ func (s *Sessions) GetTranscodeSessions(ctx context.Context, opts ...operations.
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -744,7 +795,12 @@ func (s *Sessions) StopTranscodeSession(ctx context.Context, sessionKey string,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := utils.GenerateURL(ctx, baseURL, "/transcode/sessions/{sessionKey}", request, nil)
|
opURL, err := utils.GenerateURL(ctx, baseURL, "/transcode/sessions/{sessionKey}", request, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -772,6 +828,10 @@ func (s *Sessions) StopTranscodeSession(ctx context.Context, sessionKey string,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -802,7 +862,11 @@ func (s *Sessions) StopTranscodeSession(ctx context.Context, sessionKey string,
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -910,7 +974,11 @@ func (s *Sessions) StopTranscodeSession(ctx context.Context, sessionKey string,
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"github.com/LukeHagar/plexgo/internal/utils"
|
"github.com/LukeHagar/plexgo/internal/utils"
|
||||||
"github.com/LukeHagar/plexgo/models/operations"
|
"github.com/LukeHagar/plexgo/models/operations"
|
||||||
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
"github.com/LukeHagar/plexgo/models/sdkerrors"
|
||||||
"github.com/cenkalti/backoff/v4"
|
"github.com/LukeHagar/plexgo/retry"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
)
|
)
|
||||||
@@ -52,7 +52,12 @@ func (s *Statistics) GetStatistics(ctx context.Context, timespan *int64, opts ..
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/statistics/media")
|
opURL, err := url.JoinPath(baseURL, "/statistics/media")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -84,6 +89,10 @@ func (s *Statistics) GetStatistics(ctx context.Context, timespan *int64, opts ..
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -114,7 +123,11 @@ func (s *Statistics) GetStatistics(ctx context.Context, timespan *int64, opts ..
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -242,7 +255,11 @@ func (s *Statistics) GetStatistics(ctx context.Context, timespan *int64, opts ..
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -287,7 +304,12 @@ func (s *Statistics) GetResourcesStatistics(ctx context.Context, timespan *int64
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/statistics/resources")
|
opURL, err := url.JoinPath(baseURL, "/statistics/resources")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -319,6 +341,10 @@ func (s *Statistics) GetResourcesStatistics(ctx context.Context, timespan *int64
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -349,7 +375,11 @@ func (s *Statistics) GetResourcesStatistics(ctx context.Context, timespan *int64
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -477,7 +507,11 @@ func (s *Statistics) GetResourcesStatistics(ctx context.Context, timespan *int64
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -522,7 +556,12 @@ func (s *Statistics) GetBandwidthStatistics(ctx context.Context, timespan *int64
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
baseURL := utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
var baseURL string
|
||||||
|
if o.ServerURL == nil {
|
||||||
|
baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails())
|
||||||
|
} else {
|
||||||
|
baseURL = *o.ServerURL
|
||||||
|
}
|
||||||
opURL, err := url.JoinPath(baseURL, "/statistics/bandwidth")
|
opURL, err := url.JoinPath(baseURL, "/statistics/bandwidth")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error generating URL: %w", err)
|
return nil, fmt.Errorf("error generating URL: %w", err)
|
||||||
@@ -554,6 +593,10 @@ func (s *Statistics) GetBandwidthStatistics(ctx context.Context, timespan *int64
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for k, v := range o.SetHeaders {
|
||||||
|
req.Header.Set(k, v)
|
||||||
|
}
|
||||||
|
|
||||||
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
globalRetryConfig := s.sdkConfiguration.RetryConfig
|
||||||
retryConfig := o.Retries
|
retryConfig := o.Retries
|
||||||
if retryConfig == nil {
|
if retryConfig == nil {
|
||||||
@@ -584,7 +627,11 @@ func (s *Statistics) GetBandwidthStatistics(ctx context.Context, timespan *int64
|
|||||||
|
|
||||||
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, backoff.Permanent(err)
|
if retry.IsPermanentError(err) || retry.IsTemporaryError(err) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, retry.Permanent(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
httpRes, err := s.sdkConfiguration.Client.Do(req)
|
||||||
@@ -712,7 +759,11 @@ func (s *Statistics) GetBandwidthStatistics(ctx context.Context, timespan *int64
|
|||||||
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
}
|
}
|
||||||
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500:
|
||||||
fallthrough
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes)
|
||||||
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600:
|
||||||
rawBody, err := utils.ConsumeRawBody(httpRes)
|
rawBody, err := utils.ConsumeRawBody(httpRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user