Listing 8. servlet.rb require 'rubygems' require 'builder' require 'database' require 'loc_service' require 'webrick' include WEBrick include WEBrick::HTTPServlet class LocalizationServlet < AbstractServlet def initialize(server, wsdl) super(server) @loc_service = LocalizationService.new(wsdl) end def do_GET(req, res) customer_id = req.query['customer_id'] customer = Customer.find(customer_id) address = customer.address if address.location.nil? lon, lat = @loc_service.locate(address) address.location = Location.new( :longitude => lon, :latitude => lat ) customer.save end res['content-type'] = 'text/xml' res.body = to_xml(address.location) res.status = 200 end def to_xml(location) xml = '' doc = Builder::XmlMarkup.new( :target => xml, :indent => 2 ) doc.position( :longitude => location.longitude, :latitude => location.latitude ) xml end end