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