# encoding: utf-8
require 'ting_yun/http/abstract_request'

    module TingYun
      module Http


    class CurbRequest
      CURB = 'Curb'.freeze
      LHOST = 'host'.freeze
      UHOST = 'Host'.freeze

      def initialize( curlobj )
        @curlobj = curlobj
      end

      def type
        CURB
      end

      def from
        "curb http"
      end

      def host_from_header
        self[LHOST] || self[UHOST]
      end

      def host
        host_from_header || self.uri.host
      end

      def method
        @curlobj._ty_http_verb
      end

      def []( key )
        @curlobj.headers[ key ]
      end

      def []=( key, value )
        @curlobj.headers[ key ] = value
      end

      def uri
        @uri ||= TingYun::Agent::HTTPClients::URIUtil.parse_and_normalize_url(@curlobj.url)
      end
    end


    class CurbResponse < AbstractRequest
      def initialize(curlobj)
        @headers = {}
        @curlobj = curlobj
      end

      def [](key)
        @headers[ key.downcase ]
      end

      def to_hash
        @headers.dup
      end

      def append_header_data( data )
        key, value = data.split( /:\s*/, 2 )
        @headers[ key.downcase ] = value
        @curlobj._ty_header_str ||= ''
        @curlobj._ty_header_str << data
      end

    end


  end
end