use std::error::Error;
use std::fmt;
use std::io;
#[allow(warnings)]
use futures::future;
use futures::Future;
use rusoto_core::region;
use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
use rusoto_core::{Client, RusotoFuture};
use rusoto_core::credential::{CredentialsError, ProvideAwsCredentials};
use rusoto_core::request::HttpDispatchError;
use rusoto_core::signature::SignedRequest;
use serde_json;
use serde_json::from_slice;
use serde_json::Value as SerdeJsonValue;
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct ActivatePipelineInput {
#[serde(rename = "parameterValues")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_values: Option<Vec<ParameterValue>>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "startTimestamp")]
#[serde(skip_serializing_if = "Option::is_none")]
pub start_timestamp: Option<f64>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ActivatePipelineOutput {}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct AddTagsInput {
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "tags")]
pub tags: Vec<Tag>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct AddTagsOutput {}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct CreatePipelineInput {
#[serde(rename = "description")]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<Tag>>,
#[serde(rename = "uniqueId")]
pub unique_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct CreatePipelineOutput {
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct DeactivatePipelineInput {
#[serde(rename = "cancelActive")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cancel_active: Option<bool>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct DeactivatePipelineOutput {}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct DeletePipelineInput {
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct DescribeObjectsInput {
#[serde(rename = "evaluateExpressions")]
#[serde(skip_serializing_if = "Option::is_none")]
pub evaluate_expressions: Option<bool>,
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
#[serde(rename = "objectIds")]
pub object_ids: Vec<String>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct DescribeObjectsOutput {
#[serde(rename = "hasMoreResults")]
#[serde(skip_serializing_if = "Option::is_none")]
pub has_more_results: Option<bool>,
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
#[serde(rename = "pipelineObjects")]
pub pipeline_objects: Vec<PipelineObject>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct DescribePipelinesInput {
#[serde(rename = "pipelineIds")]
pub pipeline_ids: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct DescribePipelinesOutput {
#[serde(rename = "pipelineDescriptionList")]
pub pipeline_description_list: Vec<PipelineDescription>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct EvaluateExpressionInput {
#[serde(rename = "expression")]
pub expression: String,
#[serde(rename = "objectId")]
pub object_id: String,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct EvaluateExpressionOutput {
#[serde(rename = "evaluatedExpression")]
pub evaluated_expression: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Field {
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "refValue")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ref_value: Option<String>,
#[serde(rename = "stringValue")]
#[serde(skip_serializing_if = "Option::is_none")]
pub string_value: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct GetPipelineDefinitionInput {
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "version")]
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct GetPipelineDefinitionOutput {
#[serde(rename = "parameterObjects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_objects: Option<Vec<ParameterObject>>,
#[serde(rename = "parameterValues")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_values: Option<Vec<ParameterValue>>,
#[serde(rename = "pipelineObjects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pipeline_objects: Option<Vec<PipelineObject>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct InstanceIdentity {
#[serde(rename = "document")]
#[serde(skip_serializing_if = "Option::is_none")]
pub document: Option<String>,
#[serde(rename = "signature")]
#[serde(skip_serializing_if = "Option::is_none")]
pub signature: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct ListPipelinesInput {
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ListPipelinesOutput {
#[serde(rename = "hasMoreResults")]
#[serde(skip_serializing_if = "Option::is_none")]
pub has_more_results: Option<bool>,
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
#[serde(rename = "pipelineIdList")]
pub pipeline_id_list: Vec<PipelineIdName>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct Operator {
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(rename = "values")]
#[serde(skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParameterAttribute {
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "stringValue")]
pub string_value: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParameterObject {
#[serde(rename = "attributes")]
pub attributes: Vec<ParameterAttribute>,
#[serde(rename = "id")]
pub id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParameterValue {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "stringValue")]
pub string_value: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct PipelineDescription {
#[serde(rename = "description")]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "fields")]
pub fields: Vec<Field>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<Tag>>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct PipelineIdName {
#[serde(rename = "id")]
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PipelineObject {
#[serde(rename = "fields")]
pub fields: Vec<Field>,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "name")]
pub name: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct PollForTaskInput {
#[serde(rename = "hostname")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(rename = "instanceIdentity")]
#[serde(skip_serializing_if = "Option::is_none")]
pub instance_identity: Option<InstanceIdentity>,
#[serde(rename = "workerGroup")]
pub worker_group: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct PollForTaskOutput {
#[serde(rename = "taskObject")]
#[serde(skip_serializing_if = "Option::is_none")]
pub task_object: Option<TaskObject>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct PutPipelineDefinitionInput {
#[serde(rename = "parameterObjects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_objects: Option<Vec<ParameterObject>>,
#[serde(rename = "parameterValues")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_values: Option<Vec<ParameterValue>>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "pipelineObjects")]
pub pipeline_objects: Vec<PipelineObject>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct PutPipelineDefinitionOutput {
#[serde(rename = "errored")]
pub errored: bool,
#[serde(rename = "validationErrors")]
#[serde(skip_serializing_if = "Option::is_none")]
pub validation_errors: Option<Vec<ValidationError>>,
#[serde(rename = "validationWarnings")]
#[serde(skip_serializing_if = "Option::is_none")]
pub validation_warnings: Option<Vec<ValidationWarning>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct Query {
#[serde(rename = "selectors")]
#[serde(skip_serializing_if = "Option::is_none")]
pub selectors: Option<Vec<Selector>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct QueryObjectsInput {
#[serde(rename = "limit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "query")]
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<Query>,
#[serde(rename = "sphere")]
pub sphere: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct QueryObjectsOutput {
#[serde(rename = "hasMoreResults")]
#[serde(skip_serializing_if = "Option::is_none")]
pub has_more_results: Option<bool>,
#[serde(rename = "ids")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ids: Option<Vec<String>>,
#[serde(rename = "marker")]
#[serde(skip_serializing_if = "Option::is_none")]
pub marker: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct RemoveTagsInput {
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "tagKeys")]
pub tag_keys: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct RemoveTagsOutput {}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct ReportTaskProgressInput {
#[serde(rename = "fields")]
#[serde(skip_serializing_if = "Option::is_none")]
pub fields: Option<Vec<Field>>,
#[serde(rename = "taskId")]
pub task_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ReportTaskProgressOutput {
#[serde(rename = "canceled")]
pub canceled: bool,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct ReportTaskRunnerHeartbeatInput {
#[serde(rename = "hostname")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(rename = "taskrunnerId")]
pub taskrunner_id: String,
#[serde(rename = "workerGroup")]
#[serde(skip_serializing_if = "Option::is_none")]
pub worker_group: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ReportTaskRunnerHeartbeatOutput {
#[serde(rename = "terminate")]
pub terminate: bool,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct Selector {
#[serde(rename = "fieldName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub field_name: Option<String>,
#[serde(rename = "operator")]
#[serde(skip_serializing_if = "Option::is_none")]
pub operator: Option<Operator>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct SetStatusInput {
#[serde(rename = "objectIds")]
pub object_ids: Vec<String>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "status")]
pub status: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct SetTaskStatusInput {
#[serde(rename = "errorId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_id: Option<String>,
#[serde(rename = "errorMessage")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(rename = "errorStackTrace")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_stack_trace: Option<String>,
#[serde(rename = "taskId")]
pub task_id: String,
#[serde(rename = "taskStatus")]
pub task_status: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct SetTaskStatusOutput {}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Tag {
#[serde(rename = "key")]
pub key: String,
#[serde(rename = "value")]
pub value: String,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct TaskObject {
#[serde(rename = "attemptId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub attempt_id: Option<String>,
#[serde(rename = "objects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub objects: Option<::std::collections::HashMap<String, PipelineObject>>,
#[serde(rename = "pipelineId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub pipeline_id: Option<String>,
#[serde(rename = "taskId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub task_id: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize)]
pub struct ValidatePipelineDefinitionInput {
#[serde(rename = "parameterObjects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_objects: Option<Vec<ParameterObject>>,
#[serde(rename = "parameterValues")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameter_values: Option<Vec<ParameterValue>>,
#[serde(rename = "pipelineId")]
pub pipeline_id: String,
#[serde(rename = "pipelineObjects")]
pub pipeline_objects: Vec<PipelineObject>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ValidatePipelineDefinitionOutput {
#[serde(rename = "errored")]
pub errored: bool,
#[serde(rename = "validationErrors")]
#[serde(skip_serializing_if = "Option::is_none")]
pub validation_errors: Option<Vec<ValidationError>>,
#[serde(rename = "validationWarnings")]
#[serde(skip_serializing_if = "Option::is_none")]
pub validation_warnings: Option<Vec<ValidationWarning>>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ValidationError {
#[serde(rename = "errors")]
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<String>>,
#[serde(rename = "id")]
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Deserialize)]
#[cfg_attr(test, derive(Serialize))]
pub struct ValidationWarning {
#[serde(rename = "id")]
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "warnings")]
#[serde(skip_serializing_if = "Option::is_none")]
pub warnings: Option<Vec<String>>,
}
#[derive(Debug, PartialEq)]
pub enum ActivatePipelineError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl ActivatePipelineError {
pub fn from_response(res: BufferedHttpResponse) -> ActivatePipelineError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return ActivatePipelineError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return ActivatePipelineError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return ActivatePipelineError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return ActivatePipelineError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return ActivatePipelineError::Validation(error_message.to_string())
}
_ => {}
}
}
return ActivatePipelineError::Unknown(res);
}
}
impl From<serde_json::error::Error> for ActivatePipelineError {
fn from(err: serde_json::error::Error) -> ActivatePipelineError {
ActivatePipelineError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for ActivatePipelineError {
fn from(err: CredentialsError) -> ActivatePipelineError {
ActivatePipelineError::Credentials(err)
}
}
impl From<HttpDispatchError> for ActivatePipelineError {
fn from(err: HttpDispatchError) -> ActivatePipelineError {
ActivatePipelineError::HttpDispatch(err)
}
}
impl From<io::Error> for ActivatePipelineError {
fn from(err: io::Error) -> ActivatePipelineError {
ActivatePipelineError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for ActivatePipelineError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for ActivatePipelineError {
fn description(&self) -> &str {
match *self {
ActivatePipelineError::InternalServiceError(ref cause) => cause,
ActivatePipelineError::InvalidRequest(ref cause) => cause,
ActivatePipelineError::PipelineDeleted(ref cause) => cause,
ActivatePipelineError::PipelineNotFound(ref cause) => cause,
ActivatePipelineError::Validation(ref cause) => cause,
ActivatePipelineError::Credentials(ref err) => err.description(),
ActivatePipelineError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
ActivatePipelineError::ParseError(ref cause) => cause,
ActivatePipelineError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum AddTagsError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl AddTagsError {
pub fn from_response(res: BufferedHttpResponse) -> AddTagsError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return AddTagsError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return AddTagsError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return AddTagsError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return AddTagsError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => return AddTagsError::Validation(error_message.to_string()),
_ => {}
}
}
return AddTagsError::Unknown(res);
}
}
impl From<serde_json::error::Error> for AddTagsError {
fn from(err: serde_json::error::Error) -> AddTagsError {
AddTagsError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for AddTagsError {
fn from(err: CredentialsError) -> AddTagsError {
AddTagsError::Credentials(err)
}
}
impl From<HttpDispatchError> for AddTagsError {
fn from(err: HttpDispatchError) -> AddTagsError {
AddTagsError::HttpDispatch(err)
}
}
impl From<io::Error> for AddTagsError {
fn from(err: io::Error) -> AddTagsError {
AddTagsError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for AddTagsError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for AddTagsError {
fn description(&self) -> &str {
match *self {
AddTagsError::InternalServiceError(ref cause) => cause,
AddTagsError::InvalidRequest(ref cause) => cause,
AddTagsError::PipelineDeleted(ref cause) => cause,
AddTagsError::PipelineNotFound(ref cause) => cause,
AddTagsError::Validation(ref cause) => cause,
AddTagsError::Credentials(ref err) => err.description(),
AddTagsError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
AddTagsError::ParseError(ref cause) => cause,
AddTagsError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum CreatePipelineError {
InternalServiceError(String),
InvalidRequest(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl CreatePipelineError {
pub fn from_response(res: BufferedHttpResponse) -> CreatePipelineError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return CreatePipelineError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return CreatePipelineError::InvalidRequest(String::from(error_message))
}
"ValidationException" => {
return CreatePipelineError::Validation(error_message.to_string())
}
_ => {}
}
}
return CreatePipelineError::Unknown(res);
}
}
impl From<serde_json::error::Error> for CreatePipelineError {
fn from(err: serde_json::error::Error) -> CreatePipelineError {
CreatePipelineError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for CreatePipelineError {
fn from(err: CredentialsError) -> CreatePipelineError {
CreatePipelineError::Credentials(err)
}
}
impl From<HttpDispatchError> for CreatePipelineError {
fn from(err: HttpDispatchError) -> CreatePipelineError {
CreatePipelineError::HttpDispatch(err)
}
}
impl From<io::Error> for CreatePipelineError {
fn from(err: io::Error) -> CreatePipelineError {
CreatePipelineError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for CreatePipelineError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for CreatePipelineError {
fn description(&self) -> &str {
match *self {
CreatePipelineError::InternalServiceError(ref cause) => cause,
CreatePipelineError::InvalidRequest(ref cause) => cause,
CreatePipelineError::Validation(ref cause) => cause,
CreatePipelineError::Credentials(ref err) => err.description(),
CreatePipelineError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
CreatePipelineError::ParseError(ref cause) => cause,
CreatePipelineError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum DeactivatePipelineError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl DeactivatePipelineError {
pub fn from_response(res: BufferedHttpResponse) -> DeactivatePipelineError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return DeactivatePipelineError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return DeactivatePipelineError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return DeactivatePipelineError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return DeactivatePipelineError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return DeactivatePipelineError::Validation(error_message.to_string())
}
_ => {}
}
}
return DeactivatePipelineError::Unknown(res);
}
}
impl From<serde_json::error::Error> for DeactivatePipelineError {
fn from(err: serde_json::error::Error) -> DeactivatePipelineError {
DeactivatePipelineError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for DeactivatePipelineError {
fn from(err: CredentialsError) -> DeactivatePipelineError {
DeactivatePipelineError::Credentials(err)
}
}
impl From<HttpDispatchError> for DeactivatePipelineError {
fn from(err: HttpDispatchError) -> DeactivatePipelineError {
DeactivatePipelineError::HttpDispatch(err)
}
}
impl From<io::Error> for DeactivatePipelineError {
fn from(err: io::Error) -> DeactivatePipelineError {
DeactivatePipelineError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for DeactivatePipelineError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for DeactivatePipelineError {
fn description(&self) -> &str {
match *self {
DeactivatePipelineError::InternalServiceError(ref cause) => cause,
DeactivatePipelineError::InvalidRequest(ref cause) => cause,
DeactivatePipelineError::PipelineDeleted(ref cause) => cause,
DeactivatePipelineError::PipelineNotFound(ref cause) => cause,
DeactivatePipelineError::Validation(ref cause) => cause,
DeactivatePipelineError::Credentials(ref err) => err.description(),
DeactivatePipelineError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
DeactivatePipelineError::ParseError(ref cause) => cause,
DeactivatePipelineError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum DeletePipelineError {
InternalServiceError(String),
InvalidRequest(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl DeletePipelineError {
pub fn from_response(res: BufferedHttpResponse) -> DeletePipelineError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return DeletePipelineError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return DeletePipelineError::InvalidRequest(String::from(error_message))
}
"PipelineNotFoundException" => {
return DeletePipelineError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return DeletePipelineError::Validation(error_message.to_string())
}
_ => {}
}
}
return DeletePipelineError::Unknown(res);
}
}
impl From<serde_json::error::Error> for DeletePipelineError {
fn from(err: serde_json::error::Error) -> DeletePipelineError {
DeletePipelineError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for DeletePipelineError {
fn from(err: CredentialsError) -> DeletePipelineError {
DeletePipelineError::Credentials(err)
}
}
impl From<HttpDispatchError> for DeletePipelineError {
fn from(err: HttpDispatchError) -> DeletePipelineError {
DeletePipelineError::HttpDispatch(err)
}
}
impl From<io::Error> for DeletePipelineError {
fn from(err: io::Error) -> DeletePipelineError {
DeletePipelineError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for DeletePipelineError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for DeletePipelineError {
fn description(&self) -> &str {
match *self {
DeletePipelineError::InternalServiceError(ref cause) => cause,
DeletePipelineError::InvalidRequest(ref cause) => cause,
DeletePipelineError::PipelineNotFound(ref cause) => cause,
DeletePipelineError::Validation(ref cause) => cause,
DeletePipelineError::Credentials(ref err) => err.description(),
DeletePipelineError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
DeletePipelineError::ParseError(ref cause) => cause,
DeletePipelineError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum DescribeObjectsError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl DescribeObjectsError {
pub fn from_response(res: BufferedHttpResponse) -> DescribeObjectsError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return DescribeObjectsError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return DescribeObjectsError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return DescribeObjectsError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return DescribeObjectsError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return DescribeObjectsError::Validation(error_message.to_string())
}
_ => {}
}
}
return DescribeObjectsError::Unknown(res);
}
}
impl From<serde_json::error::Error> for DescribeObjectsError {
fn from(err: serde_json::error::Error) -> DescribeObjectsError {
DescribeObjectsError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for DescribeObjectsError {
fn from(err: CredentialsError) -> DescribeObjectsError {
DescribeObjectsError::Credentials(err)
}
}
impl From<HttpDispatchError> for DescribeObjectsError {
fn from(err: HttpDispatchError) -> DescribeObjectsError {
DescribeObjectsError::HttpDispatch(err)
}
}
impl From<io::Error> for DescribeObjectsError {
fn from(err: io::Error) -> DescribeObjectsError {
DescribeObjectsError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for DescribeObjectsError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for DescribeObjectsError {
fn description(&self) -> &str {
match *self {
DescribeObjectsError::InternalServiceError(ref cause) => cause,
DescribeObjectsError::InvalidRequest(ref cause) => cause,
DescribeObjectsError::PipelineDeleted(ref cause) => cause,
DescribeObjectsError::PipelineNotFound(ref cause) => cause,
DescribeObjectsError::Validation(ref cause) => cause,
DescribeObjectsError::Credentials(ref err) => err.description(),
DescribeObjectsError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
DescribeObjectsError::ParseError(ref cause) => cause,
DescribeObjectsError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum DescribePipelinesError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl DescribePipelinesError {
pub fn from_response(res: BufferedHttpResponse) -> DescribePipelinesError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return DescribePipelinesError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return DescribePipelinesError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return DescribePipelinesError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return DescribePipelinesError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return DescribePipelinesError::Validation(error_message.to_string())
}
_ => {}
}
}
return DescribePipelinesError::Unknown(res);
}
}
impl From<serde_json::error::Error> for DescribePipelinesError {
fn from(err: serde_json::error::Error) -> DescribePipelinesError {
DescribePipelinesError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for DescribePipelinesError {
fn from(err: CredentialsError) -> DescribePipelinesError {
DescribePipelinesError::Credentials(err)
}
}
impl From<HttpDispatchError> for DescribePipelinesError {
fn from(err: HttpDispatchError) -> DescribePipelinesError {
DescribePipelinesError::HttpDispatch(err)
}
}
impl From<io::Error> for DescribePipelinesError {
fn from(err: io::Error) -> DescribePipelinesError {
DescribePipelinesError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for DescribePipelinesError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for DescribePipelinesError {
fn description(&self) -> &str {
match *self {
DescribePipelinesError::InternalServiceError(ref cause) => cause,
DescribePipelinesError::InvalidRequest(ref cause) => cause,
DescribePipelinesError::PipelineDeleted(ref cause) => cause,
DescribePipelinesError::PipelineNotFound(ref cause) => cause,
DescribePipelinesError::Validation(ref cause) => cause,
DescribePipelinesError::Credentials(ref err) => err.description(),
DescribePipelinesError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
DescribePipelinesError::ParseError(ref cause) => cause,
DescribePipelinesError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum EvaluateExpressionError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
TaskNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl EvaluateExpressionError {
pub fn from_response(res: BufferedHttpResponse) -> EvaluateExpressionError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return EvaluateExpressionError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return EvaluateExpressionError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return EvaluateExpressionError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return EvaluateExpressionError::PipelineNotFound(String::from(error_message))
}
"TaskNotFoundException" => {
return EvaluateExpressionError::TaskNotFound(String::from(error_message))
}
"ValidationException" => {
return EvaluateExpressionError::Validation(error_message.to_string())
}
_ => {}
}
}
return EvaluateExpressionError::Unknown(res);
}
}
impl From<serde_json::error::Error> for EvaluateExpressionError {
fn from(err: serde_json::error::Error) -> EvaluateExpressionError {
EvaluateExpressionError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for EvaluateExpressionError {
fn from(err: CredentialsError) -> EvaluateExpressionError {
EvaluateExpressionError::Credentials(err)
}
}
impl From<HttpDispatchError> for EvaluateExpressionError {
fn from(err: HttpDispatchError) -> EvaluateExpressionError {
EvaluateExpressionError::HttpDispatch(err)
}
}
impl From<io::Error> for EvaluateExpressionError {
fn from(err: io::Error) -> EvaluateExpressionError {
EvaluateExpressionError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for EvaluateExpressionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for EvaluateExpressionError {
fn description(&self) -> &str {
match *self {
EvaluateExpressionError::InternalServiceError(ref cause) => cause,
EvaluateExpressionError::InvalidRequest(ref cause) => cause,
EvaluateExpressionError::PipelineDeleted(ref cause) => cause,
EvaluateExpressionError::PipelineNotFound(ref cause) => cause,
EvaluateExpressionError::TaskNotFound(ref cause) => cause,
EvaluateExpressionError::Validation(ref cause) => cause,
EvaluateExpressionError::Credentials(ref err) => err.description(),
EvaluateExpressionError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
EvaluateExpressionError::ParseError(ref cause) => cause,
EvaluateExpressionError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetPipelineDefinitionError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl GetPipelineDefinitionError {
pub fn from_response(res: BufferedHttpResponse) -> GetPipelineDefinitionError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return GetPipelineDefinitionError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return GetPipelineDefinitionError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return GetPipelineDefinitionError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return GetPipelineDefinitionError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return GetPipelineDefinitionError::Validation(error_message.to_string())
}
_ => {}
}
}
return GetPipelineDefinitionError::Unknown(res);
}
}
impl From<serde_json::error::Error> for GetPipelineDefinitionError {
fn from(err: serde_json::error::Error) -> GetPipelineDefinitionError {
GetPipelineDefinitionError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for GetPipelineDefinitionError {
fn from(err: CredentialsError) -> GetPipelineDefinitionError {
GetPipelineDefinitionError::Credentials(err)
}
}
impl From<HttpDispatchError> for GetPipelineDefinitionError {
fn from(err: HttpDispatchError) -> GetPipelineDefinitionError {
GetPipelineDefinitionError::HttpDispatch(err)
}
}
impl From<io::Error> for GetPipelineDefinitionError {
fn from(err: io::Error) -> GetPipelineDefinitionError {
GetPipelineDefinitionError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for GetPipelineDefinitionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for GetPipelineDefinitionError {
fn description(&self) -> &str {
match *self {
GetPipelineDefinitionError::InternalServiceError(ref cause) => cause,
GetPipelineDefinitionError::InvalidRequest(ref cause) => cause,
GetPipelineDefinitionError::PipelineDeleted(ref cause) => cause,
GetPipelineDefinitionError::PipelineNotFound(ref cause) => cause,
GetPipelineDefinitionError::Validation(ref cause) => cause,
GetPipelineDefinitionError::Credentials(ref err) => err.description(),
GetPipelineDefinitionError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
GetPipelineDefinitionError::ParseError(ref cause) => cause,
GetPipelineDefinitionError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum ListPipelinesError {
InternalServiceError(String),
InvalidRequest(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl ListPipelinesError {
pub fn from_response(res: BufferedHttpResponse) -> ListPipelinesError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return ListPipelinesError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return ListPipelinesError::InvalidRequest(String::from(error_message))
}
"ValidationException" => {
return ListPipelinesError::Validation(error_message.to_string())
}
_ => {}
}
}
return ListPipelinesError::Unknown(res);
}
}
impl From<serde_json::error::Error> for ListPipelinesError {
fn from(err: serde_json::error::Error) -> ListPipelinesError {
ListPipelinesError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for ListPipelinesError {
fn from(err: CredentialsError) -> ListPipelinesError {
ListPipelinesError::Credentials(err)
}
}
impl From<HttpDispatchError> for ListPipelinesError {
fn from(err: HttpDispatchError) -> ListPipelinesError {
ListPipelinesError::HttpDispatch(err)
}
}
impl From<io::Error> for ListPipelinesError {
fn from(err: io::Error) -> ListPipelinesError {
ListPipelinesError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for ListPipelinesError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for ListPipelinesError {
fn description(&self) -> &str {
match *self {
ListPipelinesError::InternalServiceError(ref cause) => cause,
ListPipelinesError::InvalidRequest(ref cause) => cause,
ListPipelinesError::Validation(ref cause) => cause,
ListPipelinesError::Credentials(ref err) => err.description(),
ListPipelinesError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
ListPipelinesError::ParseError(ref cause) => cause,
ListPipelinesError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum PollForTaskError {
InternalServiceError(String),
InvalidRequest(String),
TaskNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl PollForTaskError {
pub fn from_response(res: BufferedHttpResponse) -> PollForTaskError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return PollForTaskError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return PollForTaskError::InvalidRequest(String::from(error_message))
}
"TaskNotFoundException" => {
return PollForTaskError::TaskNotFound(String::from(error_message))
}
"ValidationException" => {
return PollForTaskError::Validation(error_message.to_string())
}
_ => {}
}
}
return PollForTaskError::Unknown(res);
}
}
impl From<serde_json::error::Error> for PollForTaskError {
fn from(err: serde_json::error::Error) -> PollForTaskError {
PollForTaskError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for PollForTaskError {
fn from(err: CredentialsError) -> PollForTaskError {
PollForTaskError::Credentials(err)
}
}
impl From<HttpDispatchError> for PollForTaskError {
fn from(err: HttpDispatchError) -> PollForTaskError {
PollForTaskError::HttpDispatch(err)
}
}
impl From<io::Error> for PollForTaskError {
fn from(err: io::Error) -> PollForTaskError {
PollForTaskError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for PollForTaskError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for PollForTaskError {
fn description(&self) -> &str {
match *self {
PollForTaskError::InternalServiceError(ref cause) => cause,
PollForTaskError::InvalidRequest(ref cause) => cause,
PollForTaskError::TaskNotFound(ref cause) => cause,
PollForTaskError::Validation(ref cause) => cause,
PollForTaskError::Credentials(ref err) => err.description(),
PollForTaskError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
PollForTaskError::ParseError(ref cause) => cause,
PollForTaskError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum PutPipelineDefinitionError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl PutPipelineDefinitionError {
pub fn from_response(res: BufferedHttpResponse) -> PutPipelineDefinitionError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return PutPipelineDefinitionError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return PutPipelineDefinitionError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return PutPipelineDefinitionError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return PutPipelineDefinitionError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return PutPipelineDefinitionError::Validation(error_message.to_string())
}
_ => {}
}
}
return PutPipelineDefinitionError::Unknown(res);
}
}
impl From<serde_json::error::Error> for PutPipelineDefinitionError {
fn from(err: serde_json::error::Error) -> PutPipelineDefinitionError {
PutPipelineDefinitionError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for PutPipelineDefinitionError {
fn from(err: CredentialsError) -> PutPipelineDefinitionError {
PutPipelineDefinitionError::Credentials(err)
}
}
impl From<HttpDispatchError> for PutPipelineDefinitionError {
fn from(err: HttpDispatchError) -> PutPipelineDefinitionError {
PutPipelineDefinitionError::HttpDispatch(err)
}
}
impl From<io::Error> for PutPipelineDefinitionError {
fn from(err: io::Error) -> PutPipelineDefinitionError {
PutPipelineDefinitionError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for PutPipelineDefinitionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for PutPipelineDefinitionError {
fn description(&self) -> &str {
match *self {
PutPipelineDefinitionError::InternalServiceError(ref cause) => cause,
PutPipelineDefinitionError::InvalidRequest(ref cause) => cause,
PutPipelineDefinitionError::PipelineDeleted(ref cause) => cause,
PutPipelineDefinitionError::PipelineNotFound(ref cause) => cause,
PutPipelineDefinitionError::Validation(ref cause) => cause,
PutPipelineDefinitionError::Credentials(ref err) => err.description(),
PutPipelineDefinitionError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
PutPipelineDefinitionError::ParseError(ref cause) => cause,
PutPipelineDefinitionError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum QueryObjectsError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl QueryObjectsError {
pub fn from_response(res: BufferedHttpResponse) -> QueryObjectsError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return QueryObjectsError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return QueryObjectsError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return QueryObjectsError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return QueryObjectsError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return QueryObjectsError::Validation(error_message.to_string())
}
_ => {}
}
}
return QueryObjectsError::Unknown(res);
}
}
impl From<serde_json::error::Error> for QueryObjectsError {
fn from(err: serde_json::error::Error) -> QueryObjectsError {
QueryObjectsError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for QueryObjectsError {
fn from(err: CredentialsError) -> QueryObjectsError {
QueryObjectsError::Credentials(err)
}
}
impl From<HttpDispatchError> for QueryObjectsError {
fn from(err: HttpDispatchError) -> QueryObjectsError {
QueryObjectsError::HttpDispatch(err)
}
}
impl From<io::Error> for QueryObjectsError {
fn from(err: io::Error) -> QueryObjectsError {
QueryObjectsError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for QueryObjectsError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for QueryObjectsError {
fn description(&self) -> &str {
match *self {
QueryObjectsError::InternalServiceError(ref cause) => cause,
QueryObjectsError::InvalidRequest(ref cause) => cause,
QueryObjectsError::PipelineDeleted(ref cause) => cause,
QueryObjectsError::PipelineNotFound(ref cause) => cause,
QueryObjectsError::Validation(ref cause) => cause,
QueryObjectsError::Credentials(ref err) => err.description(),
QueryObjectsError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
QueryObjectsError::ParseError(ref cause) => cause,
QueryObjectsError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum RemoveTagsError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl RemoveTagsError {
pub fn from_response(res: BufferedHttpResponse) -> RemoveTagsError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return RemoveTagsError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return RemoveTagsError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return RemoveTagsError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return RemoveTagsError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return RemoveTagsError::Validation(error_message.to_string())
}
_ => {}
}
}
return RemoveTagsError::Unknown(res);
}
}
impl From<serde_json::error::Error> for RemoveTagsError {
fn from(err: serde_json::error::Error) -> RemoveTagsError {
RemoveTagsError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for RemoveTagsError {
fn from(err: CredentialsError) -> RemoveTagsError {
RemoveTagsError::Credentials(err)
}
}
impl From<HttpDispatchError> for RemoveTagsError {
fn from(err: HttpDispatchError) -> RemoveTagsError {
RemoveTagsError::HttpDispatch(err)
}
}
impl From<io::Error> for RemoveTagsError {
fn from(err: io::Error) -> RemoveTagsError {
RemoveTagsError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for RemoveTagsError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for RemoveTagsError {
fn description(&self) -> &str {
match *self {
RemoveTagsError::InternalServiceError(ref cause) => cause,
RemoveTagsError::InvalidRequest(ref cause) => cause,
RemoveTagsError::PipelineDeleted(ref cause) => cause,
RemoveTagsError::PipelineNotFound(ref cause) => cause,
RemoveTagsError::Validation(ref cause) => cause,
RemoveTagsError::Credentials(ref err) => err.description(),
RemoveTagsError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
RemoveTagsError::ParseError(ref cause) => cause,
RemoveTagsError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum ReportTaskProgressError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
TaskNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl ReportTaskProgressError {
pub fn from_response(res: BufferedHttpResponse) -> ReportTaskProgressError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return ReportTaskProgressError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return ReportTaskProgressError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return ReportTaskProgressError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return ReportTaskProgressError::PipelineNotFound(String::from(error_message))
}
"TaskNotFoundException" => {
return ReportTaskProgressError::TaskNotFound(String::from(error_message))
}
"ValidationException" => {
return ReportTaskProgressError::Validation(error_message.to_string())
}
_ => {}
}
}
return ReportTaskProgressError::Unknown(res);
}
}
impl From<serde_json::error::Error> for ReportTaskProgressError {
fn from(err: serde_json::error::Error) -> ReportTaskProgressError {
ReportTaskProgressError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for ReportTaskProgressError {
fn from(err: CredentialsError) -> ReportTaskProgressError {
ReportTaskProgressError::Credentials(err)
}
}
impl From<HttpDispatchError> for ReportTaskProgressError {
fn from(err: HttpDispatchError) -> ReportTaskProgressError {
ReportTaskProgressError::HttpDispatch(err)
}
}
impl From<io::Error> for ReportTaskProgressError {
fn from(err: io::Error) -> ReportTaskProgressError {
ReportTaskProgressError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for ReportTaskProgressError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for ReportTaskProgressError {
fn description(&self) -> &str {
match *self {
ReportTaskProgressError::InternalServiceError(ref cause) => cause,
ReportTaskProgressError::InvalidRequest(ref cause) => cause,
ReportTaskProgressError::PipelineDeleted(ref cause) => cause,
ReportTaskProgressError::PipelineNotFound(ref cause) => cause,
ReportTaskProgressError::TaskNotFound(ref cause) => cause,
ReportTaskProgressError::Validation(ref cause) => cause,
ReportTaskProgressError::Credentials(ref err) => err.description(),
ReportTaskProgressError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
ReportTaskProgressError::ParseError(ref cause) => cause,
ReportTaskProgressError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum ReportTaskRunnerHeartbeatError {
InternalServiceError(String),
InvalidRequest(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl ReportTaskRunnerHeartbeatError {
pub fn from_response(res: BufferedHttpResponse) -> ReportTaskRunnerHeartbeatError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return ReportTaskRunnerHeartbeatError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return ReportTaskRunnerHeartbeatError::InvalidRequest(String::from(
error_message,
))
}
"ValidationException" => {
return ReportTaskRunnerHeartbeatError::Validation(error_message.to_string())
}
_ => {}
}
}
return ReportTaskRunnerHeartbeatError::Unknown(res);
}
}
impl From<serde_json::error::Error> for ReportTaskRunnerHeartbeatError {
fn from(err: serde_json::error::Error) -> ReportTaskRunnerHeartbeatError {
ReportTaskRunnerHeartbeatError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for ReportTaskRunnerHeartbeatError {
fn from(err: CredentialsError) -> ReportTaskRunnerHeartbeatError {
ReportTaskRunnerHeartbeatError::Credentials(err)
}
}
impl From<HttpDispatchError> for ReportTaskRunnerHeartbeatError {
fn from(err: HttpDispatchError) -> ReportTaskRunnerHeartbeatError {
ReportTaskRunnerHeartbeatError::HttpDispatch(err)
}
}
impl From<io::Error> for ReportTaskRunnerHeartbeatError {
fn from(err: io::Error) -> ReportTaskRunnerHeartbeatError {
ReportTaskRunnerHeartbeatError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for ReportTaskRunnerHeartbeatError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for ReportTaskRunnerHeartbeatError {
fn description(&self) -> &str {
match *self {
ReportTaskRunnerHeartbeatError::InternalServiceError(ref cause) => cause,
ReportTaskRunnerHeartbeatError::InvalidRequest(ref cause) => cause,
ReportTaskRunnerHeartbeatError::Validation(ref cause) => cause,
ReportTaskRunnerHeartbeatError::Credentials(ref err) => err.description(),
ReportTaskRunnerHeartbeatError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
ReportTaskRunnerHeartbeatError::ParseError(ref cause) => cause,
ReportTaskRunnerHeartbeatError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum SetStatusError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl SetStatusError {
pub fn from_response(res: BufferedHttpResponse) -> SetStatusError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return SetStatusError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return SetStatusError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return SetStatusError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return SetStatusError::PipelineNotFound(String::from(error_message))
}
"ValidationException" => {
return SetStatusError::Validation(error_message.to_string())
}
_ => {}
}
}
return SetStatusError::Unknown(res);
}
}
impl From<serde_json::error::Error> for SetStatusError {
fn from(err: serde_json::error::Error) -> SetStatusError {
SetStatusError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for SetStatusError {
fn from(err: CredentialsError) -> SetStatusError {
SetStatusError::Credentials(err)
}
}
impl From<HttpDispatchError> for SetStatusError {
fn from(err: HttpDispatchError) -> SetStatusError {
SetStatusError::HttpDispatch(err)
}
}
impl From<io::Error> for SetStatusError {
fn from(err: io::Error) -> SetStatusError {
SetStatusError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for SetStatusError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for SetStatusError {
fn description(&self) -> &str {
match *self {
SetStatusError::InternalServiceError(ref cause) => cause,
SetStatusError::InvalidRequest(ref cause) => cause,
SetStatusError::PipelineDeleted(ref cause) => cause,
SetStatusError::PipelineNotFound(ref cause) => cause,
SetStatusError::Validation(ref cause) => cause,
SetStatusError::Credentials(ref err) => err.description(),
SetStatusError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
SetStatusError::ParseError(ref cause) => cause,
SetStatusError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum SetTaskStatusError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
TaskNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl SetTaskStatusError {
pub fn from_response(res: BufferedHttpResponse) -> SetTaskStatusError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return SetTaskStatusError::InternalServiceError(String::from(error_message))
}
"InvalidRequestException" => {
return SetTaskStatusError::InvalidRequest(String::from(error_message))
}
"PipelineDeletedException" => {
return SetTaskStatusError::PipelineDeleted(String::from(error_message))
}
"PipelineNotFoundException" => {
return SetTaskStatusError::PipelineNotFound(String::from(error_message))
}
"TaskNotFoundException" => {
return SetTaskStatusError::TaskNotFound(String::from(error_message))
}
"ValidationException" => {
return SetTaskStatusError::Validation(error_message.to_string())
}
_ => {}
}
}
return SetTaskStatusError::Unknown(res);
}
}
impl From<serde_json::error::Error> for SetTaskStatusError {
fn from(err: serde_json::error::Error) -> SetTaskStatusError {
SetTaskStatusError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for SetTaskStatusError {
fn from(err: CredentialsError) -> SetTaskStatusError {
SetTaskStatusError::Credentials(err)
}
}
impl From<HttpDispatchError> for SetTaskStatusError {
fn from(err: HttpDispatchError) -> SetTaskStatusError {
SetTaskStatusError::HttpDispatch(err)
}
}
impl From<io::Error> for SetTaskStatusError {
fn from(err: io::Error) -> SetTaskStatusError {
SetTaskStatusError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for SetTaskStatusError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for SetTaskStatusError {
fn description(&self) -> &str {
match *self {
SetTaskStatusError::InternalServiceError(ref cause) => cause,
SetTaskStatusError::InvalidRequest(ref cause) => cause,
SetTaskStatusError::PipelineDeleted(ref cause) => cause,
SetTaskStatusError::PipelineNotFound(ref cause) => cause,
SetTaskStatusError::TaskNotFound(ref cause) => cause,
SetTaskStatusError::Validation(ref cause) => cause,
SetTaskStatusError::Credentials(ref err) => err.description(),
SetTaskStatusError::HttpDispatch(ref dispatch_error) => dispatch_error.description(),
SetTaskStatusError::ParseError(ref cause) => cause,
SetTaskStatusError::Unknown(_) => "unknown error",
}
}
}
#[derive(Debug, PartialEq)]
pub enum ValidatePipelineDefinitionError {
InternalServiceError(String),
InvalidRequest(String),
PipelineDeleted(String),
PipelineNotFound(String),
HttpDispatch(HttpDispatchError),
Credentials(CredentialsError),
Validation(String),
ParseError(String),
Unknown(BufferedHttpResponse),
}
impl ValidatePipelineDefinitionError {
pub fn from_response(res: BufferedHttpResponse) -> ValidatePipelineDefinitionError {
if let Ok(json) = from_slice::<SerdeJsonValue>(&res.body) {
let raw_error_type = json
.get("__type")
.and_then(|e| e.as_str())
.unwrap_or("Unknown");
let error_message = json.get("message").and_then(|m| m.as_str()).unwrap_or("");
let pieces: Vec<&str> = raw_error_type.split("#").collect();
let error_type = pieces.last().expect("Expected error type");
match *error_type {
"InternalServiceError" => {
return ValidatePipelineDefinitionError::InternalServiceError(String::from(
error_message,
))
}
"InvalidRequestException" => {
return ValidatePipelineDefinitionError::InvalidRequest(String::from(
error_message,
))
}
"PipelineDeletedException" => {
return ValidatePipelineDefinitionError::PipelineDeleted(String::from(
error_message,
))
}
"PipelineNotFoundException" => {
return ValidatePipelineDefinitionError::PipelineNotFound(String::from(
error_message,
))
}
"ValidationException" => {
return ValidatePipelineDefinitionError::Validation(error_message.to_string())
}
_ => {}
}
}
return ValidatePipelineDefinitionError::Unknown(res);
}
}
impl From<serde_json::error::Error> for ValidatePipelineDefinitionError {
fn from(err: serde_json::error::Error) -> ValidatePipelineDefinitionError {
ValidatePipelineDefinitionError::ParseError(err.description().to_string())
}
}
impl From<CredentialsError> for ValidatePipelineDefinitionError {
fn from(err: CredentialsError) -> ValidatePipelineDefinitionError {
ValidatePipelineDefinitionError::Credentials(err)
}
}
impl From<HttpDispatchError> for ValidatePipelineDefinitionError {
fn from(err: HttpDispatchError) -> ValidatePipelineDefinitionError {
ValidatePipelineDefinitionError::HttpDispatch(err)
}
}
impl From<io::Error> for ValidatePipelineDefinitionError {
fn from(err: io::Error) -> ValidatePipelineDefinitionError {
ValidatePipelineDefinitionError::HttpDispatch(HttpDispatchError::from(err))
}
}
impl fmt::Display for ValidatePipelineDefinitionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.description())
}
}
impl Error for ValidatePipelineDefinitionError {
fn description(&self) -> &str {
match *self {
ValidatePipelineDefinitionError::InternalServiceError(ref cause) => cause,
ValidatePipelineDefinitionError::InvalidRequest(ref cause) => cause,
ValidatePipelineDefinitionError::PipelineDeleted(ref cause) => cause,
ValidatePipelineDefinitionError::PipelineNotFound(ref cause) => cause,
ValidatePipelineDefinitionError::Validation(ref cause) => cause,
ValidatePipelineDefinitionError::Credentials(ref err) => err.description(),
ValidatePipelineDefinitionError::HttpDispatch(ref dispatch_error) => {
dispatch_error.description()
}
ValidatePipelineDefinitionError::ParseError(ref cause) => cause,
ValidatePipelineDefinitionError::Unknown(_) => "unknown error",
}
}
}
pub trait DataPipeline {
fn activate_pipeline(
&self,
input: ActivatePipelineInput,
) -> RusotoFuture<ActivatePipelineOutput, ActivatePipelineError>;
fn add_tags(&self, input: AddTagsInput) -> RusotoFuture<AddTagsOutput, AddTagsError>;
fn create_pipeline(
&self,
input: CreatePipelineInput,
) -> RusotoFuture<CreatePipelineOutput, CreatePipelineError>;
fn deactivate_pipeline(
&self,
input: DeactivatePipelineInput,
) -> RusotoFuture<DeactivatePipelineOutput, DeactivatePipelineError>;
fn delete_pipeline(&self, input: DeletePipelineInput) -> RusotoFuture<(), DeletePipelineError>;
fn describe_objects(
&self,
input: DescribeObjectsInput,
) -> RusotoFuture<DescribeObjectsOutput, DescribeObjectsError>;
fn describe_pipelines(
&self,
input: DescribePipelinesInput,
) -> RusotoFuture<DescribePipelinesOutput, DescribePipelinesError>;
fn evaluate_expression(
&self,
input: EvaluateExpressionInput,
) -> RusotoFuture<EvaluateExpressionOutput, EvaluateExpressionError>;
fn get_pipeline_definition(
&self,
input: GetPipelineDefinitionInput,
) -> RusotoFuture<GetPipelineDefinitionOutput, GetPipelineDefinitionError>;
fn list_pipelines(
&self,
input: ListPipelinesInput,
) -> RusotoFuture<ListPipelinesOutput, ListPipelinesError>;
fn poll_for_task(
&self,
input: PollForTaskInput,
) -> RusotoFuture<PollForTaskOutput, PollForTaskError>;
fn put_pipeline_definition(
&self,
input: PutPipelineDefinitionInput,
) -> RusotoFuture<PutPipelineDefinitionOutput, PutPipelineDefinitionError>;
fn query_objects(
&self,
input: QueryObjectsInput,
) -> RusotoFuture<QueryObjectsOutput, QueryObjectsError>;
fn remove_tags(
&self,
input: RemoveTagsInput,
) -> RusotoFuture<RemoveTagsOutput, RemoveTagsError>;
fn report_task_progress(
&self,
input: ReportTaskProgressInput,
) -> RusotoFuture<ReportTaskProgressOutput, ReportTaskProgressError>;
fn report_task_runner_heartbeat(
&self,
input: ReportTaskRunnerHeartbeatInput,
) -> RusotoFuture<ReportTaskRunnerHeartbeatOutput, ReportTaskRunnerHeartbeatError>;
fn set_status(&self, input: SetStatusInput) -> RusotoFuture<(), SetStatusError>;
fn set_task_status(
&self,
input: SetTaskStatusInput,
) -> RusotoFuture<SetTaskStatusOutput, SetTaskStatusError>;
fn validate_pipeline_definition(
&self,
input: ValidatePipelineDefinitionInput,
) -> RusotoFuture<ValidatePipelineDefinitionOutput, ValidatePipelineDefinitionError>;
}
pub struct DataPipelineClient {
client: Client,
region: region::Region,
}
impl DataPipelineClient {
pub fn new(region: region::Region) -> DataPipelineClient {
DataPipelineClient {
client: Client::shared(),
region: region,
}
}
pub fn new_with<P, D>(
request_dispatcher: D,
credentials_provider: P,
region: region::Region,
) -> DataPipelineClient
where
P: ProvideAwsCredentials + Send + Sync + 'static,
P::Future: Send,
D: DispatchSignedRequest + Send + Sync + 'static,
D::Future: Send,
{
DataPipelineClient {
client: Client::new_with(credentials_provider, request_dispatcher),
region: region,
}
}
}
impl DataPipeline for DataPipelineClient {
fn activate_pipeline(
&self,
input: ActivatePipelineInput,
) -> RusotoFuture<ActivatePipelineOutput, ActivatePipelineError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.ActivatePipeline");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<ActivatePipelineOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(ActivatePipelineError::from_response(response))),
)
}
})
}
fn add_tags(&self, input: AddTagsInput) -> RusotoFuture<AddTagsOutput, AddTagsError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.AddTags");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<AddTagsOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(AddTagsError::from_response(response))),
)
}
})
}
fn create_pipeline(
&self,
input: CreatePipelineInput,
) -> RusotoFuture<CreatePipelineOutput, CreatePipelineError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.CreatePipeline");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<CreatePipelineOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(CreatePipelineError::from_response(response))),
)
}
})
}
fn deactivate_pipeline(
&self,
input: DeactivatePipelineInput,
) -> RusotoFuture<DeactivatePipelineOutput, DeactivatePipelineError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.DeactivatePipeline");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<DeactivatePipelineOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(DeactivatePipelineError::from_response(response))),
)
}
})
}
fn delete_pipeline(&self, input: DeletePipelineInput) -> RusotoFuture<(), DeletePipelineError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.DeletePipeline");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(future::ok(::std::mem::drop(response)))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(DeletePipelineError::from_response(response))),
)
}
})
}
fn describe_objects(
&self,
input: DescribeObjectsInput,
) -> RusotoFuture<DescribeObjectsOutput, DescribeObjectsError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.DescribeObjects");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<DescribeObjectsOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(DescribeObjectsError::from_response(response))),
)
}
})
}
fn describe_pipelines(
&self,
input: DescribePipelinesInput,
) -> RusotoFuture<DescribePipelinesOutput, DescribePipelinesError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.DescribePipelines");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<DescribePipelinesOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(DescribePipelinesError::from_response(response))),
)
}
})
}
fn evaluate_expression(
&self,
input: EvaluateExpressionInput,
) -> RusotoFuture<EvaluateExpressionOutput, EvaluateExpressionError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.EvaluateExpression");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<EvaluateExpressionOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(EvaluateExpressionError::from_response(response))),
)
}
})
}
fn get_pipeline_definition(
&self,
input: GetPipelineDefinitionInput,
) -> RusotoFuture<GetPipelineDefinitionOutput, GetPipelineDefinitionError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.GetPipelineDefinition");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<GetPipelineDefinitionOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response.buffer().from_err().and_then(|response| {
Err(GetPipelineDefinitionError::from_response(response))
}),
)
}
})
}
fn list_pipelines(
&self,
input: ListPipelinesInput,
) -> RusotoFuture<ListPipelinesOutput, ListPipelinesError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.ListPipelines");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<ListPipelinesOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(ListPipelinesError::from_response(response))),
)
}
})
}
fn poll_for_task(
&self,
input: PollForTaskInput,
) -> RusotoFuture<PollForTaskOutput, PollForTaskError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.PollForTask");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<PollForTaskOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(PollForTaskError::from_response(response))),
)
}
})
}
fn put_pipeline_definition(
&self,
input: PutPipelineDefinitionInput,
) -> RusotoFuture<PutPipelineDefinitionOutput, PutPipelineDefinitionError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.PutPipelineDefinition");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<PutPipelineDefinitionOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response.buffer().from_err().and_then(|response| {
Err(PutPipelineDefinitionError::from_response(response))
}),
)
}
})
}
fn query_objects(
&self,
input: QueryObjectsInput,
) -> RusotoFuture<QueryObjectsOutput, QueryObjectsError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.QueryObjects");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<QueryObjectsOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(QueryObjectsError::from_response(response))),
)
}
})
}
fn remove_tags(
&self,
input: RemoveTagsInput,
) -> RusotoFuture<RemoveTagsOutput, RemoveTagsError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.RemoveTags");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<RemoveTagsOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(RemoveTagsError::from_response(response))),
)
}
})
}
fn report_task_progress(
&self,
input: ReportTaskProgressInput,
) -> RusotoFuture<ReportTaskProgressOutput, ReportTaskProgressError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.ReportTaskProgress");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<ReportTaskProgressOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(ReportTaskProgressError::from_response(response))),
)
}
})
}
fn report_task_runner_heartbeat(
&self,
input: ReportTaskRunnerHeartbeatInput,
) -> RusotoFuture<ReportTaskRunnerHeartbeatOutput, ReportTaskRunnerHeartbeatError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.ReportTaskRunnerHeartbeat");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<ReportTaskRunnerHeartbeatOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(response.buffer().from_err().and_then(|response| {
Err(ReportTaskRunnerHeartbeatError::from_response(response))
}))
}
})
}
fn set_status(&self, input: SetStatusInput) -> RusotoFuture<(), SetStatusError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.SetStatus");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(future::ok(::std::mem::drop(response)))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(SetStatusError::from_response(response))),
)
}
})
}
fn set_task_status(
&self,
input: SetTaskStatusInput,
) -> RusotoFuture<SetTaskStatusOutput, SetTaskStatusError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.SetTaskStatus");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<SetTaskStatusOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(
response
.buffer()
.from_err()
.and_then(|response| Err(SetTaskStatusError::from_response(response))),
)
}
})
}
fn validate_pipeline_definition(
&self,
input: ValidatePipelineDefinitionInput,
) -> RusotoFuture<ValidatePipelineDefinitionOutput, ValidatePipelineDefinitionError> {
let mut request = SignedRequest::new("POST", "datapipeline", &self.region, "/");
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.add_header("x-amz-target", "DataPipeline.ValidatePipelineDefinition");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded.into_bytes()));
self.client.sign_and_dispatch(request, |response| {
if response.status.is_success() {
Box::new(response.buffer().from_err().map(|response| {
let mut body = response.body;
if body.is_empty() || body == b"null" {
body = b"{}".to_vec();
}
serde_json::from_str::<ValidatePipelineDefinitionOutput>(
String::from_utf8_lossy(body.as_ref()).as_ref(),
)
.unwrap()
}))
} else {
Box::new(response.buffer().from_err().and_then(|response| {
Err(ValidatePipelineDefinitionError::from_response(response))
}))
}
})
}
}
#[cfg(test)]
mod protocol_tests {}