#![allow(unused_variables)]
#![allow(unused_mut)]
use aws::common::region::Region;
use aws::common::params::{Params, ServiceParams};
use aws::common::xmlutil::*;
use aws::errors::http::*;
use aws::s3::writeparse::*;
use aws::s3::object::*;
use aws::s3::policy::*;
use aws::s3::acl::*;
use aws::s3::header::*;
use aws::s3::grant::*;
pub type BucketName = String;
pub type Buckets = Vec<Bucket>;
pub type CloudFunctionConfigurationList = Vec<CloudFunctionConfiguration>;
pub type TopicConfigurationList = Vec<TopicConfiguration>;
pub type BucketLocationConstraint = String;
pub type TargetBucket = String;
pub type TargetPrefix = String;
pub struct BucketNameParser;
pub struct BucketParser;
pub struct BucketNameWriter;
pub struct BucketWriter;
pub struct BucketsParser;
pub struct BucketsWriter;
pub struct CloudFunctionConfigurationListParser;
pub struct CloudFunctionConfigurationListWriter;
pub struct TopicConfigurationListParser;
pub struct TopicConfigurationListWriter;
pub struct TopicConfigurationParser;
pub struct TopicConfigurationWriter;
pub struct NotificationConfigurationParser;
pub struct NotificationConfigurationWriter;
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct BucketAlreadyExists;
pub struct BucketAlreadyExistsParser;
pub struct BucketAlreadyExistsWriter;
pub struct BucketLocationConstraintParser;
pub struct BucketLocationConstraintWriter;
pub struct HeadBucketRequestParser;
pub struct HeadBucketRequestWriter;
pub struct TargetBucketParser;
pub struct TargetBucketWriter;
pub struct TargetPrefixParser;
pub struct TargetPrefixWriter;
pub struct TargetGrantsParser;
pub struct TargetGrantsWriter;
pub struct LoggingEnabledParser;
pub struct LoggingEnabledWriter;
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct TopicConfigurationDeprecated {
pub topic: TopicArn,
pub id: NotificationId,
pub event: Event,
pub events: EventList,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct QueueConfigurationDeprecated {
pub queue: QueueArn,
pub events: EventList,
pub id: NotificationId,
pub event: Event,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct CloudFunctionConfiguration {
pub invocation_role: CloudFunctionInvocationRole,
pub cloud_function: CloudFunction,
pub events: EventList,
pub id: NotificationId,
pub event: Event,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketReplicationRequest {
pub replication_configuration: ReplicationConfiguration,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketNotificationRequest {
pub notification_configuration: NotificationConfigurationDeprecated,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketLoggingRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketLifecycleRequest {
pub lifecycle_configuration: Option<LifecycleConfiguration>,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketCorsRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketCorsOutput {
pub cors_rules: CORSRules,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketVersioningRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketVersioningOutput {
pub status: BucketVersioningStatus,
pub mfa_delete: MFADeleteStatus,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketVersioningRequest {
pub mfa: Option<MFA>,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
pub versioning_configuration: VersioningConfiguration,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct CORSRule {
pub allowed_headers: AllowedHeaders,
pub expose_headers: ExposeHeaders,
pub allowed_methods: AllowedMethods,
pub max_age_seconds: MaxAgeSeconds,
pub allowed_origins: AllowedOrigins,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct VersioningConfiguration {
pub status: BucketVersioningStatus,
pub mfa_delete: MFADelete,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketCorsRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct NotificationConfiguration {
pub queue_configurations: QueueConfigurationList,
pub lambda_function_configurations: LambdaFunctionConfigurationList,
pub topic_configurations: TopicConfigurationList,
pub cloud_function_configurations: CloudFunctionConfigurationList,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketNotificationConfigurationRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketWebsiteRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketTaggingRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct LifecycleConfiguration {
pub rules: Rules,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketPolicyRequest {
pub policy: Policy,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct RoutingRule {
pub redirect: Redirect,
pub condition: Option<Condition>,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct CreateBucketRequest {
pub grant_full_control: Option<GrantFullControl>,
pub create_bucket_configuration: Option<CreateBucketConfiguration>,
pub grant_write_acp: Option<GrantWriteACP>,
pub bucket: BucketName,
pub acl: Option<CannedAcl>,
pub grant_write: Option<GrantWrite>,
pub grant_read: Option<GrantRead>,
pub grant_read_acp: Option<GrantReadACP>,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketLoggingRequest {
pub bucket_logging_status: BucketLoggingStatus,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct ReplicationConfiguration {
pub rules: ReplicationRules,
pub role: Role,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct LoggingEnabled {
pub target_prefix: TargetPrefix,
pub target_bucket: TargetBucket,
pub target_grants: TargetGrants,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct WebsiteConfiguration {
pub redirect_all_requests_to: RedirectAllRequestsTo,
pub index_document: IndexDocument,
pub error_document: ErrorDocument,
pub routing_rules: RoutingRules,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct BucketLoggingStatus {
pub logging_enabled: LoggingEnabled,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct Destination {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketRequestPaymentRequest {
pub request_payment_configuration: RequestPaymentConfiguration,
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct Bucket {
pub creation_date: CreationDate,
pub name: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct HeadBucketRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketPolicyRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct DeleteBucketReplicationRequest {
pub bucket: BucketName,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketLoggingOutput {
pub logging_enabled: LoggingEnabled,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct GetBucketReplicationOutput {
pub replication_configuration: ReplicationConfiguration,
}
#[derive(Debug, Default, RustcDecodable, RustcEncodable)]
pub struct PutBucketWebsiteRequest {
pub content_md5: Option<ContentMD5>,
pub bucket: BucketName,
pub website_configuration: WebsiteConfiguration,
}
pub fn needs_create_bucket_config(region: Region) -> bool {
match region {
Region::UsEast1 => false,
_ => true,
}
}
pub fn create_bucket_config_xml(region: Region) -> Vec<u8> {
match region {
Region::UsEast1 => {
Vec::new() },
_ => {
let xml = format!(
"<CreateBucketConfiguration xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">
<LocationConstraint>{}</LocationConstraint>
</CreateBucketConfiguration >", region);
xml.into_bytes()
},
}
}
impl BucketNameParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<BucketName, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl BucketParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Bucket, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = Bucket::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "CreationDate" {
obj.creation_date = try!(CreationDateParser::parse_xml("CreationDate", stack));
continue;
}
if current_name == "Name" {
obj.name = try!(BucketNameParser::parse_xml("Name", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl BucketNameWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &BucketName) {
params.put(name, obj);
}
}
impl BucketWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Bucket) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
CreationDateWriter::write_params(params, &(prefix.to_string() + "CreationDate"), &obj.creation_date);
BucketNameWriter::write_params(params, &(prefix.to_string() + "Name"), &obj.name);
}
}
impl BucketsParser {
#[allow(unused_variables)]
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Buckets, XmlParseError> {
let mut obj = Vec::new();
while try!(peek_at_name(stack)) == "Bucket" {
obj.push(try!(BucketParser::parse_xml("Bucket", stack)));
}
Ok(obj)
}
}
impl BucketsWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Buckets) {
let mut index = 1;
for element in obj.iter() {
let key = &format!("{}.{}", name, index);
BucketWriter::write_params(params, key, element);
index += 1;
}
}
}
impl CloudFunctionConfigurationListParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<CloudFunctionConfigurationList, XmlParseError> {
let mut obj = Vec::new();
while try!(peek_at_name(stack)) == "CloudFunctionConfiguration" {
obj.push(try!(CloudFunctionConfigurationParser::parse_xml("CloudFunctionConfiguration", stack)));
}
Ok(obj)
}
}
impl CloudFunctionConfigurationListWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &CloudFunctionConfigurationList) {
let mut index = 1;
for element in obj.iter() {
let key = &format!("{}.{}", name, index);
CloudFunctionConfigurationWriter::write_params(params, key, element);
index += 1;
}
}
}
impl TopicConfigurationListParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<TopicConfigurationList, XmlParseError> {
let mut obj = Vec::new();
while try!(peek_at_name(stack)) == "TopicConfiguration" {
obj.push(try!(TopicConfigurationParser::parse_xml("TopicConfiguration", stack)));
}
Ok(obj)
}
}
impl TopicConfigurationListWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &TopicConfigurationList) {
let mut index = 1;
for element in obj.iter() {
let key = &format!("{}.{}", name, index);
TopicConfigurationWriter::write_params(params, key, element);
index += 1;
}
}
}
impl TopicConfigurationParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<TopicConfiguration, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = TopicConfiguration::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "Id" {
obj.id = Some(try!(NotificationIdParser::parse_xml("Id", stack)));
continue;
}
if current_name == "Topic" {
obj.topic_arn = try!(TopicArnParser::parse_xml("Topic", stack));
continue;
}
if current_name == "Event" {
obj.events = try!(EventListParser::parse_xml("Event", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl TopicConfigurationWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &TopicConfiguration) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
if let Some(ref obj) = obj.id {
NotificationIdWriter::write_params(params, &(prefix.to_string() + "Id"), obj);
}
TopicArnWriter::write_params(params, &(prefix.to_string() + "Topic"), &obj.topic_arn);
EventListWriter::write_params(params, &(prefix.to_string() + "Event"), &obj.events);
}
}
impl NotificationConfigurationParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<NotificationConfiguration, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = NotificationConfiguration::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "QueueConfiguration" {
obj.queue_configurations = try!(QueueConfigurationListParser::parse_xml("QueueConfiguration", stack));
continue;
}
if current_name == "LambdaFunctionConfiguration" {
obj.lambda_function_configurations = try!(LambdaFunctionConfigurationListParser::parse_xml("LambdaFunctionConfiguration", stack));
continue;
}
if current_name == "TopicConfiguration" {
obj.topic_configurations = try!(TopicConfigurationListParser::parse_xml("TopicConfiguration", stack));
continue;
}
if current_name == "CloudFunctionConfiguration" {
obj.cloud_function_configurations = try!(CloudFunctionConfigurationListParser::parse_xml("CloudFunctionConfiguration", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl NotificationConfigurationWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &NotificationConfiguration) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
QueueConfigurationListWriter::write_params(params, &(prefix.to_string() + "QueueConfiguration"), &obj.queue_configurations);
LambdaFunctionConfigurationListWriter::write_params(params, &(prefix.to_string() + "LambdaFunctionConfiguration"), &obj.lambda_function_configurations);
TopicConfigurationListWriter::write_params(params, &(prefix.to_string() + "TopicConfiguration"), &obj.topic_configurations);
CloudFunctionConfigurationListWriter::write_params(params, &(prefix.to_string() + "CloudFunctionConfiguration"), &obj.cloud_function_configurations);
}
}
impl BucketAlreadyExistsParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<BucketAlreadyExists, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = BucketAlreadyExists::default();
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl BucketAlreadyExistsWriter {
#[allow(unused_variables)]
pub fn write_params(params: &mut Params, name: &str, obj: &BucketAlreadyExists) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
}
}
impl BucketLocationConstraintParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<BucketLocationConstraint, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl BucketLocationConstraintWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &BucketLocationConstraint) {
params.put(name, obj);
}
}
impl HeadBucketRequestParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<HeadBucketRequest, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = HeadBucketRequest::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "Bucket" {
obj.bucket = try!(BucketNameParser::parse_xml("Bucket", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl HeadBucketRequestWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &HeadBucketRequest) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
BucketNameWriter::write_params(params, &(prefix.to_string() + "Bucket"), &obj.bucket);
}
}
impl TargetPrefixParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<TargetPrefix, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl TargetPrefixWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &TargetPrefix) {
params.put(name, obj);
}
}
impl TargetBucketParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<TargetBucket, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl TargetBucketWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &TargetBucket) {
params.put(name, obj);
}
}
impl TargetGrantsParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<TargetGrants, XmlParseError> {
let mut obj = Vec::new();
while try!(peek_at_name(stack)) == "Grant" {
obj.push(try!(TargetGrantParser::parse_xml("Grant", stack)));
}
Ok(obj)
}
}
impl TargetGrantsWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &TargetGrants) {
let mut index = 1;
for element in obj.iter() {
let key = &format!("{}.{}", name, index);
TargetGrantWriter::write_params(params, key, element);
index += 1;
}
}
}
impl LoggingEnabledParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<LoggingEnabled, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = LoggingEnabled::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "TargetPrefix" {
obj.target_prefix = try!(TargetPrefixParser::parse_xml("TargetPrefix", stack));
continue;
}
if current_name == "TargetBucket" {
obj.target_bucket = try!(TargetBucketParser::parse_xml("TargetBucket", stack));
continue;
}
if current_name == "Grant" {
obj.target_grants = try!(TargetGrantsParser::parse_xml("Grant", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl LoggingEnabledWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &LoggingEnabled) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
TargetPrefixWriter::write_params(params, &(prefix.to_string() + "TargetPrefix"), &obj.target_prefix);
TargetBucketWriter::write_params(params, &(prefix.to_string() + "TargetBucket"), &obj.target_bucket);
TargetGrantsWriter::write_params(params, &(prefix.to_string() + "Grant"), &obj.target_grants);
}
}