use std::str::FromStr;
use std::str;
use aws::common::xmlutil::*;
use aws::common::params::*;
pub type Body = Vec<u8>;
pub type MaxKeys = i32;
pub type URI = String;
pub type ID = String;
pub type Type = String;
pub type EmailAddress = String;
pub type DisplayName = String;
pub type Code = String;
pub type HostId = String;
pub type RequestId = String;
pub type Resource = String;
pub type Value = String;
pub struct BodyParser;
pub struct BodyWriter;
pub struct MaxKeysParser;
pub struct MaxKeysWriter;
pub struct URIParser;
pub struct URIWriter;
pub struct IDParser;
pub struct IDWriter;
pub struct TypeParser;
pub struct TypeWriter;
pub struct EmailAddressParser;
pub struct EmailAddressWriter;
pub struct DisplayNameParser;
pub struct DisplayNameWriter;
pub struct OwnerParser;
pub struct OwnerWriter;
pub struct CodeParser;
pub struct CodeWriter;
pub struct HostIdParser;
pub struct HostIdWriter;
pub struct RequestIdParser;
pub struct RequestIdWriter;
pub struct ResourceParser;
pub struct ResourceWriter;
pub struct ValueParser;
pub struct ValueWriter;
#[derive(Debug, Default)]
pub struct Owner {
pub display_name: DisplayName,
pub id: ID,
}
impl BodyParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Body, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack)).into_bytes();
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl BodyWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Body) {
params.put(name, str::from_utf8(obj).unwrap());
}
}
impl MaxKeysParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<MaxKeys, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = i32::from_str(try!(characters(stack)).as_ref()).unwrap();
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl MaxKeysWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &MaxKeys) {
params.put(name, &obj.to_string());
}
}
impl URIParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<URI, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl URIWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &URI) {
params.put(name, obj);
}
}
impl IDParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<ID, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl IDWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &ID) {
params.put(name, obj);
}
}
impl TypeParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Type, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl TypeWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Type) {
params.put(name, obj);
}
}
impl EmailAddressParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<EmailAddress, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl EmailAddressWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &EmailAddress) {
params.put(name, obj);
}
}
impl DisplayNameParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<DisplayName, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl DisplayNameWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &DisplayName) {
params.put(name, obj);
}
}
impl OwnerParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Owner, XmlParseError> {
try!(start_element(tag_name, stack));
let mut obj = Owner::default();
loop {
let current_name = try!(peek_at_name(stack));
match current_name.as_ref() {
"DisplayName" => {
obj.display_name = try!(DisplayNameParser::parse_xml("DisplayName", stack));
continue;
},
"ID" => {
obj.id = try!(IDParser::parse_xml("ID", stack));
continue;
},
_ => break,
}
}
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl OwnerWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Owner) {
let mut prefix = name.to_string();
if prefix != "" { prefix.push_str("."); }
DisplayNameWriter::write_params(params, &(prefix.to_string() + "DisplayName"), &obj.display_name);
IDWriter::write_params(params, &(prefix.to_string() + "ID"), &obj.id);
}
}
impl CodeParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Code, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl CodeWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Code) {
params.put(name, obj);
}
}
impl HostIdParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<HostId, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl HostIdWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Code) {
params.put(name, obj);
}
}
impl RequestIdParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<RequestId, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl RequestIdWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Code) {
params.put(name, obj);
}
}
impl ResourceParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Resource, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl ResourceWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Code) {
params.put(name, obj);
}
}
impl ValueParser {
pub fn parse_xml<T: Peek + Next>(tag_name: &str, stack: &mut T) -> Result<Value, XmlParseError> {
try!(start_element(tag_name, stack));
let obj = try!(characters(stack));
try!(end_element(tag_name, stack));
Ok(obj)
}
}
impl ValueWriter {
pub fn write_params(params: &mut Params, name: &str, obj: &Value) {
params.put(name, obj);
}
}