mirror of
https://github.com/LukeHagar/plexjs.git
synced 2025-12-06 12:37:46 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c04752d88 | ||
|
|
242d7d78f2 | ||
|
|
779aa2dc9e | ||
|
|
0d73a769fb |
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
/docs/**/*.md
|
||||
**/*
|
||||
!/**/*.ts
|
||||
!/**/*.js
|
||||
!/**/*.map
|
||||
|
||||
@@ -3,10 +3,10 @@ id: 16f22cbf-f23f-4419-8924-3a4b06381947
|
||||
management:
|
||||
docChecksum: a91eaf9ec1e6a3a6f4bf0571f5b18bae
|
||||
docVersion: 0.0.3
|
||||
speakeasyVersion: 1.228.1
|
||||
generationVersion: 2.292.0
|
||||
releaseVersion: 0.12.0
|
||||
configChecksum: 96c0b6a9e85b7682aef0863ada1e00a7
|
||||
speakeasyVersion: 1.260.6
|
||||
generationVersion: 2.311.1
|
||||
releaseVersion: 0.13.0
|
||||
configChecksum: 62265d55fc035cecbf6f03081c6e5587
|
||||
repoURL: https://github.com/LukeHagar/plexjs.git
|
||||
repoSubDirectory: .
|
||||
installationURL: https://github.com/LukeHagar/plexjs
|
||||
@@ -14,13 +14,13 @@ management:
|
||||
features:
|
||||
typescript:
|
||||
constsAndDefaults: 0.1.5
|
||||
core: 3.7.0
|
||||
core: 3.8.0
|
||||
flattening: 2.81.1
|
||||
globalSecurity: 2.82.8
|
||||
globalSecurity: 2.82.9
|
||||
globalServerURLs: 2.82.4
|
||||
globals: 2.82.1
|
||||
methodServerURLs: 2.82.1
|
||||
nameOverrides: 2.81.1
|
||||
nameOverrides: 2.81.2
|
||||
responseFormat: 0.2.3
|
||||
generatedFiles:
|
||||
- src/sdk/server.ts
|
||||
@@ -42,6 +42,7 @@ generatedFiles:
|
||||
- .eslintrc.js
|
||||
- .npmignore
|
||||
- RUNTIMES.md
|
||||
- jsr.json
|
||||
- package.json
|
||||
- src/index.ts
|
||||
- src/lib/base64.ts
|
||||
|
||||
21
.speakeasy/workflow.lock
Normal file
21
.speakeasy/workflow.lock
Normal file
@@ -0,0 +1,21 @@
|
||||
speakeasyVersion: 1.260.6
|
||||
sources:
|
||||
my-source: {}
|
||||
targets:
|
||||
plexjs:
|
||||
source: my-source
|
||||
outLocation: /github/workspace/repo
|
||||
workflow:
|
||||
workflowVersion: 1.0.0
|
||||
speakeasyVersion: latest
|
||||
sources:
|
||||
my-source:
|
||||
inputs:
|
||||
- location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/main/plex-media-server-spec-dereferenced.yaml
|
||||
targets:
|
||||
plexjs:
|
||||
target: typescript
|
||||
source: my-source
|
||||
publish:
|
||||
npm:
|
||||
token: $NPM_TOKEN
|
||||
@@ -1,4 +1,5 @@
|
||||
workflowVersion: 1.0.0
|
||||
speakeasyVersion: latest
|
||||
sources:
|
||||
my-source:
|
||||
inputs:
|
||||
|
||||
56
README.md
56
README.md
@@ -31,13 +31,13 @@ yarn add @lukehagar/plexjs
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
@@ -174,15 +174,15 @@ Validation errors can also occur when either method arguments or data returned f
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import * as errors from "@lukehagar/plexjs/models/errors";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
let result;
|
||||
try {
|
||||
result = await sdk.server.getServerCapabilities();
|
||||
result = await plexAPI.server.getServerCapabilities();
|
||||
} catch (err) {
|
||||
switch (true) {
|
||||
case err instanceof errors.SDKValidationError: {
|
||||
@@ -225,14 +225,14 @@ You can override the default server globally by passing a server index to the `s
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
serverIdx: 0,
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
@@ -256,14 +256,14 @@ The default server can also be overridden globally by passing a URL to the `serv
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
serverURL: "{protocol}://{ip}:{port}",
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
@@ -279,15 +279,15 @@ The server URL can also be overridden on a per-operation basis, provided a serve
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const strong = false;
|
||||
const xPlexClientIdentifier = "<value>";
|
||||
|
||||
const result = await sdk.plex.getPin(strong, xPlexClientIdentifier, {
|
||||
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier, {
|
||||
serverURL: "https://plex.tv/api/v2",
|
||||
});
|
||||
|
||||
@@ -364,13 +364,13 @@ To authenticate with the API the `accessToken` parameter must be set when initia
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
@@ -412,15 +412,15 @@ This is used to track the client application and its usage
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const strong = false;
|
||||
const xPlexClientIdentifier = "<value>";
|
||||
|
||||
const result = await sdk.plex.getPin(strong, xPlexClientIdentifier);
|
||||
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
|
||||
40
RELEASES.md
40
RELEASES.md
@@ -289,3 +289,43 @@ Based on:
|
||||
- [typescript v0.12.0] .
|
||||
### Releases
|
||||
- [NPM v0.12.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.0 - .
|
||||
|
||||
## 2024-04-02 00:26:20
|
||||
### Changes
|
||||
Based on:
|
||||
- OpenAPI Doc
|
||||
- Speakeasy CLI 1.231.1 (2.295.1) https://github.com/speakeasy-api/speakeasy
|
||||
### Generated
|
||||
- [typescript v0.12.1] .
|
||||
### Releases
|
||||
- [NPM v0.12.1] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.1 - .
|
||||
|
||||
## 2024-04-13 00:23:00
|
||||
### Changes
|
||||
Based on:
|
||||
- OpenAPI Doc
|
||||
- Speakeasy CLI 1.252.0 (2.306.0) https://github.com/speakeasy-api/speakeasy
|
||||
### Generated
|
||||
- [typescript v0.12.2] .
|
||||
### Releases
|
||||
- [NPM v0.12.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.2 - .
|
||||
|
||||
## 2024-04-18 00:26:16
|
||||
### Changes
|
||||
Based on:
|
||||
- OpenAPI Doc
|
||||
- Speakeasy CLI 1.257.1 (2.308.2) https://github.com/speakeasy-api/speakeasy
|
||||
### Generated
|
||||
- [typescript v0.12.3] .
|
||||
### Releases
|
||||
- [NPM v0.12.3] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.12.3 - .
|
||||
|
||||
## 2024-04-19 00:26:47
|
||||
### Changes
|
||||
Based on:
|
||||
- OpenAPI Doc
|
||||
- Speakeasy CLI 1.260.6 (2.311.1) https://github.com/speakeasy-api/speakeasy
|
||||
### Generated
|
||||
- [typescript v0.13.0] .
|
||||
### Releases
|
||||
- [NPM v0.13.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.13.0 - .
|
||||
8
USAGE.md
8
USAGE.md
@@ -2,13 +2,13 @@
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result);
|
||||
|
||||
@@ -26,13 +26,13 @@ Get Server Activities
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.activities.getServerActivities();
|
||||
async function run() {
|
||||
const result = await plexAPI.activities.getServerActivities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -68,15 +68,15 @@ Cancel Server Activities
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const activityUUID = "<value>";
|
||||
|
||||
const result = await sdk.activities.cancelServerActivities(activityUUID);
|
||||
const result = await plexAPI.activities.cancelServerActivities(activityUUID);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -22,16 +22,16 @@ This endpoint provides the caller with a temporary token with the same access le
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { GetTransientTokenQueryParamType, Scope } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const type = GetTransientTokenQueryParamType.Delegation;
|
||||
const scope = Scope.All;
|
||||
|
||||
const result = await sdk.authentication.getTransientToken(type, scope);
|
||||
const result = await plexAPI.authentication.getTransientToken(type, scope);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -71,15 +71,15 @@ Note: requires Plex Media Server >= 1.15.4.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const source = "server://client-identifier";
|
||||
|
||||
const result = await sdk.authentication.getSourceConnectionInformation(source);
|
||||
const result = await plexAPI.authentication.getSourceConnectionInformation(source);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -23,13 +23,13 @@ Returns a list of butler tasks
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.butler.getButlerTasks();
|
||||
async function run() {
|
||||
const result = await plexAPI.butler.getButlerTasks();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -70,13 +70,13 @@ This endpoint will attempt to start all Butler tasks that are enabled in the set
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.butler.startAllTasks();
|
||||
async function run() {
|
||||
const result = await plexAPI.butler.startAllTasks();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -113,13 +113,13 @@ This endpoint will stop all currently running tasks and remove any scheduled tas
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.butler.stopAllTasks();
|
||||
async function run() {
|
||||
const result = await plexAPI.butler.stopAllTasks();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -161,15 +161,15 @@ This endpoint will attempt to start a single Butler task that is enabled in the
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { TaskName } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const taskName = TaskName.CleanOldBundles;
|
||||
|
||||
const result = await sdk.butler.startTask(taskName);
|
||||
const result = await plexAPI.butler.startTask(taskName);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -208,15 +208,15 @@ This endpoint will stop a currently running task by name, or remove it from the
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { PathParamTaskName } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const taskName = PathParamTaskName.BackupDatabase;
|
||||
|
||||
const result = await sdk.butler.stopTask(taskName);
|
||||
const result = await plexAPI.butler.stopTask(taskName);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -21,16 +21,16 @@ Get Global Hubs filtered by the parameters provided.
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { OnlyTransient } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const count = 1262.49;
|
||||
const onlyTransient = OnlyTransient.One;
|
||||
|
||||
const result = await sdk.hubs.getGlobalHubs(count, onlyTransient);
|
||||
const result = await plexAPI.hubs.getGlobalHubs(count, onlyTransient);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -70,17 +70,17 @@ This endpoint will return a list of library specific hubs
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { QueryParamOnlyTransient } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 6728.76;
|
||||
const count = 9010.22;
|
||||
const onlyTransient = QueryParamOnlyTransient.Zero;
|
||||
|
||||
const result = await sdk.hubs.getLibraryHubs(sectionId, count, onlyTransient);
|
||||
const result = await plexAPI.hubs.getLibraryHubs(sectionId, count, onlyTransient);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -29,16 +29,16 @@ This resource returns hash values for local files
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const url = "file://C:\Image.png&type=13";
|
||||
const type = 4462.17;
|
||||
|
||||
const result = await sdk.library.getFileHash(url, type);
|
||||
const result = await plexAPI.library.getFileHash(url, type);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -77,13 +77,13 @@ This endpoint will return the recently added content.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.library.getRecentlyAdded();
|
||||
async function run() {
|
||||
const result = await plexAPI.library.getRecentlyAdded();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -125,13 +125,13 @@ This allows a client to provide a rich interface around the media (e.g. allow so
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.library.getLibraries();
|
||||
async function run() {
|
||||
const result = await plexAPI.library.getLibraries();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -207,16 +207,16 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { IncludeDetails } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 1000;
|
||||
const includeDetails = IncludeDetails.Zero;
|
||||
|
||||
const result = await sdk.library.getLibrary(sectionId, includeDetails);
|
||||
const result = await plexAPI.library.getLibrary(sectionId, includeDetails);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -254,15 +254,15 @@ Delate a library using a specific section
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 1000;
|
||||
|
||||
const result = await sdk.library.deleteLibrary(sectionId);
|
||||
const result = await plexAPI.library.deleteLibrary(sectionId);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -320,16 +320,16 @@ Fetches details from a specific section of the library identified by a section k
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Tag } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 451092;
|
||||
const tag = Tag.Unwatched;
|
||||
|
||||
const result = await sdk.library.getLibraryItems(sectionId, tag);
|
||||
const result = await plexAPI.library.getLibraryItems(sectionId, tag);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -367,15 +367,15 @@ This endpoint Refreshes the library.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 934.16;
|
||||
|
||||
const result = await sdk.library.refreshLibrary(sectionId);
|
||||
const result = await plexAPI.library.refreshLibrary(sectionId);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -431,16 +431,16 @@ Each type in the library comes with a set of filters and sorts, aiding in buildi
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Type } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sectionId = 933505;
|
||||
const type = Type.Four;
|
||||
|
||||
const result = await sdk.library.searchLibrary(sectionId, type);
|
||||
const result = await plexAPI.library.searchLibrary(sectionId, type);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -478,15 +478,15 @@ This endpoint will return the metadata of a library item specified with the rati
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const ratingKey = 8382.31;
|
||||
|
||||
const result = await sdk.library.getMetadata(ratingKey);
|
||||
const result = await plexAPI.library.getMetadata(ratingKey);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -524,15 +524,15 @@ This endpoint will return the children of of a library item specified with the r
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const ratingKey = 1539.14;
|
||||
|
||||
const result = await sdk.library.getMetadataChildren(ratingKey);
|
||||
const result = await plexAPI.library.getMetadataChildren(ratingKey);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -570,13 +570,13 @@ This endpoint will return the on deck content.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.library.getOnDeck();
|
||||
async function run() {
|
||||
const result = await plexAPI.library.getOnDeck();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -23,17 +23,17 @@ This endpoint will write a single-line log message, including a level and source
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Level } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const level = Level.Three;
|
||||
const message = "Test log message";
|
||||
const source = "Postman";
|
||||
|
||||
const result = await sdk.log.logLine(level, message, source);
|
||||
const result = await plexAPI.log.logLine(level, message, source);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -93,13 +93,13 @@ Ensure each parameter is properly URL-encoded to avoid interpretation issues.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.log.logMultiLine("level=4&message=Test%20message%201&source=postman
|
||||
async function run() {
|
||||
const result = await plexAPI.log.logMultiLine("level=4&message=Test%20message%201&source=postman
|
||||
level=3&message=Test%20message%202&source=postman
|
||||
level=1&message=Test%20message%203&source=postman");
|
||||
|
||||
@@ -139,13 +139,13 @@ This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.log.enablePaperTrail();
|
||||
async function run() {
|
||||
const result = await plexAPI.log.enablePaperTrail();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -21,15 +21,15 @@ This will mark the provided media key as Played.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const key = 59398;
|
||||
|
||||
const result = await sdk.media.markPlayed(key);
|
||||
const result = await plexAPI.media.markPlayed(key);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -66,15 +66,15 @@ This will mark the provided media key as Unplayed.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const key = 59398;
|
||||
|
||||
const result = await sdk.media.markUnplayed(key);
|
||||
const result = await plexAPI.media.markUnplayed(key);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -112,17 +112,17 @@ This API command can be used to update the play progress of a media item.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const key = "<value>";
|
||||
const time = 6900.91;
|
||||
const state = "<value>";
|
||||
|
||||
const result = await sdk.media.updatePlayProgress(key, time, state);
|
||||
const result = await plexAPI.media.updatePlayProgress(key, time, state);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -34,13 +34,13 @@ Create a new playlist. By default the playlist is blank. To create a playlist al
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { QueryParamType, Smart } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.playlists.createPlaylist({
|
||||
async function run() {
|
||||
const result = await plexAPI.playlists.createPlaylist({
|
||||
title: "<value>",
|
||||
type: QueryParamType.Photo,
|
||||
smart: Smart.One,
|
||||
@@ -83,16 +83,16 @@ Get All Playlists given the specified filters.
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { PlaylistType, QueryParamSmart } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistType = PlaylistType.Audio;
|
||||
const smart = QueryParamSmart.Zero;
|
||||
|
||||
const result = await sdk.playlists.getPlaylists(playlistType, smart);
|
||||
const result = await plexAPI.playlists.getPlaylists(playlistType, smart);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -132,15 +132,15 @@ Smart playlist details contain the `content` attribute. This is the content URI
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 4109.48;
|
||||
|
||||
const result = await sdk.playlists.getPlaylist(playlistID);
|
||||
const result = await plexAPI.playlists.getPlaylist(playlistID);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -178,15 +178,15 @@ This endpoint will delete a playlist
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 216.22;
|
||||
|
||||
const result = await sdk.playlists.deletePlaylist(playlistID);
|
||||
const result = await plexAPI.playlists.deletePlaylist(playlistID);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -224,17 +224,17 @@ From PMS version 1.9.1 clients can also edit playlist metadata using this endpoi
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 3915;
|
||||
const title = "<value>";
|
||||
const summary = "<value>";
|
||||
|
||||
const result = await sdk.playlists.updatePlaylist(playlistID, title, summary);
|
||||
const result = await plexAPI.playlists.updatePlaylist(playlistID, title, summary);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -277,16 +277,16 @@ Note that for dumb playlists, items have a `playlistItemID` attribute which is u
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 5004.46;
|
||||
const type = 9403.59;
|
||||
|
||||
const result = await sdk.playlists.getPlaylistContents(playlistID, type);
|
||||
const result = await plexAPI.playlists.getPlaylistContents(playlistID, type);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -325,15 +325,15 @@ Clears a playlist, only works with dumb playlists. Returns the playlist.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 1893.18;
|
||||
|
||||
const result = await sdk.playlists.clearPlaylistContents(playlistID);
|
||||
const result = await plexAPI.playlists.clearPlaylistContents(playlistID);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -372,17 +372,17 @@ With a smart playlist, passing a new `uri` parameter replaces the rules for the
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const playlistID = 8502.01;
|
||||
const uri = "server://12345/com.plexapp.plugins.library/library/metadata/1";
|
||||
const playQueueID = 123;
|
||||
|
||||
const result = await sdk.playlists.addPlaylistContents(playlistID, uri, playQueueID);
|
||||
const result = await plexAPI.playlists.addPlaylistContents(playlistID, uri, playQueueID);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -423,16 +423,16 @@ Imports m3u playlists by passing a path on the server to scan for m3u-formatted
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Force } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const path = "/home/barkley/playlist.m3u";
|
||||
const force = Force.Zero;
|
||||
|
||||
const result = await sdk.playlists.uploadPlaylist(path, force);
|
||||
const result = await plexAPI.playlists.uploadPlaylist(path, force);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -20,15 +20,15 @@ Retrieve a Pin from Plex.tv for authentication flows
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const strong = false;
|
||||
const xPlexClientIdentifier = "<value>";
|
||||
|
||||
const result = await sdk.plex.getPin(strong, xPlexClientIdentifier);
|
||||
const result = await plexAPI.plex.getPin(strong, xPlexClientIdentifier);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -67,15 +67,15 @@ Retrieve an Access Token from Plex.tv after the Pin has already been authenticat
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const pinID = "<value>";
|
||||
const xPlexClientIdentifier = "<value>";
|
||||
|
||||
const result = await sdk.plex.getToken(pinID, xPlexClientIdentifier);
|
||||
const result = await plexAPI.plex.getToken(pinID, xPlexClientIdentifier);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -33,17 +33,17 @@ This request is intended to be very fast, and called as the user types.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const query = "dylan";
|
||||
const sectionId = 1516.53;
|
||||
const limit = 5;
|
||||
|
||||
const result = await sdk.search.performSearch(query, sectionId, limit);
|
||||
const result = await plexAPI.search.performSearch(query, sectionId, limit);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -86,17 +86,17 @@ Results, as well as their containing per-type hubs, contain a `distance` attribu
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const query = "dead+poop";
|
||||
const sectionId = 4094.8;
|
||||
const limit = 5;
|
||||
|
||||
const result = await sdk.search.performVoiceSearch(query, sectionId, limit);
|
||||
const result = await plexAPI.search.performVoiceSearch(query, sectionId, limit);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -135,15 +135,15 @@ This will search the database for the string provided.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const query = "110";
|
||||
|
||||
const result = await sdk.search.getSearchResults(query);
|
||||
const result = await plexAPI.search.getSearchResults(query);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -26,13 +26,13 @@ Server Capabilities
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerCapabilities();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerCapabilities();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -68,13 +68,13 @@ Get Server Preferences
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerPreferences();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerPreferences();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -110,13 +110,13 @@ Get Available Clients
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getAvailableClients();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getAvailableClients();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -152,13 +152,13 @@ Get Devices
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getDevices();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getDevices();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -194,13 +194,13 @@ Get Server Identity
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerIdentity();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerIdentity();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -236,13 +236,13 @@ Returns MyPlex Account Information
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getMyPlexAccount();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getMyPlexAccount();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -280,13 +280,13 @@ Plex's Photo transcoder is used throughout the service to serve images at specif
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { MinSize, Upscale } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getResizedPhoto({
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getResizedPhoto({
|
||||
width: 110,
|
||||
height: 165,
|
||||
opacity: 100,
|
||||
@@ -331,13 +331,13 @@ Get Server List
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.server.getServerList();
|
||||
async function run() {
|
||||
const result = await plexAPI.server.getServerList();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -22,13 +22,13 @@ This will retrieve the "Now Playing" Information of the PMS.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.sessions.getSessions();
|
||||
async function run() {
|
||||
const result = await plexAPI.sessions.getSessions();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -64,13 +64,13 @@ This will Retrieve a listing of all history views.
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.sessions.getSessionHistory();
|
||||
async function run() {
|
||||
const result = await plexAPI.sessions.getSessionHistory();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -106,13 +106,13 @@ Get Transcode Sessions
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.sessions.getTranscodeSessions();
|
||||
async function run() {
|
||||
const result = await plexAPI.sessions.getTranscodeSessions();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -148,15 +148,15 @@ Stop a Transcode Session
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const sessionKey = "zz7llzqlx8w9vnrsbnwhbmep";
|
||||
|
||||
const result = await sdk.sessions.stopTranscodeSession(sessionKey);
|
||||
const result = await plexAPI.sessions.stopTranscodeSession(sessionKey);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -19,15 +19,15 @@ This will return the media statistics for the server
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const timespan = 411769;
|
||||
|
||||
const result = await sdk.statistics.getStatistics(timespan);
|
||||
const result = await plexAPI.statistics.getStatistics(timespan);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -22,13 +22,13 @@ Querying status of updates
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.updater.getUpdateStatus();
|
||||
async function run() {
|
||||
const result = await plexAPI.updater.getUpdateStatus();
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -65,15 +65,15 @@ Checking for updates
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Download } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const download = Download.One;
|
||||
|
||||
const result = await sdk.updater.checkForUpdates(download);
|
||||
const result = await plexAPI.updater.checkForUpdates(download);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
@@ -112,16 +112,16 @@ Note that these two parameters are effectively mutually exclusive. The `tonight`
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { Skip, Tonight } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
async function run() {
|
||||
const tonight = Tonight.One;
|
||||
const skip = Skip.Zero;
|
||||
|
||||
const result = await sdk.updater.applyUpdates(tonight, skip);
|
||||
const result = await plexAPI.updater.applyUpdates(tonight, skip);
|
||||
|
||||
// Handle the result
|
||||
console.log(result)
|
||||
|
||||
@@ -21,13 +21,13 @@ Get the timeline for a media item
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
import { State } from "@lukehagar/plexjs/models/operations";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.video.getTimeline({
|
||||
async function run() {
|
||||
const result = await plexAPI.video.getTimeline({
|
||||
ratingKey: 716.56,
|
||||
key: "<key>",
|
||||
state: State.Paused,
|
||||
@@ -75,13 +75,13 @@ Begin a Universal Transcode Session
|
||||
```typescript
|
||||
import { PlexAPI } from "@lukehagar/plexjs";
|
||||
|
||||
async function run() {
|
||||
const sdk = new PlexAPI({
|
||||
const plexAPI = new PlexAPI({
|
||||
accessToken: "<YOUR_API_KEY_HERE>",
|
||||
xPlexClientIdentifier: "<value>",
|
||||
});
|
||||
});
|
||||
|
||||
const result = await sdk.video.startUniversalTranscode({
|
||||
async function run() {
|
||||
const result = await plexAPI.video.startUniversalTranscode({
|
||||
hasMDE: 8924.99,
|
||||
path: "/etc/mail",
|
||||
mediaIndex: 9962.95,
|
||||
|
||||
4
gen.yaml
4
gen.yaml
@@ -12,13 +12,15 @@ generation:
|
||||
auth:
|
||||
oAuth2ClientCredentialsEnabled: false
|
||||
typescript:
|
||||
version: 0.12.0
|
||||
version: 0.13.0
|
||||
additionalDependencies:
|
||||
dependencies: {}
|
||||
devDependencies: {}
|
||||
peerDependencies: {}
|
||||
additionalPackageJSON: {}
|
||||
author: LukeHagar
|
||||
clientServerStatusCodesAsErrors: true
|
||||
enumFormat: enum
|
||||
flattenGlobalSecurity: true
|
||||
imports:
|
||||
option: openapi
|
||||
|
||||
26
jsr.json
Normal file
26
jsr.json
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
{
|
||||
"name": "@lukehagar/plexjs",
|
||||
"version": "0.13.0",
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
"./models/errors": "./src/models/errors/index.ts",
|
||||
"./models/components": "./src/models/components/index.ts",
|
||||
"./models/operations": "./src/models/operations/index.ts",
|
||||
"./lib/config": "./src/lib/config.ts",
|
||||
"./lib/http": "./src/lib/http.ts",
|
||||
"./lib/retries": "./src/lib/retries.ts",
|
||||
"./lib/sdks": "./src/lib/sdks.ts",
|
||||
"./types": "./src/types/index.ts"
|
||||
},
|
||||
"publish": {
|
||||
"include": [
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"RUNTIMES.md",
|
||||
"USAGE.md",
|
||||
"src/**/*.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@lukehagar/plexjs",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@lukehagar/plexjs",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0",
|
||||
"devDependencies": {
|
||||
"@types/jsonpath": "^0.2.4",
|
||||
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@lukehagar/plexjs",
|
||||
"version": "0.12.0",
|
||||
"version": "0.13.0",
|
||||
"author": "LukeHagar",
|
||||
"main": "./index.js",
|
||||
"sideEffects": false,
|
||||
@@ -14,7 +14,6 @@
|
||||
"build": "tsc",
|
||||
"prepare": "npm run build"
|
||||
},
|
||||
"keywords": [],
|
||||
"peerDependencies": {
|
||||
"zod": ">= 3"
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
import { HTTPClient } from "./http";
|
||||
import { RetryConfig } from "./retries";
|
||||
import { pathToFunc } from "./url";
|
||||
import { Params, pathToFunc } from "./url";
|
||||
|
||||
/**
|
||||
* Contains the list of servers available to the SDK
|
||||
@@ -62,14 +62,14 @@ export type SDKOptions = {
|
||||
export function serverURLFromOptions(options: SDKOptions): URL | null {
|
||||
let serverURL = options.serverURL;
|
||||
|
||||
const serverParams = [
|
||||
const serverParams: Params[] = [
|
||||
{
|
||||
protocol: options.protocol?.toString() ?? "http",
|
||||
ip: options.ip?.toString() ?? "10.10.10.47",
|
||||
port: options.port?.toString() ?? "32400",
|
||||
protocol: options.protocol ?? "http",
|
||||
ip: options.ip ?? "10.10.10.47",
|
||||
port: options.port ?? "32400",
|
||||
},
|
||||
];
|
||||
let params: Record<string, string> = {};
|
||||
let params: Params = {};
|
||||
|
||||
if (!serverURL) {
|
||||
const serverIdx = options.serverIdx ?? 0;
|
||||
@@ -84,10 +84,10 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
|
||||
return new URL(u);
|
||||
}
|
||||
|
||||
export const SDK_METADATA = Object.freeze({
|
||||
export const SDK_METADATA = {
|
||||
language: "typescript",
|
||||
openapiDocVersion: "0.0.3",
|
||||
sdkVersion: "0.12.0",
|
||||
genVersion: "2.292.0",
|
||||
userAgent: "speakeasy-sdk/typescript 0.12.0 2.292.0 0.0.3 @lukehagar/plexjs",
|
||||
});
|
||||
sdkVersion: "0.13.0",
|
||||
genVersion: "2.311.1",
|
||||
userAgent: "speakeasy-sdk/typescript 0.13.0 2.311.1 0.0.3 @lukehagar/plexjs",
|
||||
} as const;
|
||||
|
||||
@@ -15,7 +15,7 @@ export function encodeMatrix(
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) {
|
||||
): string {
|
||||
let out = "";
|
||||
const pairs: [string, unknown][] = options?.explode
|
||||
? explode(key, value)
|
||||
@@ -65,7 +65,7 @@ export function encodeLabel(
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) {
|
||||
): string {
|
||||
let out = "";
|
||||
const pairs: [string, unknown][] = options?.explode
|
||||
? explode(key, value)
|
||||
@@ -100,7 +100,13 @@ export function encodeLabel(
|
||||
return out;
|
||||
}
|
||||
|
||||
function formEncoder(sep: string) {
|
||||
type FormEncoder = (
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) => string;
|
||||
|
||||
function formEncoder(sep: string): FormEncoder {
|
||||
return (
|
||||
key: string,
|
||||
value: unknown,
|
||||
@@ -157,7 +163,7 @@ export function encodeBodyForm(
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) {
|
||||
): string {
|
||||
let out = "";
|
||||
const pairs: [string, unknown][] = options?.explode
|
||||
? explode(key, value)
|
||||
@@ -200,7 +206,7 @@ export function encodeDeepObject(
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { charEncoding?: "percent" | "none" },
|
||||
) {
|
||||
): string {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
@@ -247,7 +253,7 @@ export function encodeJSON(
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) {
|
||||
): string {
|
||||
if (typeof value === "undefined") {
|
||||
return "";
|
||||
}
|
||||
@@ -265,7 +271,7 @@ export const encodeSimple = (
|
||||
key: string,
|
||||
value: unknown,
|
||||
options?: { explode?: boolean; charEncoding?: "percent" | "none" },
|
||||
) => {
|
||||
): string => {
|
||||
let out = "";
|
||||
const pairs: [string, unknown][] = options?.explode
|
||||
? explode(key, value)
|
||||
@@ -337,7 +343,7 @@ function serializeValue(value: unknown): string {
|
||||
return `${value}`;
|
||||
}
|
||||
|
||||
function jsonReplacer(_: string, value: unknown) {
|
||||
function jsonReplacer(_: string, value: unknown): unknown {
|
||||
if (value instanceof Uint8Array) {
|
||||
return bytesToBase64(value);
|
||||
} else {
|
||||
|
||||
@@ -7,7 +7,7 @@ export type Fetcher = (
|
||||
init?: RequestInit,
|
||||
) => Promise<Response>;
|
||||
|
||||
type Awaitable<T> = T | Promise<T>;
|
||||
export type Awaitable<T> = T | Promise<T>;
|
||||
|
||||
const DEFAULT_FETCHER: Fetcher = (input, init) => fetch(input, init);
|
||||
|
||||
@@ -15,9 +15,9 @@ export interface HTTPClientOptions {
|
||||
fetcher?: Fetcher;
|
||||
}
|
||||
|
||||
type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
|
||||
type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
|
||||
type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
|
||||
export type BeforeRequestHook = (req: Request) => Awaitable<Request | void>;
|
||||
export type RequestErrorHook = (err: unknown, req: Request) => Awaitable<void>;
|
||||
export type ResponseHook = (res: Response, req: Request) => Awaitable<void>;
|
||||
|
||||
export class HTTPClient {
|
||||
private fetcher: Fetcher;
|
||||
@@ -100,7 +100,7 @@ export class HTTPClient {
|
||||
| [hook: "beforeRequest", fn: BeforeRequestHook]
|
||||
| [hook: "requestError", fn: RequestErrorHook]
|
||||
| [hook: "response", fn: ResponseHook]
|
||||
) {
|
||||
): this {
|
||||
let target: unknown[];
|
||||
if (args[0] === "beforeRequest") {
|
||||
target = this.requestHooks;
|
||||
@@ -120,7 +120,7 @@ export class HTTPClient {
|
||||
return this;
|
||||
}
|
||||
|
||||
clone() {
|
||||
clone(): HTTPClient {
|
||||
const child = new HTTPClient(this.options);
|
||||
child.requestHooks = this.requestHooks.slice();
|
||||
child.requestErrorHooks = this.requestErrorHooks.slice();
|
||||
@@ -160,7 +160,7 @@ const codeRangeRE = new RegExp("^[0-9]xx$", "i");
|
||||
export function matchStatusCode(
|
||||
response: Response,
|
||||
codes: number | string | (number | string)[],
|
||||
) {
|
||||
): boolean {
|
||||
const actual = `${response.status}`;
|
||||
const expectedCodes = Array.isArray(codes) ? codes : [codes];
|
||||
if (!expectedCodes.length) {
|
||||
|
||||
@@ -40,7 +40,7 @@ export class ClientSDK {
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
protected createRequest$(conf: RequestConfig, options?: RequestOptions) {
|
||||
protected createRequest$(conf: RequestConfig, options?: RequestOptions): Request {
|
||||
const { method, path, query, headers: opHeaders, security } = conf;
|
||||
|
||||
const base = conf.baseURL ?? this.baseURL;
|
||||
@@ -109,7 +109,7 @@ export class ClientSDK {
|
||||
context: HookContext;
|
||||
errorCodes: number | string | (number | string)[];
|
||||
}
|
||||
) {
|
||||
): Promise<Response> {
|
||||
const { context, errorCodes } = options;
|
||||
|
||||
let response = await this.client.request(await this.hooks$.beforeRequest(context, req));
|
||||
|
||||
@@ -89,14 +89,13 @@ export function resolveSecurity(...options: SecurityInput[][]): SecurityState |
|
||||
|
||||
const option = options.find((opts) => {
|
||||
return opts.every((o) => {
|
||||
switch (true) {
|
||||
case o.value == null:
|
||||
if (o.value == null) {
|
||||
return false;
|
||||
case o.type === "http:basic":
|
||||
} else if (o.type === "http:basic") {
|
||||
return o.value.username != null || o.value.password != null;
|
||||
case typeof o.value === "string":
|
||||
} else if (typeof o.value === "string") {
|
||||
return !!o.value;
|
||||
default:
|
||||
} else {
|
||||
throw new Error(
|
||||
`Unrecognized security type: ${o.type} (value type: ${typeof o.value})`
|
||||
);
|
||||
@@ -170,7 +169,9 @@ function applyBearer(
|
||||
|
||||
state.headers[spec.fieldName] = value;
|
||||
}
|
||||
export function resolveGlobalSecurity(security: Partial<components.Security> | null | undefined) {
|
||||
export function resolveGlobalSecurity(
|
||||
security: Partial<components.Security> | null | undefined
|
||||
): SecurityState | null {
|
||||
return resolveSecurity([
|
||||
{
|
||||
fieldName: "X-Plex-Token",
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
|
||||
const hasOwn = Object.prototype.hasOwnProperty;
|
||||
|
||||
export type Params = Partial<Record<string, string | number>>;
|
||||
|
||||
export function pathToFunc(
|
||||
pathPattern: string,
|
||||
options?: { charEncoding?: "percent" | "none" },
|
||||
): (params?: Record<string, string | number>) => string {
|
||||
): (params?: Params) => string {
|
||||
const paramRE = /\{([a-zA-Z0-9_]+?)\}/g;
|
||||
|
||||
return function buildURLPath(params: Record<string, unknown> = {}): string {
|
||||
|
||||
@@ -17,7 +17,7 @@ export class SDKValidationError extends Error {
|
||||
this.rawValue = rawValue;
|
||||
}
|
||||
|
||||
public override toString() {
|
||||
public override toString(): string {
|
||||
return `${this.message}: ${this.cause}`;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ export class SDKValidationError extends Error {
|
||||
* is a ZodError or some other recognized error type, otherwise return the
|
||||
* default error message.
|
||||
*/
|
||||
public pretty() {
|
||||
public pretty(): string {
|
||||
if (this.cause instanceof z.ZodError) {
|
||||
return `${this.message}\n${formatZodError(this.cause)}`;
|
||||
} else {
|
||||
|
||||
@@ -47,10 +47,10 @@ export type ApplyUpdatesResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Tonight$ = z.nativeEnum(Tonight);
|
||||
export const Tonight$: z.ZodNativeEnum<typeof Tonight> = z.nativeEnum(Tonight);
|
||||
|
||||
/** @internal */
|
||||
export const Skip$ = z.nativeEnum(Skip);
|
||||
export const Skip$: z.ZodNativeEnum<typeof Skip> = z.nativeEnum(Skip);
|
||||
|
||||
/** @internal */
|
||||
export namespace ApplyUpdatesRequest$ {
|
||||
|
||||
@@ -35,7 +35,7 @@ export type CheckForUpdatesResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Download$ = z.nativeEnum(Download);
|
||||
export const Download$: z.ZodNativeEnum<typeof Download> = z.nativeEnum(Download);
|
||||
|
||||
/** @internal */
|
||||
export namespace CheckForUpdatesRequest$ {
|
||||
|
||||
@@ -95,10 +95,10 @@ export type CreatePlaylistResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const QueryParamType$ = z.nativeEnum(QueryParamType);
|
||||
export const QueryParamType$: z.ZodNativeEnum<typeof QueryParamType> = z.nativeEnum(QueryParamType);
|
||||
|
||||
/** @internal */
|
||||
export const Smart$ = z.nativeEnum(Smart);
|
||||
export const Smart$: z.ZodNativeEnum<typeof Smart> = z.nativeEnum(Smart);
|
||||
|
||||
/** @internal */
|
||||
export namespace CreatePlaylistRequest$ {
|
||||
|
||||
@@ -91,7 +91,7 @@ export type GetGlobalHubsResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const OnlyTransient$ = z.nativeEnum(OnlyTransient);
|
||||
export const OnlyTransient$: z.ZodNativeEnum<typeof OnlyTransient> = z.nativeEnum(OnlyTransient);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetGlobalHubsRequest$ {
|
||||
|
||||
@@ -128,7 +128,7 @@ export type GetLibraryResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const IncludeDetails$ = z.nativeEnum(IncludeDetails);
|
||||
export const IncludeDetails$: z.ZodNativeEnum<typeof IncludeDetails> = z.nativeEnum(IncludeDetails);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetLibraryRequest$ {
|
||||
|
||||
@@ -170,7 +170,8 @@ export type GetLibraryHubsResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const QueryParamOnlyTransient$ = z.nativeEnum(QueryParamOnlyTransient);
|
||||
export const QueryParamOnlyTransient$: z.ZodNativeEnum<typeof QueryParamOnlyTransient> =
|
||||
z.nativeEnum(QueryParamOnlyTransient);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetLibraryHubsRequest$ {
|
||||
|
||||
@@ -194,7 +194,7 @@ export type GetLibraryItemsResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Tag$ = z.nativeEnum(Tag);
|
||||
export const Tag$: z.ZodNativeEnum<typeof Tag> = z.nativeEnum(Tag);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetLibraryItemsRequest$ {
|
||||
|
||||
@@ -83,10 +83,11 @@ export type GetPlaylistsResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const PlaylistType$ = z.nativeEnum(PlaylistType);
|
||||
export const PlaylistType$: z.ZodNativeEnum<typeof PlaylistType> = z.nativeEnum(PlaylistType);
|
||||
|
||||
/** @internal */
|
||||
export const QueryParamSmart$ = z.nativeEnum(QueryParamSmart);
|
||||
export const QueryParamSmart$: z.ZodNativeEnum<typeof QueryParamSmart> =
|
||||
z.nativeEnum(QueryParamSmart);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetPlaylistsRequest$ {
|
||||
|
||||
@@ -67,10 +67,10 @@ export type GetResizedPhotoResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const MinSize$ = z.nativeEnum(MinSize);
|
||||
export const MinSize$: z.ZodNativeEnum<typeof MinSize> = z.nativeEnum(MinSize);
|
||||
|
||||
/** @internal */
|
||||
export const Upscale$ = z.nativeEnum(Upscale);
|
||||
export const Upscale$: z.ZodNativeEnum<typeof Upscale> = z.nativeEnum(Upscale);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetResizedPhotoRequest$ {
|
||||
|
||||
@@ -72,7 +72,7 @@ export type GetTimelineResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const State$ = z.nativeEnum(State);
|
||||
export const State$: z.ZodNativeEnum<typeof State> = z.nativeEnum(State);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetTimelineRequest$ {
|
||||
|
||||
@@ -45,10 +45,12 @@ export type GetTransientTokenResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const GetTransientTokenQueryParamType$ = z.nativeEnum(GetTransientTokenQueryParamType);
|
||||
export const GetTransientTokenQueryParamType$: z.ZodNativeEnum<
|
||||
typeof GetTransientTokenQueryParamType
|
||||
> = z.nativeEnum(GetTransientTokenQueryParamType);
|
||||
|
||||
/** @internal */
|
||||
export const Scope$ = z.nativeEnum(Scope);
|
||||
export const Scope$: z.ZodNativeEnum<typeof Scope> = z.nativeEnum(Scope);
|
||||
|
||||
/** @internal */
|
||||
export namespace GetTransientTokenRequest$ {
|
||||
|
||||
@@ -62,7 +62,7 @@ export type LogLineResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Level$ = z.nativeEnum(Level);
|
||||
export const Level$: z.ZodNativeEnum<typeof Level> = z.nativeEnum(Level);
|
||||
|
||||
/** @internal */
|
||||
export namespace LogLineRequest$ {
|
||||
|
||||
@@ -91,7 +91,7 @@ export type SearchLibraryResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Type$ = z.nativeEnum(Type);
|
||||
export const Type$: z.ZodNativeEnum<typeof Type> = z.nativeEnum(Type);
|
||||
|
||||
/** @internal */
|
||||
export namespace SearchLibraryRequest$ {
|
||||
|
||||
@@ -47,7 +47,7 @@ export type StartTaskResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const TaskName$ = z.nativeEnum(TaskName);
|
||||
export const TaskName$: z.ZodNativeEnum<typeof TaskName> = z.nativeEnum(TaskName);
|
||||
|
||||
/** @internal */
|
||||
export namespace StartTaskRequest$ {
|
||||
|
||||
@@ -47,7 +47,8 @@ export type StopTaskResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const PathParamTaskName$ = z.nativeEnum(PathParamTaskName);
|
||||
export const PathParamTaskName$: z.ZodNativeEnum<typeof PathParamTaskName> =
|
||||
z.nativeEnum(PathParamTaskName);
|
||||
|
||||
/** @internal */
|
||||
export namespace StopTaskRequest$ {
|
||||
|
||||
@@ -59,7 +59,7 @@ export type UploadPlaylistResponse = {
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const Force$ = z.nativeEnum(Force);
|
||||
export const Force$: z.ZodNativeEnum<typeof Force> = z.nativeEnum(Force);
|
||||
|
||||
/** @internal */
|
||||
export namespace UploadPlaylistRequest$ {
|
||||
|
||||
@@ -50,77 +50,77 @@ export class PlexAPI extends ClientSDK {
|
||||
}
|
||||
|
||||
private _server?: Server;
|
||||
get server() {
|
||||
get server(): Server {
|
||||
return (this._server ??= new Server(this.options$));
|
||||
}
|
||||
|
||||
private _media?: Media;
|
||||
get media() {
|
||||
get media(): Media {
|
||||
return (this._media ??= new Media(this.options$));
|
||||
}
|
||||
|
||||
private _video?: Video;
|
||||
get video() {
|
||||
get video(): Video {
|
||||
return (this._video ??= new Video(this.options$));
|
||||
}
|
||||
|
||||
private _activities?: Activities;
|
||||
get activities() {
|
||||
get activities(): Activities {
|
||||
return (this._activities ??= new Activities(this.options$));
|
||||
}
|
||||
|
||||
private _butler?: Butler;
|
||||
get butler() {
|
||||
get butler(): Butler {
|
||||
return (this._butler ??= new Butler(this.options$));
|
||||
}
|
||||
|
||||
private _hubs?: Hubs;
|
||||
get hubs() {
|
||||
get hubs(): Hubs {
|
||||
return (this._hubs ??= new Hubs(this.options$));
|
||||
}
|
||||
|
||||
private _search?: Search;
|
||||
get search() {
|
||||
get search(): Search {
|
||||
return (this._search ??= new Search(this.options$));
|
||||
}
|
||||
|
||||
private _library?: Library;
|
||||
get library() {
|
||||
get library(): Library {
|
||||
return (this._library ??= new Library(this.options$));
|
||||
}
|
||||
|
||||
private _log?: Log;
|
||||
get log() {
|
||||
get log(): Log {
|
||||
return (this._log ??= new Log(this.options$));
|
||||
}
|
||||
|
||||
private _plex?: Plex;
|
||||
get plex() {
|
||||
get plex(): Plex {
|
||||
return (this._plex ??= new Plex(this.options$));
|
||||
}
|
||||
|
||||
private _playlists?: Playlists;
|
||||
get playlists() {
|
||||
get playlists(): Playlists {
|
||||
return (this._playlists ??= new Playlists(this.options$));
|
||||
}
|
||||
|
||||
private _authentication?: Authentication;
|
||||
get authentication() {
|
||||
get authentication(): Authentication {
|
||||
return (this._authentication ??= new Authentication(this.options$));
|
||||
}
|
||||
|
||||
private _statistics?: Statistics;
|
||||
get statistics() {
|
||||
get statistics(): Statistics {
|
||||
return (this._statistics ??= new Statistics(this.options$));
|
||||
}
|
||||
|
||||
private _sessions?: Sessions;
|
||||
get sessions() {
|
||||
get sessions(): Sessions {
|
||||
return (this._sessions ??= new Sessions(this.options$));
|
||||
}
|
||||
|
||||
private _updater?: Updater;
|
||||
get updater() {
|
||||
get updater(): Updater {
|
||||
return (this._updater ??= new Updater(this.options$));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
|
||||
import * as z from "zod";
|
||||
|
||||
export const blobLikeSchema = z.custom<Blob>(isBlobLike, {
|
||||
export const blobLikeSchema: z.ZodType<Blob, z.ZodTypeDef, Blob> =
|
||||
z.custom<Blob>(isBlobLike, {
|
||||
message: "expected a Blob, File or Blob-like object",
|
||||
fatal: true,
|
||||
});
|
||||
});
|
||||
|
||||
export function isBlobLike(val: unknown): val is Blob {
|
||||
if (val instanceof Blob) {
|
||||
|
||||
@@ -11,7 +11,7 @@ export type PageIterator<Result> = Result & {
|
||||
|
||||
export function createPageIterator<Result>(
|
||||
page: Result & { next: Paginator<Result> },
|
||||
) {
|
||||
): { [Symbol.asyncIterator]: () => AsyncIterableIterator<Result> } {
|
||||
return {
|
||||
[Symbol.asyncIterator]: async function* paginator() {
|
||||
yield page;
|
||||
|
||||
@@ -10,7 +10,7 @@ export class RFCDate {
|
||||
/**
|
||||
* Creates a new RFCDate instance using today's date.
|
||||
*/
|
||||
static today() {
|
||||
static today(): RFCDate {
|
||||
return new RFCDate(new Date());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user