Bueno debido a que se fue de tema mi thread sobre la RailConf 2007
-culpa mia, al hablar de esto- les dejo aca un ejemplo de como he
implementado mi modelo en mi proyecto de RoR.

class User < HTTPService
  attr_accessor :name, :password
  attr_reader :status, :message, :planners, :session_code, :planners

  def initialize
    super
    @status = 0;
    @message = 'Mensaje defecto.'
    @planners = []
    @session_code = 0
  end

def try_to_login(user, password)
    url = self.set_url('02','01','_initializesession')
    url << '&nic=' << user << '&pass=' << password

    xml_data = Net::HTTP.get_response(URI.parse(URI.escape(url))).body
    doc = REXML::Document.new(xml_data)
    root = doc.root

    if root.attributes["message"] != ''
      @status = root.attributes["status"]
      @message = root.attributes["message"]
    else
      @session_code = root.elements["sessionCode"].text
      @nic = root.elements["nic"].text
      @name = root.elements["name"].text
      @company = root.elements["company"].text
      @dateformat = root.elements["dateformat"].text
      @numericformat = root.elements["numericformat"].text
      @language = root.elements["language"].text
      @plan = root.elements["plan"].text
      @currency = root.elements["currency"].text
      @gmt = root.elements["gmt"].text
    end
  end

  def get_planners(id, session_code)
    url = self.set_url_with_session('03','03','getplanners', session_code)
    url << '&idPlanner=' << id unless id == ''

   xml_data = Net::HTTP.get_response(URI.parse(URI.escape(url))).body
    doc = REXML::Document.new(xml_data)
    root = doc.root

    if root.attributes["message"] != ''
      @status = root.attributes["status"]
      @message = root.attributes["message"]
    else
      doc.elements.each("*/planner") { |element|
      @planners << Planner.withAll(element.elements["idPlanner"].text,
                                   element.elements["name"].text,
                                   element.elements["idPlannerType"].text,
                                   element.elements["plannerType"].text,
                                   element.elements["visible"].text,
                                   element.elements["owner"].text,
                                   element.elements["date"].text,
                                   element.elements["columns"].text)
                                   }
    end
  end
end

De esta forma creo las clases de mi modelo a partir de los datos
obtenidos como respuesta del servicio en un xml. Obviamente que aqui
falta explicar algunos metodos mas para poder captar mejor el esquema
general pero espero que sirva a modo ilustrativo como fue mi modo de
proceder.

Espero comentarios, sugerencias y/o criticas.

Saludos!
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a