use std::error::Error;
use std::fmt;
use async_trait::async_trait;
use rusoto_core::credential::ProvideAwsCredentials;
use rusoto_core::region;
use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
use rusoto_core::{Client, RusotoError};
use rusoto_core::param::{Params, ServiceParams};
use rusoto_core::proto;
use rusoto_core::signature::SignedRequest;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
use serde_json;
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct CancelChangeSetRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "ChangeSetId")]
pub change_set_id: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct CancelChangeSetResponse {
#[serde(rename = "ChangeSetArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_arn: Option<String>,
#[serde(rename = "ChangeSetId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_id: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct Change {
#[serde(rename = "ChangeType")]
pub change_type: String,
#[serde(rename = "Details")]
pub details: String,
#[serde(rename = "Entity")]
pub entity: Entity,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ChangeSetSummaryListItem {
#[serde(rename = "ChangeSetArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_arn: Option<String>,
#[serde(rename = "ChangeSetId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_id: Option<String>,
#[serde(rename = "ChangeSetName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_name: Option<String>,
#[serde(rename = "EndTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(rename = "EntityIdList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_id_list: Option<Vec<String>>,
#[serde(rename = "FailureCode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_code: Option<String>,
#[serde(rename = "StartTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(rename = "Status")]
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ChangeSummary {
#[serde(rename = "ChangeType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_type: Option<String>,
#[serde(rename = "Details")]
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<String>,
#[serde(rename = "Entity")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity: Option<Entity>,
#[serde(rename = "ErrorDetailList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_detail_list: Option<Vec<ErrorDetail>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DescribeChangeSetRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "ChangeSetId")]
pub change_set_id: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeChangeSetResponse {
#[serde(rename = "ChangeSet")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set: Option<Vec<ChangeSummary>>,
#[serde(rename = "ChangeSetArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_arn: Option<String>,
#[serde(rename = "ChangeSetId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_id: Option<String>,
#[serde(rename = "ChangeSetName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_name: Option<String>,
#[serde(rename = "EndTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(rename = "FailureCode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_code: Option<String>,
#[serde(rename = "FailureDescription")]
#[serde(skip_serializing_if = "Option::is_none")]
pub failure_description: Option<String>,
#[serde(rename = "StartTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(rename = "Status")]
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DescribeEntityRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "EntityId")]
pub entity_id: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeEntityResponse {
#[serde(rename = "Details")]
#[serde(skip_serializing_if = "Option::is_none")]
pub details: Option<String>,
#[serde(rename = "EntityArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_arn: Option<String>,
#[serde(rename = "EntityIdentifier")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_identifier: Option<String>,
#[serde(rename = "EntityType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_type: Option<String>,
#[serde(rename = "LastModifiedDate")]
#[serde(skip_serializing_if = "Option::is_none")]
pub last_modified_date: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Entity {
#[serde(rename = "Identifier")]
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<String>,
#[serde(rename = "Type")]
pub type_: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct EntitySummary {
#[serde(rename = "EntityArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_arn: Option<String>,
#[serde(rename = "EntityId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_id: Option<String>,
#[serde(rename = "EntityType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_type: Option<String>,
#[serde(rename = "LastModifiedDate")]
#[serde(skip_serializing_if = "Option::is_none")]
pub last_modified_date: Option<String>,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "Visibility")]
#[serde(skip_serializing_if = "Option::is_none")]
pub visibility: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ErrorDetail {
#[serde(rename = "ErrorCode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
#[serde(rename = "ErrorMessage")]
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct Filter {
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "ValueList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub value_list: Option<Vec<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct ListChangeSetsRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "FilterList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_list: Option<Vec<Filter>>,
#[serde(rename = "MaxResults")]
#[serde(skip_serializing_if = "Option::is_none")]
pub max_results: Option<i64>,
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
#[serde(rename = "Sort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<Sort>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ListChangeSetsResponse {
#[serde(rename = "ChangeSetSummaryList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_summary_list: Option<Vec<ChangeSetSummaryListItem>>,
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct ListEntitiesRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "EntityType")]
pub entity_type: String,
#[serde(rename = "FilterList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_list: Option<Vec<Filter>>,
#[serde(rename = "MaxResults")]
#[serde(skip_serializing_if = "Option::is_none")]
pub max_results: Option<i64>,
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
#[serde(rename = "Sort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<Sort>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ListEntitiesResponse {
#[serde(rename = "EntitySummaryList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub entity_summary_list: Option<Vec<EntitySummary>>,
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct Sort {
#[serde(rename = "SortBy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_by: Option<String>,
#[serde(rename = "SortOrder")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sort_order: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct StartChangeSetRequest {
#[serde(rename = "Catalog")]
pub catalog: String,
#[serde(rename = "ChangeSet")]
pub change_set: Vec<Change>,
#[serde(rename = "ChangeSetName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_name: Option<String>,
#[serde(rename = "ClientRequestToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub client_request_token: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct StartChangeSetResponse {
#[serde(rename = "ChangeSetArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_arn: Option<String>,
#[serde(rename = "ChangeSetId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub change_set_id: Option<String>,
}
#[derive(Debug, PartialEq)]
pub enum CancelChangeSetError {
AccessDenied(String),
InternalService(String),
ResourceInUse(String),
ResourceNotFound(String),
Throttling(String),
}
impl CancelChangeSetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CancelChangeSetError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(CancelChangeSetError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(CancelChangeSetError::InternalService(err.msg))
}
"ResourceInUseException" => {
return RusotoError::Service(CancelChangeSetError::ResourceInUse(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(CancelChangeSetError::ResourceNotFound(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(CancelChangeSetError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for CancelChangeSetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
CancelChangeSetError::AccessDenied(ref cause) => write!(f, "{}", cause),
CancelChangeSetError::InternalService(ref cause) => write!(f, "{}", cause),
CancelChangeSetError::ResourceInUse(ref cause) => write!(f, "{}", cause),
CancelChangeSetError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
CancelChangeSetError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for CancelChangeSetError {}
#[derive(Debug, PartialEq)]
pub enum DescribeChangeSetError {
AccessDenied(String),
InternalService(String),
ResourceNotFound(String),
Throttling(String),
}
impl DescribeChangeSetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeChangeSetError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DescribeChangeSetError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(DescribeChangeSetError::InternalService(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(DescribeChangeSetError::ResourceNotFound(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(DescribeChangeSetError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeChangeSetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeChangeSetError::AccessDenied(ref cause) => write!(f, "{}", cause),
DescribeChangeSetError::InternalService(ref cause) => write!(f, "{}", cause),
DescribeChangeSetError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
DescribeChangeSetError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeChangeSetError {}
#[derive(Debug, PartialEq)]
pub enum DescribeEntityError {
AccessDenied(String),
InternalService(String),
ResourceNotFound(String),
ResourceNotSupported(String),
Throttling(String),
}
impl DescribeEntityError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEntityError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DescribeEntityError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(DescribeEntityError::InternalService(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(DescribeEntityError::ResourceNotFound(err.msg))
}
"ResourceNotSupportedException" => {
return RusotoError::Service(DescribeEntityError::ResourceNotSupported(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(DescribeEntityError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeEntityError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeEntityError::AccessDenied(ref cause) => write!(f, "{}", cause),
DescribeEntityError::InternalService(ref cause) => write!(f, "{}", cause),
DescribeEntityError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
DescribeEntityError::ResourceNotSupported(ref cause) => write!(f, "{}", cause),
DescribeEntityError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeEntityError {}
#[derive(Debug, PartialEq)]
pub enum ListChangeSetsError {
AccessDenied(String),
InternalService(String),
Throttling(String),
}
impl ListChangeSetsError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListChangeSetsError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(ListChangeSetsError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(ListChangeSetsError::InternalService(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(ListChangeSetsError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for ListChangeSetsError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
ListChangeSetsError::AccessDenied(ref cause) => write!(f, "{}", cause),
ListChangeSetsError::InternalService(ref cause) => write!(f, "{}", cause),
ListChangeSetsError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for ListChangeSetsError {}
#[derive(Debug, PartialEq)]
pub enum ListEntitiesError {
AccessDenied(String),
InternalService(String),
ResourceNotFound(String),
Throttling(String),
}
impl ListEntitiesError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListEntitiesError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(ListEntitiesError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(ListEntitiesError::InternalService(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(ListEntitiesError::ResourceNotFound(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(ListEntitiesError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for ListEntitiesError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
ListEntitiesError::AccessDenied(ref cause) => write!(f, "{}", cause),
ListEntitiesError::InternalService(ref cause) => write!(f, "{}", cause),
ListEntitiesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
ListEntitiesError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for ListEntitiesError {}
#[derive(Debug, PartialEq)]
pub enum StartChangeSetError {
AccessDenied(String),
InternalService(String),
ResourceInUse(String),
ResourceNotFound(String),
ServiceQuotaExceeded(String),
Throttling(String),
}
impl StartChangeSetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartChangeSetError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(StartChangeSetError::AccessDenied(err.msg))
}
"InternalServiceException" => {
return RusotoError::Service(StartChangeSetError::InternalService(err.msg))
}
"ResourceInUseException" => {
return RusotoError::Service(StartChangeSetError::ResourceInUse(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(StartChangeSetError::ResourceNotFound(err.msg))
}
"ServiceQuotaExceededException" => {
return RusotoError::Service(StartChangeSetError::ServiceQuotaExceeded(err.msg))
}
"ThrottlingException" => {
return RusotoError::Service(StartChangeSetError::Throttling(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for StartChangeSetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
StartChangeSetError::AccessDenied(ref cause) => write!(f, "{}", cause),
StartChangeSetError::InternalService(ref cause) => write!(f, "{}", cause),
StartChangeSetError::ResourceInUse(ref cause) => write!(f, "{}", cause),
StartChangeSetError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
StartChangeSetError::ServiceQuotaExceeded(ref cause) => write!(f, "{}", cause),
StartChangeSetError::Throttling(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for StartChangeSetError {}
#[async_trait]
pub trait MarketplaceCatalog {
async fn cancel_change_set(
&self,
input: CancelChangeSetRequest,
) -> Result<CancelChangeSetResponse, RusotoError<CancelChangeSetError>>;
async fn describe_change_set(
&self,
input: DescribeChangeSetRequest,
) -> Result<DescribeChangeSetResponse, RusotoError<DescribeChangeSetError>>;
async fn describe_entity(
&self,
input: DescribeEntityRequest,
) -> Result<DescribeEntityResponse, RusotoError<DescribeEntityError>>;
async fn list_change_sets(
&self,
input: ListChangeSetsRequest,
) -> Result<ListChangeSetsResponse, RusotoError<ListChangeSetsError>>;
async fn list_entities(
&self,
input: ListEntitiesRequest,
) -> Result<ListEntitiesResponse, RusotoError<ListEntitiesError>>;
async fn start_change_set(
&self,
input: StartChangeSetRequest,
) -> Result<StartChangeSetResponse, RusotoError<StartChangeSetError>>;
}
#[derive(Clone)]
pub struct MarketplaceCatalogClient {
client: Client,
region: region::Region,
}
impl MarketplaceCatalogClient {
pub fn new(region: region::Region) -> MarketplaceCatalogClient {
MarketplaceCatalogClient {
client: Client::shared(),
region,
}
}
pub fn new_with<P, D>(
request_dispatcher: D,
credentials_provider: P,
region: region::Region,
) -> MarketplaceCatalogClient
where
P: ProvideAwsCredentials + Send + Sync + 'static,
D: DispatchSignedRequest + Send + Sync + 'static,
{
MarketplaceCatalogClient {
client: Client::new_with(credentials_provider, request_dispatcher),
region,
}
}
pub fn new_with_client(client: Client, region: region::Region) -> MarketplaceCatalogClient {
MarketplaceCatalogClient { client, region }
}
}
#[async_trait]
impl MarketplaceCatalog for MarketplaceCatalogClient {
#[allow(unused_mut)]
async fn cancel_change_set(
&self,
input: CancelChangeSetRequest,
) -> Result<CancelChangeSetResponse, RusotoError<CancelChangeSetError>> {
let request_uri = "/CancelChangeSet";
let mut request =
SignedRequest::new("PATCH", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let mut params = Params::new();
params.put("catalog", &input.catalog);
params.put("changeSetId", &input.change_set_id);
request.set_params(params);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<CancelChangeSetResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(CancelChangeSetError::from_response(response))
}
}
#[allow(unused_mut)]
async fn describe_change_set(
&self,
input: DescribeChangeSetRequest,
) -> Result<DescribeChangeSetResponse, RusotoError<DescribeChangeSetError>> {
let request_uri = "/DescribeChangeSet";
let mut request = SignedRequest::new("GET", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let mut params = Params::new();
params.put("catalog", &input.catalog);
params.put("changeSetId", &input.change_set_id);
request.set_params(params);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<DescribeChangeSetResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(DescribeChangeSetError::from_response(response))
}
}
#[allow(unused_mut)]
async fn describe_entity(
&self,
input: DescribeEntityRequest,
) -> Result<DescribeEntityResponse, RusotoError<DescribeEntityError>> {
let request_uri = "/DescribeEntity";
let mut request = SignedRequest::new("GET", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let mut params = Params::new();
params.put("catalog", &input.catalog);
params.put("entityId", &input.entity_id);
request.set_params(params);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<DescribeEntityResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(DescribeEntityError::from_response(response))
}
}
#[allow(unused_mut)]
async fn list_change_sets(
&self,
input: ListChangeSetsRequest,
) -> Result<ListChangeSetsResponse, RusotoError<ListChangeSetsError>> {
let request_uri = "/ListChangeSets";
let mut request = SignedRequest::new("POST", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<ListChangeSetsResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(ListChangeSetsError::from_response(response))
}
}
#[allow(unused_mut)]
async fn list_entities(
&self,
input: ListEntitiesRequest,
) -> Result<ListEntitiesResponse, RusotoError<ListEntitiesError>> {
let request_uri = "/ListEntities";
let mut request = SignedRequest::new("POST", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<ListEntitiesResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(ListEntitiesError::from_response(response))
}
}
#[allow(unused_mut)]
async fn start_change_set(
&self,
input: StartChangeSetRequest,
) -> Result<StartChangeSetResponse, RusotoError<StartChangeSetError>> {
let request_uri = "/StartChangeSet";
let mut request = SignedRequest::new("POST", "aws-marketplace", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request.set_endpoint_prefix("catalog.marketplace".to_string());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<StartChangeSetResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(StartChangeSetError::from_response(response))
}
}
}