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::proto;
use rusoto_core::request::HttpResponse;
use rusoto_core::signature::SignedRequest;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
impl BudgetsClient {
fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
let mut request = SignedRequest::new(http_method, "budgets", &self.region, request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
request
}
async fn sign_and_dispatch<E>(
&self,
request: SignedRequest,
from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
) -> Result<HttpResponse, RusotoError<E>> {
let mut response = self.client.sign_and_dispatch(request).await?;
if !response.status.is_success() {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
return Err(from_response(response));
}
Ok(response)
}
}
use serde_json;
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Budget {
#[serde(rename = "BudgetLimit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budget_limit: Option<Spend>,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "BudgetType")]
pub budget_type: String,
#[serde(rename = "CalculatedSpend")]
#[serde(skip_serializing_if = "Option::is_none")]
pub calculated_spend: Option<CalculatedSpend>,
#[serde(rename = "CostFilters")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_filters: Option<::std::collections::HashMap<String, Vec<String>>>,
#[serde(rename = "CostTypes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_types: Option<CostTypes>,
#[serde(rename = "LastUpdatedTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub last_updated_time: Option<f64>,
#[serde(rename = "PlannedBudgetLimits")]
#[serde(skip_serializing_if = "Option::is_none")]
pub planned_budget_limits: Option<::std::collections::HashMap<String, Spend>>,
#[serde(rename = "TimePeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_period: Option<TimePeriod>,
#[serde(rename = "TimeUnit")]
pub time_unit: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct BudgetPerformanceHistory {
#[serde(rename = "BudgetName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budget_name: Option<String>,
#[serde(rename = "BudgetType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budget_type: Option<String>,
#[serde(rename = "BudgetedAndActualAmountsList")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budgeted_and_actual_amounts_list: Option<Vec<BudgetedAndActualAmounts>>,
#[serde(rename = "CostFilters")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_filters: Option<::std::collections::HashMap<String, Vec<String>>>,
#[serde(rename = "CostTypes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_types: Option<CostTypes>,
#[serde(rename = "TimeUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_unit: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct BudgetedAndActualAmounts {
#[serde(rename = "ActualAmount")]
#[serde(skip_serializing_if = "Option::is_none")]
pub actual_amount: Option<Spend>,
#[serde(rename = "BudgetedAmount")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budgeted_amount: Option<Spend>,
#[serde(rename = "TimePeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_period: Option<TimePeriod>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct CalculatedSpend {
#[serde(rename = "ActualSpend")]
pub actual_spend: Spend,
#[serde(rename = "ForecastedSpend")]
#[serde(skip_serializing_if = "Option::is_none")]
pub forecasted_spend: Option<Spend>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct CostTypes {
#[serde(rename = "IncludeCredit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_credit: Option<bool>,
#[serde(rename = "IncludeDiscount")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_discount: Option<bool>,
#[serde(rename = "IncludeOtherSubscription")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_other_subscription: Option<bool>,
#[serde(rename = "IncludeRecurring")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_recurring: Option<bool>,
#[serde(rename = "IncludeRefund")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_refund: Option<bool>,
#[serde(rename = "IncludeSubscription")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_subscription: Option<bool>,
#[serde(rename = "IncludeSupport")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_support: Option<bool>,
#[serde(rename = "IncludeTax")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_tax: Option<bool>,
#[serde(rename = "IncludeUpfront")]
#[serde(skip_serializing_if = "Option::is_none")]
pub include_upfront: Option<bool>,
#[serde(rename = "UseAmortized")]
#[serde(skip_serializing_if = "Option::is_none")]
pub use_amortized: Option<bool>,
#[serde(rename = "UseBlended")]
#[serde(skip_serializing_if = "Option::is_none")]
pub use_blended: Option<bool>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct CreateBudgetRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "Budget")]
pub budget: Budget,
#[serde(rename = "NotificationsWithSubscribers")]
#[serde(skip_serializing_if = "Option::is_none")]
pub notifications_with_subscribers: Option<Vec<NotificationWithSubscribers>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct CreateBudgetResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct CreateNotificationRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "Notification")]
pub notification: Notification,
#[serde(rename = "Subscribers")]
pub subscribers: Vec<Subscriber>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct CreateNotificationResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct CreateSubscriberRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "Notification")]
pub notification: Notification,
#[serde(rename = "Subscriber")]
pub subscriber: Subscriber,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct CreateSubscriberResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DeleteBudgetRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DeleteBudgetResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DeleteNotificationRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "Notification")]
pub notification: Notification,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DeleteNotificationResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DeleteSubscriberRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "Notification")]
pub notification: Notification,
#[serde(rename = "Subscriber")]
pub subscriber: Subscriber,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DeleteSubscriberResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DescribeBudgetPerformanceHistoryRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[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 = "TimePeriod")]
#[serde(skip_serializing_if = "Option::is_none")]
pub time_period: Option<TimePeriod>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeBudgetPerformanceHistoryResponse {
#[serde(rename = "BudgetPerformanceHistory")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budget_performance_history: Option<BudgetPerformanceHistory>,
#[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 DescribeBudgetRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeBudgetResponse {
#[serde(rename = "Budget")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budget: Option<Budget>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DescribeBudgetsRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[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>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeBudgetsResponse {
#[serde(rename = "Budgets")]
#[serde(skip_serializing_if = "Option::is_none")]
pub budgets: Option<Vec<Budget>>,
#[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 DescribeNotificationsForBudgetRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[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>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeNotificationsForBudgetResponse {
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
#[serde(rename = "Notifications")]
#[serde(skip_serializing_if = "Option::is_none")]
pub notifications: Option<Vec<Notification>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DescribeSubscribersForNotificationRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[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 = "Notification")]
pub notification: Notification,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DescribeSubscribersForNotificationResponse {
#[serde(rename = "NextToken")]
#[serde(skip_serializing_if = "Option::is_none")]
pub next_token: Option<String>,
#[serde(rename = "Subscribers")]
#[serde(skip_serializing_if = "Option::is_none")]
pub subscribers: Option<Vec<Subscriber>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Notification {
#[serde(rename = "ComparisonOperator")]
pub comparison_operator: String,
#[serde(rename = "NotificationState")]
#[serde(skip_serializing_if = "Option::is_none")]
pub notification_state: Option<String>,
#[serde(rename = "NotificationType")]
pub notification_type: String,
#[serde(rename = "Threshold")]
pub threshold: f64,
#[serde(rename = "ThresholdType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub threshold_type: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct NotificationWithSubscribers {
#[serde(rename = "Notification")]
pub notification: Notification,
#[serde(rename = "Subscribers")]
pub subscribers: Vec<Subscriber>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Spend {
#[serde(rename = "Amount")]
pub amount: String,
#[serde(rename = "Unit")]
pub unit: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Subscriber {
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "SubscriptionType")]
pub subscription_type: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct TimePeriod {
#[serde(rename = "End")]
#[serde(skip_serializing_if = "Option::is_none")]
pub end: Option<f64>,
#[serde(rename = "Start")]
#[serde(skip_serializing_if = "Option::is_none")]
pub start: Option<f64>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct UpdateBudgetRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "NewBudget")]
pub new_budget: Budget,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct UpdateBudgetResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct UpdateNotificationRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "NewNotification")]
pub new_notification: Notification,
#[serde(rename = "OldNotification")]
pub old_notification: Notification,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct UpdateNotificationResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct UpdateSubscriberRequest {
#[serde(rename = "AccountId")]
pub account_id: String,
#[serde(rename = "BudgetName")]
pub budget_name: String,
#[serde(rename = "NewSubscriber")]
pub new_subscriber: Subscriber,
#[serde(rename = "Notification")]
pub notification: Notification,
#[serde(rename = "OldSubscriber")]
pub old_subscriber: Subscriber,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct UpdateSubscriberResponse {}
#[derive(Debug, PartialEq)]
pub enum CreateBudgetError {
AccessDenied(String),
CreationLimitExceeded(String),
DuplicateRecord(String),
InternalError(String),
InvalidParameter(String),
}
impl CreateBudgetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateBudgetError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(CreateBudgetError::AccessDenied(err.msg))
}
"CreationLimitExceededException" => {
return RusotoError::Service(CreateBudgetError::CreationLimitExceeded(err.msg))
}
"DuplicateRecordException" => {
return RusotoError::Service(CreateBudgetError::DuplicateRecord(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(CreateBudgetError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(CreateBudgetError::InvalidParameter(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for CreateBudgetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
CreateBudgetError::AccessDenied(ref cause) => write!(f, "{}", cause),
CreateBudgetError::CreationLimitExceeded(ref cause) => write!(f, "{}", cause),
CreateBudgetError::DuplicateRecord(ref cause) => write!(f, "{}", cause),
CreateBudgetError::InternalError(ref cause) => write!(f, "{}", cause),
CreateBudgetError::InvalidParameter(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for CreateBudgetError {}
#[derive(Debug, PartialEq)]
pub enum CreateNotificationError {
AccessDenied(String),
CreationLimitExceeded(String),
DuplicateRecord(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl CreateNotificationError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateNotificationError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(CreateNotificationError::AccessDenied(err.msg))
}
"CreationLimitExceededException" => {
return RusotoError::Service(CreateNotificationError::CreationLimitExceeded(
err.msg,
))
}
"DuplicateRecordException" => {
return RusotoError::Service(CreateNotificationError::DuplicateRecord(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(CreateNotificationError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(CreateNotificationError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(CreateNotificationError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for CreateNotificationError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
CreateNotificationError::AccessDenied(ref cause) => write!(f, "{}", cause),
CreateNotificationError::CreationLimitExceeded(ref cause) => write!(f, "{}", cause),
CreateNotificationError::DuplicateRecord(ref cause) => write!(f, "{}", cause),
CreateNotificationError::InternalError(ref cause) => write!(f, "{}", cause),
CreateNotificationError::InvalidParameter(ref cause) => write!(f, "{}", cause),
CreateNotificationError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for CreateNotificationError {}
#[derive(Debug, PartialEq)]
pub enum CreateSubscriberError {
AccessDenied(String),
CreationLimitExceeded(String),
DuplicateRecord(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl CreateSubscriberError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateSubscriberError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(CreateSubscriberError::AccessDenied(err.msg))
}
"CreationLimitExceededException" => {
return RusotoError::Service(CreateSubscriberError::CreationLimitExceeded(
err.msg,
))
}
"DuplicateRecordException" => {
return RusotoError::Service(CreateSubscriberError::DuplicateRecord(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(CreateSubscriberError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(CreateSubscriberError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(CreateSubscriberError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for CreateSubscriberError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
CreateSubscriberError::AccessDenied(ref cause) => write!(f, "{}", cause),
CreateSubscriberError::CreationLimitExceeded(ref cause) => write!(f, "{}", cause),
CreateSubscriberError::DuplicateRecord(ref cause) => write!(f, "{}", cause),
CreateSubscriberError::InternalError(ref cause) => write!(f, "{}", cause),
CreateSubscriberError::InvalidParameter(ref cause) => write!(f, "{}", cause),
CreateSubscriberError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for CreateSubscriberError {}
#[derive(Debug, PartialEq)]
pub enum DeleteBudgetError {
AccessDenied(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl DeleteBudgetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteBudgetError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DeleteBudgetError::AccessDenied(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(DeleteBudgetError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(DeleteBudgetError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(DeleteBudgetError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DeleteBudgetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DeleteBudgetError::AccessDenied(ref cause) => write!(f, "{}", cause),
DeleteBudgetError::InternalError(ref cause) => write!(f, "{}", cause),
DeleteBudgetError::InvalidParameter(ref cause) => write!(f, "{}", cause),
DeleteBudgetError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DeleteBudgetError {}
#[derive(Debug, PartialEq)]
pub enum DeleteNotificationError {
AccessDenied(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl DeleteNotificationError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteNotificationError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DeleteNotificationError::AccessDenied(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(DeleteNotificationError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(DeleteNotificationError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(DeleteNotificationError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DeleteNotificationError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DeleteNotificationError::AccessDenied(ref cause) => write!(f, "{}", cause),
DeleteNotificationError::InternalError(ref cause) => write!(f, "{}", cause),
DeleteNotificationError::InvalidParameter(ref cause) => write!(f, "{}", cause),
DeleteNotificationError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DeleteNotificationError {}
#[derive(Debug, PartialEq)]
pub enum DeleteSubscriberError {
AccessDenied(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl DeleteSubscriberError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteSubscriberError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DeleteSubscriberError::AccessDenied(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(DeleteSubscriberError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(DeleteSubscriberError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(DeleteSubscriberError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DeleteSubscriberError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DeleteSubscriberError::AccessDenied(ref cause) => write!(f, "{}", cause),
DeleteSubscriberError::InternalError(ref cause) => write!(f, "{}", cause),
DeleteSubscriberError::InvalidParameter(ref cause) => write!(f, "{}", cause),
DeleteSubscriberError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DeleteSubscriberError {}
#[derive(Debug, PartialEq)]
pub enum DescribeBudgetError {
AccessDenied(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl DescribeBudgetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeBudgetError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DescribeBudgetError::AccessDenied(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(DescribeBudgetError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(DescribeBudgetError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(DescribeBudgetError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeBudgetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeBudgetError::AccessDenied(ref cause) => write!(f, "{}", cause),
DescribeBudgetError::InternalError(ref cause) => write!(f, "{}", cause),
DescribeBudgetError::InvalidParameter(ref cause) => write!(f, "{}", cause),
DescribeBudgetError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeBudgetError {}
#[derive(Debug, PartialEq)]
pub enum DescribeBudgetPerformanceHistoryError {
AccessDenied(String),
ExpiredNextToken(String),
InternalError(String),
InvalidNextToken(String),
InvalidParameter(String),
NotFound(String),
}
impl DescribeBudgetPerformanceHistoryError {
pub fn from_response(
res: BufferedHttpResponse,
) -> RusotoError<DescribeBudgetPerformanceHistoryError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(
DescribeBudgetPerformanceHistoryError::AccessDenied(err.msg),
)
}
"ExpiredNextTokenException" => {
return RusotoError::Service(
DescribeBudgetPerformanceHistoryError::ExpiredNextToken(err.msg),
)
}
"InternalErrorException" => {
return RusotoError::Service(
DescribeBudgetPerformanceHistoryError::InternalError(err.msg),
)
}
"InvalidNextTokenException" => {
return RusotoError::Service(
DescribeBudgetPerformanceHistoryError::InvalidNextToken(err.msg),
)
}
"InvalidParameterException" => {
return RusotoError::Service(
DescribeBudgetPerformanceHistoryError::InvalidParameter(err.msg),
)
}
"NotFoundException" => {
return RusotoError::Service(DescribeBudgetPerformanceHistoryError::NotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeBudgetPerformanceHistoryError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeBudgetPerformanceHistoryError::AccessDenied(ref cause) => {
write!(f, "{}", cause)
}
DescribeBudgetPerformanceHistoryError::ExpiredNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeBudgetPerformanceHistoryError::InternalError(ref cause) => {
write!(f, "{}", cause)
}
DescribeBudgetPerformanceHistoryError::InvalidNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeBudgetPerformanceHistoryError::InvalidParameter(ref cause) => {
write!(f, "{}", cause)
}
DescribeBudgetPerformanceHistoryError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeBudgetPerformanceHistoryError {}
#[derive(Debug, PartialEq)]
pub enum DescribeBudgetsError {
AccessDenied(String),
ExpiredNextToken(String),
InternalError(String),
InvalidNextToken(String),
InvalidParameter(String),
NotFound(String),
}
impl DescribeBudgetsError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeBudgetsError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DescribeBudgetsError::AccessDenied(err.msg))
}
"ExpiredNextTokenException" => {
return RusotoError::Service(DescribeBudgetsError::ExpiredNextToken(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(DescribeBudgetsError::InternalError(err.msg))
}
"InvalidNextTokenException" => {
return RusotoError::Service(DescribeBudgetsError::InvalidNextToken(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(DescribeBudgetsError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(DescribeBudgetsError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeBudgetsError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeBudgetsError::AccessDenied(ref cause) => write!(f, "{}", cause),
DescribeBudgetsError::ExpiredNextToken(ref cause) => write!(f, "{}", cause),
DescribeBudgetsError::InternalError(ref cause) => write!(f, "{}", cause),
DescribeBudgetsError::InvalidNextToken(ref cause) => write!(f, "{}", cause),
DescribeBudgetsError::InvalidParameter(ref cause) => write!(f, "{}", cause),
DescribeBudgetsError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeBudgetsError {}
#[derive(Debug, PartialEq)]
pub enum DescribeNotificationsForBudgetError {
AccessDenied(String),
ExpiredNextToken(String),
InternalError(String),
InvalidNextToken(String),
InvalidParameter(String),
NotFound(String),
}
impl DescribeNotificationsForBudgetError {
pub fn from_response(
res: BufferedHttpResponse,
) -> RusotoError<DescribeNotificationsForBudgetError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(DescribeNotificationsForBudgetError::AccessDenied(
err.msg,
))
}
"ExpiredNextTokenException" => {
return RusotoError::Service(
DescribeNotificationsForBudgetError::ExpiredNextToken(err.msg),
)
}
"InternalErrorException" => {
return RusotoError::Service(
DescribeNotificationsForBudgetError::InternalError(err.msg),
)
}
"InvalidNextTokenException" => {
return RusotoError::Service(
DescribeNotificationsForBudgetError::InvalidNextToken(err.msg),
)
}
"InvalidParameterException" => {
return RusotoError::Service(
DescribeNotificationsForBudgetError::InvalidParameter(err.msg),
)
}
"NotFoundException" => {
return RusotoError::Service(DescribeNotificationsForBudgetError::NotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeNotificationsForBudgetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeNotificationsForBudgetError::AccessDenied(ref cause) => write!(f, "{}", cause),
DescribeNotificationsForBudgetError::ExpiredNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeNotificationsForBudgetError::InternalError(ref cause) => write!(f, "{}", cause),
DescribeNotificationsForBudgetError::InvalidNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeNotificationsForBudgetError::InvalidParameter(ref cause) => {
write!(f, "{}", cause)
}
DescribeNotificationsForBudgetError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeNotificationsForBudgetError {}
#[derive(Debug, PartialEq)]
pub enum DescribeSubscribersForNotificationError {
AccessDenied(String),
ExpiredNextToken(String),
InternalError(String),
InvalidNextToken(String),
InvalidParameter(String),
NotFound(String),
}
impl DescribeSubscribersForNotificationError {
pub fn from_response(
res: BufferedHttpResponse,
) -> RusotoError<DescribeSubscribersForNotificationError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(
DescribeSubscribersForNotificationError::AccessDenied(err.msg),
)
}
"ExpiredNextTokenException" => {
return RusotoError::Service(
DescribeSubscribersForNotificationError::ExpiredNextToken(err.msg),
)
}
"InternalErrorException" => {
return RusotoError::Service(
DescribeSubscribersForNotificationError::InternalError(err.msg),
)
}
"InvalidNextTokenException" => {
return RusotoError::Service(
DescribeSubscribersForNotificationError::InvalidNextToken(err.msg),
)
}
"InvalidParameterException" => {
return RusotoError::Service(
DescribeSubscribersForNotificationError::InvalidParameter(err.msg),
)
}
"NotFoundException" => {
return RusotoError::Service(DescribeSubscribersForNotificationError::NotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DescribeSubscribersForNotificationError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DescribeSubscribersForNotificationError::AccessDenied(ref cause) => {
write!(f, "{}", cause)
}
DescribeSubscribersForNotificationError::ExpiredNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeSubscribersForNotificationError::InternalError(ref cause) => {
write!(f, "{}", cause)
}
DescribeSubscribersForNotificationError::InvalidNextToken(ref cause) => {
write!(f, "{}", cause)
}
DescribeSubscribersForNotificationError::InvalidParameter(ref cause) => {
write!(f, "{}", cause)
}
DescribeSubscribersForNotificationError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DescribeSubscribersForNotificationError {}
#[derive(Debug, PartialEq)]
pub enum UpdateBudgetError {
AccessDenied(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl UpdateBudgetError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateBudgetError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(UpdateBudgetError::AccessDenied(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(UpdateBudgetError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(UpdateBudgetError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(UpdateBudgetError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for UpdateBudgetError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
UpdateBudgetError::AccessDenied(ref cause) => write!(f, "{}", cause),
UpdateBudgetError::InternalError(ref cause) => write!(f, "{}", cause),
UpdateBudgetError::InvalidParameter(ref cause) => write!(f, "{}", cause),
UpdateBudgetError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for UpdateBudgetError {}
#[derive(Debug, PartialEq)]
pub enum UpdateNotificationError {
AccessDenied(String),
DuplicateRecord(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl UpdateNotificationError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateNotificationError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(UpdateNotificationError::AccessDenied(err.msg))
}
"DuplicateRecordException" => {
return RusotoError::Service(UpdateNotificationError::DuplicateRecord(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(UpdateNotificationError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(UpdateNotificationError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(UpdateNotificationError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for UpdateNotificationError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
UpdateNotificationError::AccessDenied(ref cause) => write!(f, "{}", cause),
UpdateNotificationError::DuplicateRecord(ref cause) => write!(f, "{}", cause),
UpdateNotificationError::InternalError(ref cause) => write!(f, "{}", cause),
UpdateNotificationError::InvalidParameter(ref cause) => write!(f, "{}", cause),
UpdateNotificationError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for UpdateNotificationError {}
#[derive(Debug, PartialEq)]
pub enum UpdateSubscriberError {
AccessDenied(String),
DuplicateRecord(String),
InternalError(String),
InvalidParameter(String),
NotFound(String),
}
impl UpdateSubscriberError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateSubscriberError> {
if let Some(err) = proto::json::Error::parse(&res) {
match err.typ.as_str() {
"AccessDeniedException" => {
return RusotoError::Service(UpdateSubscriberError::AccessDenied(err.msg))
}
"DuplicateRecordException" => {
return RusotoError::Service(UpdateSubscriberError::DuplicateRecord(err.msg))
}
"InternalErrorException" => {
return RusotoError::Service(UpdateSubscriberError::InternalError(err.msg))
}
"InvalidParameterException" => {
return RusotoError::Service(UpdateSubscriberError::InvalidParameter(err.msg))
}
"NotFoundException" => {
return RusotoError::Service(UpdateSubscriberError::NotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for UpdateSubscriberError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
UpdateSubscriberError::AccessDenied(ref cause) => write!(f, "{}", cause),
UpdateSubscriberError::DuplicateRecord(ref cause) => write!(f, "{}", cause),
UpdateSubscriberError::InternalError(ref cause) => write!(f, "{}", cause),
UpdateSubscriberError::InvalidParameter(ref cause) => write!(f, "{}", cause),
UpdateSubscriberError::NotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for UpdateSubscriberError {}
#[async_trait]
pub trait Budgets {
async fn create_budget(
&self,
input: CreateBudgetRequest,
) -> Result<CreateBudgetResponse, RusotoError<CreateBudgetError>>;
async fn create_notification(
&self,
input: CreateNotificationRequest,
) -> Result<CreateNotificationResponse, RusotoError<CreateNotificationError>>;
async fn create_subscriber(
&self,
input: CreateSubscriberRequest,
) -> Result<CreateSubscriberResponse, RusotoError<CreateSubscriberError>>;
async fn delete_budget(
&self,
input: DeleteBudgetRequest,
) -> Result<DeleteBudgetResponse, RusotoError<DeleteBudgetError>>;
async fn delete_notification(
&self,
input: DeleteNotificationRequest,
) -> Result<DeleteNotificationResponse, RusotoError<DeleteNotificationError>>;
async fn delete_subscriber(
&self,
input: DeleteSubscriberRequest,
) -> Result<DeleteSubscriberResponse, RusotoError<DeleteSubscriberError>>;
async fn describe_budget(
&self,
input: DescribeBudgetRequest,
) -> Result<DescribeBudgetResponse, RusotoError<DescribeBudgetError>>;
async fn describe_budget_performance_history(
&self,
input: DescribeBudgetPerformanceHistoryRequest,
) -> Result<
DescribeBudgetPerformanceHistoryResponse,
RusotoError<DescribeBudgetPerformanceHistoryError>,
>;
async fn describe_budgets(
&self,
input: DescribeBudgetsRequest,
) -> Result<DescribeBudgetsResponse, RusotoError<DescribeBudgetsError>>;
async fn describe_notifications_for_budget(
&self,
input: DescribeNotificationsForBudgetRequest,
) -> Result<
DescribeNotificationsForBudgetResponse,
RusotoError<DescribeNotificationsForBudgetError>,
>;
async fn describe_subscribers_for_notification(
&self,
input: DescribeSubscribersForNotificationRequest,
) -> Result<
DescribeSubscribersForNotificationResponse,
RusotoError<DescribeSubscribersForNotificationError>,
>;
async fn update_budget(
&self,
input: UpdateBudgetRequest,
) -> Result<UpdateBudgetResponse, RusotoError<UpdateBudgetError>>;
async fn update_notification(
&self,
input: UpdateNotificationRequest,
) -> Result<UpdateNotificationResponse, RusotoError<UpdateNotificationError>>;
async fn update_subscriber(
&self,
input: UpdateSubscriberRequest,
) -> Result<UpdateSubscriberResponse, RusotoError<UpdateSubscriberError>>;
}
#[derive(Clone)]
pub struct BudgetsClient {
client: Client,
region: region::Region,
}
impl BudgetsClient {
pub fn new(region: region::Region) -> BudgetsClient {
BudgetsClient {
client: Client::shared(),
region,
}
}
pub fn new_with<P, D>(
request_dispatcher: D,
credentials_provider: P,
region: region::Region,
) -> BudgetsClient
where
P: ProvideAwsCredentials + Send + Sync + 'static,
D: DispatchSignedRequest + Send + Sync + 'static,
{
BudgetsClient {
client: Client::new_with(credentials_provider, request_dispatcher),
region,
}
}
pub fn new_with_client(client: Client, region: region::Region) -> BudgetsClient {
BudgetsClient { client, region }
}
}
#[async_trait]
impl Budgets for BudgetsClient {
async fn create_budget(
&self,
input: CreateBudgetRequest,
) -> Result<CreateBudgetResponse, RusotoError<CreateBudgetError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.CreateBudget");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, CreateBudgetError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<CreateBudgetResponse, _>()
}
async fn create_notification(
&self,
input: CreateNotificationRequest,
) -> Result<CreateNotificationResponse, RusotoError<CreateNotificationError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.CreateNotification");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, CreateNotificationError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<CreateNotificationResponse, _>()
}
async fn create_subscriber(
&self,
input: CreateSubscriberRequest,
) -> Result<CreateSubscriberResponse, RusotoError<CreateSubscriberError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.CreateSubscriber");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, CreateSubscriberError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<CreateSubscriberResponse, _>()
}
async fn delete_budget(
&self,
input: DeleteBudgetRequest,
) -> Result<DeleteBudgetResponse, RusotoError<DeleteBudgetError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.DeleteBudget");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DeleteBudgetError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<DeleteBudgetResponse, _>()
}
async fn delete_notification(
&self,
input: DeleteNotificationRequest,
) -> Result<DeleteNotificationResponse, RusotoError<DeleteNotificationError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.DeleteNotification");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DeleteNotificationError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<DeleteNotificationResponse, _>()
}
async fn delete_subscriber(
&self,
input: DeleteSubscriberRequest,
) -> Result<DeleteSubscriberResponse, RusotoError<DeleteSubscriberError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.DeleteSubscriber");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DeleteSubscriberError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<DeleteSubscriberResponse, _>()
}
async fn describe_budget(
&self,
input: DescribeBudgetRequest,
) -> Result<DescribeBudgetResponse, RusotoError<DescribeBudgetError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.DescribeBudget");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DescribeBudgetError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<DescribeBudgetResponse, _>()
}
async fn describe_budget_performance_history(
&self,
input: DescribeBudgetPerformanceHistoryRequest,
) -> Result<
DescribeBudgetPerformanceHistoryResponse,
RusotoError<DescribeBudgetPerformanceHistoryError>,
> {
let mut request = self.new_signed_request("POST", "/");
request.add_header(
"x-amz-target",
"AWSBudgetServiceGateway.DescribeBudgetPerformanceHistory",
);
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(
request,
DescribeBudgetPerformanceHistoryError::from_response,
)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response)
.deserialize::<DescribeBudgetPerformanceHistoryResponse, _>()
}
async fn describe_budgets(
&self,
input: DescribeBudgetsRequest,
) -> Result<DescribeBudgetsResponse, RusotoError<DescribeBudgetsError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.DescribeBudgets");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DescribeBudgetsError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<DescribeBudgetsResponse, _>()
}
async fn describe_notifications_for_budget(
&self,
input: DescribeNotificationsForBudgetRequest,
) -> Result<
DescribeNotificationsForBudgetResponse,
RusotoError<DescribeNotificationsForBudgetError>,
> {
let mut request = self.new_signed_request("POST", "/");
request.add_header(
"x-amz-target",
"AWSBudgetServiceGateway.DescribeNotificationsForBudget",
);
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, DescribeNotificationsForBudgetError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response)
.deserialize::<DescribeNotificationsForBudgetResponse, _>()
}
async fn describe_subscribers_for_notification(
&self,
input: DescribeSubscribersForNotificationRequest,
) -> Result<
DescribeSubscribersForNotificationResponse,
RusotoError<DescribeSubscribersForNotificationError>,
> {
let mut request = self.new_signed_request("POST", "/");
request.add_header(
"x-amz-target",
"AWSBudgetServiceGateway.DescribeSubscribersForNotification",
);
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(
request,
DescribeSubscribersForNotificationError::from_response,
)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response)
.deserialize::<DescribeSubscribersForNotificationResponse, _>()
}
async fn update_budget(
&self,
input: UpdateBudgetRequest,
) -> Result<UpdateBudgetResponse, RusotoError<UpdateBudgetError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.UpdateBudget");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, UpdateBudgetError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<UpdateBudgetResponse, _>()
}
async fn update_notification(
&self,
input: UpdateNotificationRequest,
) -> Result<UpdateNotificationResponse, RusotoError<UpdateNotificationError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.UpdateNotification");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, UpdateNotificationError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<UpdateNotificationResponse, _>()
}
async fn update_subscriber(
&self,
input: UpdateSubscriberRequest,
) -> Result<UpdateSubscriberResponse, RusotoError<UpdateSubscriberError>> {
let mut request = self.new_signed_request("POST", "/");
request.add_header("x-amz-target", "AWSBudgetServiceGateway.UpdateSubscriber");
let encoded = serde_json::to_string(&input).unwrap();
request.set_payload(Some(encoded));
let response = self
.sign_and_dispatch(request, UpdateSubscriberError::from_response)
.await?;
let mut response = response;
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
proto::json::ResponsePayload::new(&response).deserialize::<UpdateSubscriberResponse, _>()
}
}