#
# Autogenerated by Thrift Compiler (0.8.0-dev)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#


module Elastictastic
  module Thrift
    module Method
      GET = 0
      PUT = 1
      POST = 2
      DELETE = 3
      HEAD = 4
      OPTIONS = 5
      VALUE_MAP = {0 => "GET", 1 => "PUT", 2 => "POST", 3 => "DELETE", 4 => "HEAD", 5 => "OPTIONS"}
      VALID_VALUES = Set.new([GET, PUT, POST, DELETE, HEAD, OPTIONS]).freeze
    end

    module Status
      CONT = 100
      SWITCHING_PROTOCOLS = 101
      OK = 200
      CREATED = 201
      ACCEPTED = 202
      NON_AUTHORITATIVE_INFORMATION = 203
      NO_CONTENT = 204
      RESET_CONTENT = 205
      PARTIAL_CONTENT = 206
      MULTI_STATUS = 207
      MULTIPLE_CHOICES = 300
      MOVED_PERMANENTLY = 301
      FOUND = 302
      SEE_OTHER = 303
      NOT_MODIFIED = 304
      USE_PROXY = 305
      TEMPORARY_REDIRECT = 307
      BAD_REQUEST = 400
      UNAUTHORIZED = 401
      PAYMENT_REQUIRED = 402
      FORBIDDEN = 403
      NOT_FOUND = 404
      METHOD_NOT_ALLOWED = 405
      NOT_ACCEPTABLE = 406
      PROXY_AUTHENTICATION = 407
      REQUEST_TIMEOUT = 408
      CONFLICT = 409
      GONE = 410
      LENGTH_REQUIRED = 411
      PRECONDITION_FAILED = 412
      REQUEST_ENTITY_TOO_LARGE = 413
      REQUEST_URI_TOO_LONG = 414
      UNSUPPORTED_MEDIA_TYPE = 415
      REQUESTED_RANGE_NOT_SATISFIED = 416
      EXPECTATION_FAILED = 417
      UNPROCESSABLE_ENTITY = 422
      LOCKED = 423
      FAILED_DEPENDENCY = 424
      INTERNAL_SERVER_ERROR = 500
      NOT_IMPLEMENTED = 501
      BAD_GATEWAY = 502
      SERVICE_UNAVAILABLE = 503
      GATEWAY_TIMEOUT = 504
      INSUFFICIENT_STORAGE = 506
      VALUE_MAP = {100 => "CONT", 101 => "SWITCHING_PROTOCOLS", 200 => "OK", 201 => "CREATED", 202 => "ACCEPTED", 203 => "NON_AUTHORITATIVE_INFORMATION", 204 => "NO_CONTENT", 205 => "RESET_CONTENT", 206 => "PARTIAL_CONTENT", 207 => "MULTI_STATUS", 300 => "MULTIPLE_CHOICES", 301 => "MOVED_PERMANENTLY", 302 => "FOUND", 303 => "SEE_OTHER", 304 => "NOT_MODIFIED", 305 => "USE_PROXY", 307 => "TEMPORARY_REDIRECT", 400 => "BAD_REQUEST", 401 => "UNAUTHORIZED", 402 => "PAYMENT_REQUIRED", 403 => "FORBIDDEN", 404 => "NOT_FOUND", 405 => "METHOD_NOT_ALLOWED", 406 => "NOT_ACCEPTABLE", 407 => "PROXY_AUTHENTICATION", 408 => "REQUEST_TIMEOUT", 409 => "CONFLICT", 410 => "GONE", 411 => "LENGTH_REQUIRED", 412 => "PRECONDITION_FAILED", 413 => "REQUEST_ENTITY_TOO_LARGE", 414 => "REQUEST_URI_TOO_LONG", 415 => "UNSUPPORTED_MEDIA_TYPE", 416 => "REQUESTED_RANGE_NOT_SATISFIED", 417 => "EXPECTATION_FAILED", 422 => "UNPROCESSABLE_ENTITY", 423 => "LOCKED", 424 => "FAILED_DEPENDENCY", 500 => "INTERNAL_SERVER_ERROR", 501 => "NOT_IMPLEMENTED", 502 => "BAD_GATEWAY", 503 => "SERVICE_UNAVAILABLE", 504 => "GATEWAY_TIMEOUT", 506 => "INSUFFICIENT_STORAGE"}
      VALID_VALUES = Set.new([CONT, SWITCHING_PROTOCOLS, OK, CREATED, ACCEPTED, NON_AUTHORITATIVE_INFORMATION, NO_CONTENT, RESET_CONTENT, PARTIAL_CONTENT, MULTI_STATUS, MULTIPLE_CHOICES, MOVED_PERMANENTLY, FOUND, SEE_OTHER, NOT_MODIFIED, USE_PROXY, TEMPORARY_REDIRECT, BAD_REQUEST, UNAUTHORIZED, PAYMENT_REQUIRED, FORBIDDEN, NOT_FOUND, METHOD_NOT_ALLOWED, NOT_ACCEPTABLE, PROXY_AUTHENTICATION, REQUEST_TIMEOUT, CONFLICT, GONE, LENGTH_REQUIRED, PRECONDITION_FAILED, REQUEST_ENTITY_TOO_LARGE, REQUEST_URI_TOO_LONG, UNSUPPORTED_MEDIA_TYPE, REQUESTED_RANGE_NOT_SATISFIED, EXPECTATION_FAILED, UNPROCESSABLE_ENTITY, LOCKED, FAILED_DEPENDENCY, INTERNAL_SERVER_ERROR, NOT_IMPLEMENTED, BAD_GATEWAY, SERVICE_UNAVAILABLE, GATEWAY_TIMEOUT, INSUFFICIENT_STORAGE]).freeze
    end

    class RestRequest
      include ::Thrift::Struct, ::Thrift::Struct_Union
      METHOD = 1
      URI = 2
      PARAMETERS = 3
      HEADERS = 4
      BODY = 5

      FIELDS = {
        METHOD => {:type => ::Thrift::Types::I32, :name => 'method', :enum_class => Elastictastic::Thrift::Method},
        URI => {:type => ::Thrift::Types::STRING, :name => 'uri'},
        PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}, :optional => true},
        HEADERS => {:type => ::Thrift::Types::MAP, :name => 'headers', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}, :optional => true},
        BODY => {:type => ::Thrift::Types::STRING, :name => 'body', :binary => true, :optional => true}
      }

      def struct_fields; FIELDS; end

      def validate
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field method is unset!') unless @method
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field uri is unset!') unless @uri
        unless @method.nil? || Elastictastic::Thrift::Method::VALID_VALUES.include?(@method)
          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field method!')
        end
      end

      ::Thrift::Struct.generate_accessors self
    end

    class RestResponse
      include ::Thrift::Struct, ::Thrift::Struct_Union
      STATUS = 1
      HEADERS = 2
      BODY = 3

      FIELDS = {
        STATUS => {:type => ::Thrift::Types::I32, :name => 'status', :enum_class => Elastictastic::Thrift::Status},
        HEADERS => {:type => ::Thrift::Types::MAP, :name => 'headers', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}, :optional => true},
        BODY => {:type => ::Thrift::Types::STRING, :name => 'body', :binary => true, :optional => true}
      }

      def struct_fields; FIELDS; end

      def validate
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field status is unset!') unless @status
        unless @status.nil? || Elastictastic::Thrift::Status::VALID_VALUES.include?(@status)
          raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field status!')
        end
      end

      ::Thrift::Struct.generate_accessors self
    end

  end
end
