response.rb

Path: lib/violet/response.rb
Last Update: Wed Dec 05 13:53:53 +0100 2007
GoodServerRsp EarPositionSend NabCastSend CommandSend Signature PositionEar VoiceListTts LinkPreview MessageSend LangListUser RabbitName TtsSend ListReceivedMsg ListFriend RabbitSleep Blacklist Timezone RabbitVersion WebRadioSend ChorSend BadServerRsp NoGoodTokenOrSerial ChorNotSend NabCastNotSend MessageNotSend AbuseSending NoCorrectParameters TtsNotSend NotV2Rabbit WebRadioNotSend EarPositionNotSend Exception ProtocolExcepion ServerRsp EmptyServerRsp Base Response dot/f_5.png

violet/response.rb

Summary

this module handle servers messages. Main method/class are Response.parse and Response::Base::ServerRsp (well documented).

you should only use Response.parse with the server‘s message (xml) as argument, it returns a ServerRsp instance from the corresponding class (see all the ServerRsp subclass). with a ServerRsp instance you can use :

r.has_x?
return true if r has at least one element of name "x", return false otherwhise.
r.has_many_xs?
return true if r has more than one element of name "x", return false otherwhise.
r.x
find the first xml element of name x and return it‘s text if any, or a hash of it‘s options
r.x
find all xml element of name x and return an Array of their text if any, or their options.
r.good?
return true if the response is not an error, false otherwhise.
r.bad?
return true if the response is an error, false otherwhise.

Examples :

    >> rsp = Response.parse('<?xml version="1.0" encoding="UTF-8"?><rsp><blacklist nb="2"/><pseudo name="toto"/><pseudo name="titi"/></rsp>')
    => #<Response::Blacklist:0x2acd8c08f2f8 @xml=<UNDEFINED> ... </>>
    >> rsp.good?
    => true
    >> rsp.has_message?
    => false
    >> rsp.message
    NameError: undefined local variable or method message for #<Response::Blacklist:0x2b1f056afdc0 @xml=<UNDEFINED> ... </>>
    >> rsp.has_blacklist?
    => true
    >> rsp.blacklist
    => {:nb=>"2"}
    >> rsp.pseudo
    => {:name=>"toto"}
    >> rsp.has_many_pseudos?
    => true
    >> rsp.pseudos
    => [{:name=>"toto"}, {:name=>"titi"}]

Low Level

if you want to access to the REXML::Document object of a ServerRsp you can either use rsp.xml or use ServerRsp#get_all method.

Required files

rexml/document  

[Validate]