mirror of
https://github.com/LukeHagar/plexjava.git
synced 2025-12-07 20:47:45 +00:00
891 lines
38 KiB
Java
891 lines
38 KiB
Java
/*
|
|
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
*/
|
|
package dev.plexapi.sdk;
|
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import dev.plexapi.sdk.models.errors.GetButlerTasksBadRequest;
|
|
import dev.plexapi.sdk.models.errors.GetButlerTasksUnauthorized;
|
|
import dev.plexapi.sdk.models.errors.SDKError;
|
|
import dev.plexapi.sdk.models.errors.StartAllTasksBadRequest;
|
|
import dev.plexapi.sdk.models.errors.StartAllTasksUnauthorized;
|
|
import dev.plexapi.sdk.models.errors.StartTaskBadRequest;
|
|
import dev.plexapi.sdk.models.errors.StartTaskUnauthorized;
|
|
import dev.plexapi.sdk.models.errors.StopAllTasksBadRequest;
|
|
import dev.plexapi.sdk.models.errors.StopAllTasksUnauthorized;
|
|
import dev.plexapi.sdk.models.errors.StopTaskBadRequest;
|
|
import dev.plexapi.sdk.models.errors.StopTaskUnauthorized;
|
|
import dev.plexapi.sdk.models.operations.GetButlerTasksRequestBuilder;
|
|
import dev.plexapi.sdk.models.operations.GetButlerTasksResponse;
|
|
import dev.plexapi.sdk.models.operations.GetButlerTasksResponseBody;
|
|
import dev.plexapi.sdk.models.operations.PathParamTaskName;
|
|
import dev.plexapi.sdk.models.operations.SDKMethodInterfaces.*;
|
|
import dev.plexapi.sdk.models.operations.StartAllTasksRequestBuilder;
|
|
import dev.plexapi.sdk.models.operations.StartAllTasksResponse;
|
|
import dev.plexapi.sdk.models.operations.StartTaskRequest;
|
|
import dev.plexapi.sdk.models.operations.StartTaskRequestBuilder;
|
|
import dev.plexapi.sdk.models.operations.StartTaskResponse;
|
|
import dev.plexapi.sdk.models.operations.StopAllTasksRequestBuilder;
|
|
import dev.plexapi.sdk.models.operations.StopAllTasksResponse;
|
|
import dev.plexapi.sdk.models.operations.StopTaskRequest;
|
|
import dev.plexapi.sdk.models.operations.StopTaskRequestBuilder;
|
|
import dev.plexapi.sdk.models.operations.StopTaskResponse;
|
|
import dev.plexapi.sdk.models.operations.TaskName;
|
|
import dev.plexapi.sdk.utils.HTTPClient;
|
|
import dev.plexapi.sdk.utils.HTTPRequest;
|
|
import dev.plexapi.sdk.utils.Hook.AfterErrorContextImpl;
|
|
import dev.plexapi.sdk.utils.Hook.AfterSuccessContextImpl;
|
|
import dev.plexapi.sdk.utils.Hook.BeforeRequestContextImpl;
|
|
import dev.plexapi.sdk.utils.Utils;
|
|
import java.io.InputStream;
|
|
import java.lang.Exception;
|
|
import java.lang.String;
|
|
import java.net.http.HttpRequest;
|
|
import java.net.http.HttpResponse;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
/**
|
|
* Butler is the task manager of the Plex Media Server Ecosystem.
|
|
*/
|
|
public class Butler implements
|
|
MethodCallGetButlerTasks,
|
|
MethodCallStartAllTasks,
|
|
MethodCallStopAllTasks,
|
|
MethodCallStartTask,
|
|
MethodCallStopTask {
|
|
|
|
private final SDKConfiguration sdkConfiguration;
|
|
|
|
Butler(SDKConfiguration sdkConfiguration) {
|
|
this.sdkConfiguration = sdkConfiguration;
|
|
}
|
|
|
|
|
|
/**
|
|
* Get Butler tasks
|
|
*
|
|
* <p>Returns a list of butler tasks
|
|
*
|
|
* @return The call builder
|
|
*/
|
|
public GetButlerTasksRequestBuilder getButlerTasks() {
|
|
return new GetButlerTasksRequestBuilder(this);
|
|
}
|
|
|
|
/**
|
|
* Get Butler tasks
|
|
*
|
|
* <p>Returns a list of butler tasks
|
|
*
|
|
* @return The response from the API call
|
|
* @throws Exception if the API call fails
|
|
*/
|
|
public GetButlerTasksResponse getButlerTasksDirect() throws Exception {
|
|
String _baseUrl = Utils.templateUrl(
|
|
this.sdkConfiguration.serverUrl(), this.sdkConfiguration.getServerVariableDefaults());
|
|
String _url = Utils.generateURL(
|
|
_baseUrl,
|
|
"/butler");
|
|
|
|
HTTPRequest _req = new HTTPRequest(_url, "GET");
|
|
_req.addHeader("Accept", "application/json")
|
|
.addHeader("user-agent",
|
|
SDKConfiguration.USER_AGENT);
|
|
|
|
Optional<SecuritySource> _hookSecuritySource = Optional.of(this.sdkConfiguration.securitySource());
|
|
Utils.configureSecurity(_req,
|
|
this.sdkConfiguration.securitySource().getSecurity());
|
|
HTTPClient _client = this.sdkConfiguration.client();
|
|
HttpRequest _r =
|
|
sdkConfiguration.hooks()
|
|
.beforeRequest(
|
|
new BeforeRequestContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"getButlerTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_req.build());
|
|
HttpResponse<InputStream> _httpRes;
|
|
try {
|
|
_httpRes = _client.send(_r);
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "4XX", "5XX")) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"getButlerTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.of(_httpRes),
|
|
Optional.empty());
|
|
} else {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterSuccess(
|
|
new AfterSuccessContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"getButlerTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_httpRes);
|
|
}
|
|
} catch (Exception _e) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"getButlerTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.empty(),
|
|
Optional.of(_e));
|
|
}
|
|
String _contentType = _httpRes
|
|
.headers()
|
|
.firstValue("Content-Type")
|
|
.orElse("application/octet-stream");
|
|
GetButlerTasksResponse.Builder _resBuilder =
|
|
GetButlerTasksResponse
|
|
.builder()
|
|
.contentType(_contentType)
|
|
.statusCode(_httpRes.statusCode())
|
|
.rawResponse(_httpRes);
|
|
|
|
GetButlerTasksResponse _res = _resBuilder.build();
|
|
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
GetButlerTasksResponseBody _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<GetButlerTasksResponseBody>() {});
|
|
_res.withObject(Optional.ofNullable(_out));
|
|
return _res;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
GetButlerTasksBadRequest _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<GetButlerTasksBadRequest>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
GetButlerTasksUnauthorized _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<GetButlerTasksUnauthorized>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected status code received: " + _httpRes.statusCode(),
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Start all Butler tasks
|
|
*
|
|
* <p>This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
|
|
* 1. Any tasks not scheduled to run on the current day will be skipped.
|
|
* 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
|
|
* 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
|
|
* 4. If we are outside the configured window, the task will start immediately.
|
|
*
|
|
* @return The call builder
|
|
*/
|
|
public StartAllTasksRequestBuilder startAllTasks() {
|
|
return new StartAllTasksRequestBuilder(this);
|
|
}
|
|
|
|
/**
|
|
* Start all Butler tasks
|
|
*
|
|
* <p>This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
|
|
* 1. Any tasks not scheduled to run on the current day will be skipped.
|
|
* 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
|
|
* 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
|
|
* 4. If we are outside the configured window, the task will start immediately.
|
|
*
|
|
* @return The response from the API call
|
|
* @throws Exception if the API call fails
|
|
*/
|
|
public StartAllTasksResponse startAllTasksDirect() throws Exception {
|
|
String _baseUrl = Utils.templateUrl(
|
|
this.sdkConfiguration.serverUrl(), this.sdkConfiguration.getServerVariableDefaults());
|
|
String _url = Utils.generateURL(
|
|
_baseUrl,
|
|
"/butler");
|
|
|
|
HTTPRequest _req = new HTTPRequest(_url, "POST");
|
|
_req.addHeader("Accept", "application/json")
|
|
.addHeader("user-agent",
|
|
SDKConfiguration.USER_AGENT);
|
|
|
|
Optional<SecuritySource> _hookSecuritySource = Optional.of(this.sdkConfiguration.securitySource());
|
|
Utils.configureSecurity(_req,
|
|
this.sdkConfiguration.securitySource().getSecurity());
|
|
HTTPClient _client = this.sdkConfiguration.client();
|
|
HttpRequest _r =
|
|
sdkConfiguration.hooks()
|
|
.beforeRequest(
|
|
new BeforeRequestContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_req.build());
|
|
HttpResponse<InputStream> _httpRes;
|
|
try {
|
|
_httpRes = _client.send(_r);
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "4XX", "5XX")) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.of(_httpRes),
|
|
Optional.empty());
|
|
} else {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterSuccess(
|
|
new AfterSuccessContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_httpRes);
|
|
}
|
|
} catch (Exception _e) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.empty(),
|
|
Optional.of(_e));
|
|
}
|
|
String _contentType = _httpRes
|
|
.headers()
|
|
.firstValue("Content-Type")
|
|
.orElse("application/octet-stream");
|
|
StartAllTasksResponse.Builder _resBuilder =
|
|
StartAllTasksResponse
|
|
.builder()
|
|
.contentType(_contentType)
|
|
.statusCode(_httpRes.statusCode())
|
|
.rawResponse(_httpRes);
|
|
|
|
StartAllTasksResponse _res = _resBuilder.build();
|
|
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
|
|
// no content
|
|
return _res;
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StartAllTasksBadRequest _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StartAllTasksBadRequest>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StartAllTasksUnauthorized _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StartAllTasksUnauthorized>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected status code received: " + _httpRes.statusCode(),
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Stop all Butler tasks
|
|
*
|
|
* <p>This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
|
|
*
|
|
* @return The call builder
|
|
*/
|
|
public StopAllTasksRequestBuilder stopAllTasks() {
|
|
return new StopAllTasksRequestBuilder(this);
|
|
}
|
|
|
|
/**
|
|
* Stop all Butler tasks
|
|
*
|
|
* <p>This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
|
|
*
|
|
* @return The response from the API call
|
|
* @throws Exception if the API call fails
|
|
*/
|
|
public StopAllTasksResponse stopAllTasksDirect() throws Exception {
|
|
String _baseUrl = Utils.templateUrl(
|
|
this.sdkConfiguration.serverUrl(), this.sdkConfiguration.getServerVariableDefaults());
|
|
String _url = Utils.generateURL(
|
|
_baseUrl,
|
|
"/butler");
|
|
|
|
HTTPRequest _req = new HTTPRequest(_url, "DELETE");
|
|
_req.addHeader("Accept", "application/json")
|
|
.addHeader("user-agent",
|
|
SDKConfiguration.USER_AGENT);
|
|
|
|
Optional<SecuritySource> _hookSecuritySource = Optional.of(this.sdkConfiguration.securitySource());
|
|
Utils.configureSecurity(_req,
|
|
this.sdkConfiguration.securitySource().getSecurity());
|
|
HTTPClient _client = this.sdkConfiguration.client();
|
|
HttpRequest _r =
|
|
sdkConfiguration.hooks()
|
|
.beforeRequest(
|
|
new BeforeRequestContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_req.build());
|
|
HttpResponse<InputStream> _httpRes;
|
|
try {
|
|
_httpRes = _client.send(_r);
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "4XX", "5XX")) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.of(_httpRes),
|
|
Optional.empty());
|
|
} else {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterSuccess(
|
|
new AfterSuccessContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_httpRes);
|
|
}
|
|
} catch (Exception _e) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopAllTasks",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.empty(),
|
|
Optional.of(_e));
|
|
}
|
|
String _contentType = _httpRes
|
|
.headers()
|
|
.firstValue("Content-Type")
|
|
.orElse("application/octet-stream");
|
|
StopAllTasksResponse.Builder _resBuilder =
|
|
StopAllTasksResponse
|
|
.builder()
|
|
.contentType(_contentType)
|
|
.statusCode(_httpRes.statusCode())
|
|
.rawResponse(_httpRes);
|
|
|
|
StopAllTasksResponse _res = _resBuilder.build();
|
|
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
|
|
// no content
|
|
return _res;
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StopAllTasksBadRequest _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StopAllTasksBadRequest>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StopAllTasksUnauthorized _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StopAllTasksUnauthorized>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected status code received: " + _httpRes.statusCode(),
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Start a single Butler task
|
|
*
|
|
* <p>This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
|
|
* 1. Any tasks not scheduled to run on the current day will be skipped.
|
|
* 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
|
|
* 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
|
|
* 4. If we are outside the configured window, the task will start immediately.
|
|
*
|
|
* @return The call builder
|
|
*/
|
|
public StartTaskRequestBuilder startTask() {
|
|
return new StartTaskRequestBuilder(this);
|
|
}
|
|
|
|
/**
|
|
* Start a single Butler task
|
|
*
|
|
* <p>This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
|
|
* 1. Any tasks not scheduled to run on the current day will be skipped.
|
|
* 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
|
|
* 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
|
|
* 4. If we are outside the configured window, the task will start immediately.
|
|
*
|
|
* @param taskName the name of the task to be started.
|
|
* @return The response from the API call
|
|
* @throws Exception if the API call fails
|
|
*/
|
|
public StartTaskResponse startTask(
|
|
TaskName taskName) throws Exception {
|
|
StartTaskRequest request =
|
|
StartTaskRequest
|
|
.builder()
|
|
.taskName(taskName)
|
|
.build();
|
|
|
|
String _baseUrl = Utils.templateUrl(
|
|
this.sdkConfiguration.serverUrl(), this.sdkConfiguration.getServerVariableDefaults());
|
|
String _url = Utils.generateURL(
|
|
StartTaskRequest.class,
|
|
_baseUrl,
|
|
"/butler/{taskName}",
|
|
request, null);
|
|
|
|
HTTPRequest _req = new HTTPRequest(_url, "POST");
|
|
_req.addHeader("Accept", "application/json")
|
|
.addHeader("user-agent",
|
|
SDKConfiguration.USER_AGENT);
|
|
|
|
Optional<SecuritySource> _hookSecuritySource = Optional.of(this.sdkConfiguration.securitySource());
|
|
Utils.configureSecurity(_req,
|
|
this.sdkConfiguration.securitySource().getSecurity());
|
|
HTTPClient _client = this.sdkConfiguration.client();
|
|
HttpRequest _r =
|
|
sdkConfiguration.hooks()
|
|
.beforeRequest(
|
|
new BeforeRequestContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_req.build());
|
|
HttpResponse<InputStream> _httpRes;
|
|
try {
|
|
_httpRes = _client.send(_r);
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "4XX", "5XX")) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.of(_httpRes),
|
|
Optional.empty());
|
|
} else {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterSuccess(
|
|
new AfterSuccessContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_httpRes);
|
|
}
|
|
} catch (Exception _e) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"startTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.empty(),
|
|
Optional.of(_e));
|
|
}
|
|
String _contentType = _httpRes
|
|
.headers()
|
|
.firstValue("Content-Type")
|
|
.orElse("application/octet-stream");
|
|
StartTaskResponse.Builder _resBuilder =
|
|
StartTaskResponse
|
|
.builder()
|
|
.contentType(_contentType)
|
|
.statusCode(_httpRes.statusCode())
|
|
.rawResponse(_httpRes);
|
|
|
|
StartTaskResponse _res = _resBuilder.build();
|
|
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "200", "202")) {
|
|
// no content
|
|
return _res;
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StartTaskBadRequest _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StartTaskBadRequest>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StartTaskUnauthorized _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StartTaskUnauthorized>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected status code received: " + _httpRes.statusCode(),
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Stop a single Butler task
|
|
*
|
|
* <p>This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint.
|
|
*
|
|
* @return The call builder
|
|
*/
|
|
public StopTaskRequestBuilder stopTask() {
|
|
return new StopTaskRequestBuilder(this);
|
|
}
|
|
|
|
/**
|
|
* Stop a single Butler task
|
|
*
|
|
* <p>This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint.
|
|
*
|
|
* @param taskName The name of the task to be started.
|
|
* @return The response from the API call
|
|
* @throws Exception if the API call fails
|
|
*/
|
|
public StopTaskResponse stopTask(
|
|
PathParamTaskName taskName) throws Exception {
|
|
StopTaskRequest request =
|
|
StopTaskRequest
|
|
.builder()
|
|
.taskName(taskName)
|
|
.build();
|
|
|
|
String _baseUrl = Utils.templateUrl(
|
|
this.sdkConfiguration.serverUrl(), this.sdkConfiguration.getServerVariableDefaults());
|
|
String _url = Utils.generateURL(
|
|
StopTaskRequest.class,
|
|
_baseUrl,
|
|
"/butler/{taskName}",
|
|
request, null);
|
|
|
|
HTTPRequest _req = new HTTPRequest(_url, "DELETE");
|
|
_req.addHeader("Accept", "application/json")
|
|
.addHeader("user-agent",
|
|
SDKConfiguration.USER_AGENT);
|
|
|
|
Optional<SecuritySource> _hookSecuritySource = Optional.of(this.sdkConfiguration.securitySource());
|
|
Utils.configureSecurity(_req,
|
|
this.sdkConfiguration.securitySource().getSecurity());
|
|
HTTPClient _client = this.sdkConfiguration.client();
|
|
HttpRequest _r =
|
|
sdkConfiguration.hooks()
|
|
.beforeRequest(
|
|
new BeforeRequestContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_req.build());
|
|
HttpResponse<InputStream> _httpRes;
|
|
try {
|
|
_httpRes = _client.send(_r);
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "404", "4XX", "5XX")) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.of(_httpRes),
|
|
Optional.empty());
|
|
} else {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterSuccess(
|
|
new AfterSuccessContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
_httpRes);
|
|
}
|
|
} catch (Exception _e) {
|
|
_httpRes = sdkConfiguration.hooks()
|
|
.afterError(
|
|
new AfterErrorContextImpl(
|
|
this.sdkConfiguration,
|
|
_baseUrl,
|
|
"stopTask",
|
|
Optional.of(List.of()),
|
|
_hookSecuritySource),
|
|
Optional.empty(),
|
|
Optional.of(_e));
|
|
}
|
|
String _contentType = _httpRes
|
|
.headers()
|
|
.firstValue("Content-Type")
|
|
.orElse("application/octet-stream");
|
|
StopTaskResponse.Builder _resBuilder =
|
|
StopTaskResponse
|
|
.builder()
|
|
.contentType(_contentType)
|
|
.statusCode(_httpRes.statusCode())
|
|
.rawResponse(_httpRes);
|
|
|
|
StopTaskResponse _res = _resBuilder.build();
|
|
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) {
|
|
// no content
|
|
return _res;
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StopTaskBadRequest _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StopTaskBadRequest>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) {
|
|
if (Utils.contentTypeMatches(_contentType, "application/json")) {
|
|
StopTaskUnauthorized _out = Utils.mapper().readValue(
|
|
Utils.toUtf8AndClose(_httpRes.body()),
|
|
new TypeReference<StopTaskUnauthorized>() {});
|
|
_out.withRawResponse(Optional.ofNullable(_httpRes));
|
|
|
|
throw _out;
|
|
} else {
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected content-type received: " + _contentType,
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "404", "4XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) {
|
|
// no content
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"API error occurred",
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
throw new SDKError(
|
|
_httpRes,
|
|
_httpRes.statusCode(),
|
|
"Unexpected status code received: " + _httpRes.statusCode(),
|
|
Utils.extractByteArrayFromBody(_httpRes));
|
|
}
|
|
|
|
}
|