Sha256: e2f0750f48402fdcf72d7ae106b01d11f20919942a09716f9eccf508112cf651
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'rubygems' require 'soap/rpc/driver' require 'soap/filter/streamhandler' module Etapper class SessionFilter < SOAP::Filter::StreamHandler attr_accessor :cookie_values def initialize @cookie_values = {} end def on_http_outbound(req) if cookies.empty? req.header.delete('Cookie') else req.header['Cookie'] = cookies end # Tweak the XML body to fit eTapestry's quirks and bugs b = HTTP::Message::Body.new c = req.body.content c.gsub!(/>\s*</m,'><') # Remove whitespace between elements c.gsub!(/<(\S+) xsi:nil="true"><\/\1>/,'') # Strip out elements that are simply nil b.init_request(c) req.body = b end def on_http_inbound(req, res) res.header['Set-Cookie'].each do |cookie| value = cookie.sub(/;.*/, '') if value =~ /(.*?)\s*=\s*(.*)/ @cookie_values[$1] = $2 end end end private def cookies cookie_array = [] @cookie_values.each {|key, value| cookie_array << "#{key}=#{value}"} cookie_array.join("; ") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
etapper-0.0.0 | lib/etapper/session_filter.rb |