use aws::s3::s3client::{ObjectVersionId, ObjectVersionIdWriter, ObjectVersionIdParser, Code, CodeWriter, CodeParser, ObjectKey, ObjectKeyWriter, ObjectKeyParser, S3ClientMessage, S3ClientMessageWriter, S3ClientMessageParser};
use aws::common::xmlutil::{XmlParseError, Peek, Next};
use aws::common::xmlutil::{characters, start_element, end_element, string_field, peek_at_name};
use aws::common::params::Params;
#[derive(Debug, Default)]
pub struct S3ClientError {
pub version_id: ObjectVersionId,
pub code: Code,
pub message: S3ClientMessage,
pub key: ObjectKey,
}
struct S3ClientErrorParser;
impl S3ClientErrorParser {
fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<S3ClientError, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = S3ClientError::default();
loop {
let current_name = try!(peek_at_name(stack));
if current_name == "VersionId" {
obj.version_id = try!(ObjectVersionIdParser::parse_xml("VersionId", stack));
continue;
}
if current_name == "Code" {
obj.code = try!(CodeParser::parse_xml("Code", stack));
continue;
}
if current_name == "Message" {
obj.message = try!(S3ClientMessageParser::parse_xml("Message", stack));
continue;
}
if current_name == "Key" {
obj.key = try!(ObjectKeyParser::parse_xml("Key", stack));
continue;
}
break;
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
struct S3ClientErrorWriter;
impl S3ClientErrorWriter {
fn write_params(params: &mut Params, name: &str, obj: &S3ClientError) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
ObjectVersionIdWriter::write_params(params, &(prefix.to_string() + "VersionId"), &obj.version_id);
CodeWriter::write_params(params, &(prefix.to_string() + "Code"), &obj.code);
S3ClientMessageWriter::write_params(params, &(prefix.to_string() + "Message"), &obj.message);
ObjectKeyWriter::write_params(params, &(prefix.to_string() + "Key"), &obj.key);
}
}