Class: XmlConv::Util::DestinationHttp

Inherits:
RemoteDestination show all
Defined in:
lib/xmlconv/util/destination.rb

Constant Summary collapse

HTTP_HEADERS =
{
	'content-type'	=>	'text/xml',
}

Constants inherited from Destination

XmlConv::Util::Destination::STATUS_COMPARABLE

Instance Attribute Summary

Attributes inherited from RemoteDestination

#transport

Attributes inherited from Destination

#path, #status, #uri

Instance Method Summary collapse

Methods inherited from RemoteDestination

#deliver, #forget_credentials!, #host, #host=, #path, #path=, #uri=

Methods inherited from Destination

book, #deliver, #forget_credentials!, #sanitize, #status_comparable, #update_status

Constructor Details

#initialize(uri = URI.parse('http:/')) ⇒ DestinationHttp

Returns a new instance of DestinationHttp.



169
170
171
172
173
# File 'lib/xmlconv/util/destination.rb', line 169

def initialize(uri = URI.parse('http:/'))
	super()
	@uri = uri
     @transport = Net::HTTP
end

Instance Method Details

#do_deliver(delivery) ⇒ Object



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/xmlconv/util/destination.rb', line 174

def do_deliver(delivery)
     if(delivery.is_a?(Array))
        worst_status = ''
        delivery.each { |part|
          do_deliver(part)
          ## bogostatus: assume that the more information in the string,
          ##             the worse the status is (ok < not found)
          ##             rationale: DTSTTCPW
          if(@status.to_s > worst_status.to_s)
            worst_status = @status
          end
        }
        @status = worst_status
     else
       @transport.start(@uri.host, @uri.port) { |http|
         request = Net::HTTP::Post.new(@uri.path, HTTP_HEADERS)
         if(@uri.user || @uri.password)
           request.basic_auth(@uri.user, @uri.password)
         end
         response = http.request(request, delivery.to_s)
         status_str = response.message.downcase.gsub(/\s+/, "_")
         @status = "http_#{status_str}".intern
       }
     end
end