/*
 * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
namespace Amazon.S3.Model
{
    /// Website Configuration
    /// 
    public class WebsiteConfiguration
    {
        
        private string errorDocument;
        private string indexDocumentSuffix;
        private RoutingRuleRedirect redirectAllRequestsTo;
        private List routingRules = new List();
        /// 
        /// The ErrorDocument value, an object key name to use when a 4XX class error occurs.
        /// 
        public string ErrorDocument
        {
            get { return this.errorDocument; }
            set { this.errorDocument = value; }
        }
        // Check to see if ErrorDocument property is set
        internal bool IsSetErrorDocument()
        {
            return this.errorDocument != null;
        }
        /// 
        /// 
        /// This value is a suffix that is appended to a request that is for a "directory" 
        /// on the website endpoint (e.g. if the suffix is index.html and
        /// you make a request to samplebucket/images/ the data that
        /// is returned will be for the object with the key name
        /// images/index.html)
        /// 
        /// 
        /// The suffix must not be empty and must not include a slash
        /// character.
        /// 
        /// 
        public string IndexDocumentSuffix
        {
            get { return this.indexDocumentSuffix; }
            set { this.indexDocumentSuffix = value; }
        }
        // Check to see if IndexDocument property is set
        internal bool IsSetIndexDocumentSuffix()
        {
            return this.indexDocumentSuffix != null;
        }
        /// 
        /// Container for redirect information where all requests will be redirect
        /// to. You can redirect requests to another host, to another page, or with
        /// another protocol. In the event of an error, you can can specify a
        /// different error code to return. .
        /// 
        public RoutingRuleRedirect RedirectAllRequestsTo
        {
            get { return this.redirectAllRequestsTo; }
            set { this.redirectAllRequestsTo = value; }
        }
        // Check to see if RedirectAllRequestsTo property is set
        internal bool IsSetRedirectAllRequestsTo()
        {
            return this.redirectAllRequestsTo != null;
        }
        /// 
        /// The list of routing rules that can be used for configuring redirects if certain conditions are meet.
        /// 
        public List RoutingRules
        {
            get { return this.routingRules; }
            set { this.routingRules = value; }
        }
        // Check to see if RoutingRules property is set
        internal bool IsSetRoutingRules()
        {
            return this.routingRules.Count > 0;
        }
    }
}