2008-01-10
added query! to libastag, reverted Query :rabbit =>...
| lib/libastag.rb | file | annotate | diff | revisions | |
| lib/libastag/request.rb | file | annotate | diff | revisions |
1.1 --- a/lib/libastag.rb Wed Jan 09 22:40:35 2008 +0100 1.2 +++ b/lib/libastag.rb Thu Jan 10 13:03:10 2008 +0100 1.3 @@ -94,14 +94,14 @@ 1.4 # FIXME: should have a parameter :S 1.5 # return the ServerRsp. you can access rsp.message and rsp.comment. 1.6 def link_preview 1.7 - query(Request::GET_LINKPREVIEW) 1.8 + query!(Request::GET_LINKPREVIEW) 1.9 end 1.10 1.11 # return an array of Strings. 1.12 # Examples TODO 1.13 # ... [ 'toto', 'tata' ] 1.14 def friends 1.15 - rsp = query(Request::GET_FRIENDS_LIST) 1.16 + rsp = query!(Request::GET_FRIENDS_LIST) 1.17 if rsp.listfriend[:nb].to_i.zero? 1.18 Array.new 1.19 else 1.20 @@ -111,7 +111,7 @@ 1.21 1.22 # return an Array of Hash, with <tt>:title</tt>, <tt>:date</tt>, <tt>:from</tt> and <tt>:url</tt> keys. 1.23 def inbox 1.24 - rsp = query(Request::GET_INBOX_LIST) 1.25 + rsp = query!(Request::GET_INBOX_LIST) 1.26 if rsp.listreceivedmsg[:nb].to_i.zero? 1.27 Array.new 1.28 else 1.29 @@ -121,19 +121,19 @@ 1.30 1.31 # return the Rabbit's timezone. persistant. 1.32 def timezone 1.33 - @cache[:timezone] ||= query(Request::GET_TIMEZONE).timezone 1.34 + @cache[:timezone] ||= query!(Request::GET_TIMEZONE).timezone 1.35 end 1.36 1.37 # return the Rabbit's signature. persistant. 1.38 def signature 1.39 - @cache[:signature] ||= query(Request::GET_SIGNATURE).signature 1.40 + @cache[:signature] ||= query!(Request::GET_SIGNATURE).signature 1.41 end 1.42 1.43 # return an array of Strings. 1.44 # Examples TODO 1.45 # ... [ 'toto', 'tata' ] 1.46 def blacklisted 1.47 - rsp = query(Request::GET_BLACKLISTED) 1.48 + rsp = query!(Request::GET_BLACKLISTED) 1.49 if rsp.blacklist[:nb].to_i.zero? 1.50 Array.new 1.51 else 1.52 @@ -143,7 +143,7 @@ 1.53 1.54 # return +true+ if the Rabbit is asleep, +false+ otherwhise. 1.55 def asleep? 1.56 - query(Request::GET_RABBIT_STATUS).rabbitSleep =~ /YES/i 1.57 + query!(Request::GET_RABBIT_STATUS).rabbitSleep =~ /YES/i 1.58 end 1.59 1.60 # return +true+ if the Rabbit is awake, +false+ otherwhise. 1.61 @@ -155,7 +155,7 @@ 1.62 # 1.63 # see is_a_tag_tag? 1.64 def version 1.65 - @cache[:version] ||= query(Request::GET_RABBIT_VERSION).rabbitVersion 1.66 + @cache[:version] ||= query!(Request::GET_RABBIT_VERSION).rabbitVersion 1.67 end 1.68 1.69 # return +true+ if the Rabbit is a nabaztag/tag ("V2" Rabbit), +false+ otherwhise. 1.70 @@ -167,26 +167,30 @@ 1.71 # Examples TODO 1.72 # ... {:fr => "claire22k", :de => "helga22k"} 1.73 def voices 1.74 - @cache[:voices] ||= query(Request::GET_LANG_VOICE).voices.inject(Hash.new) { |h,i| h[i[:lang].to_sym] = i[:command]; h } 1.75 + @cache[:voices] ||= query!(Request::GET_LANG_VOICE).voices.inject(Hash.new) { |h,i| h[i[:lang].to_sym] = i[:command]; h } 1.76 end 1.77 1.78 # return the Rabbit name. persistant. 1.79 def name 1.80 - @cache[:name] ||= query(Request::GET_RABBIT_NAME).rabbitName 1.81 + @cache[:name] ||= query!(Request::GET_RABBIT_NAME).rabbitName 1.82 end 1.83 1.84 # return an array of languages. 1.85 # Examples TODO 1.86 # ... [ "fr", "us", "uk", "de" ] 1.87 def langs 1.88 - @cache[:langs] ||= query(Request::GET_SELECTED_LANG).myLangs.collect { |l| l[:lang] } 1.89 + @cache[:langs] ||= query!(Request::GET_SELECTED_LANG).myLangs.collect { |l| l[:lang] } 1.90 end 1.91 1.92 # FIXME: should have a parameter :S 1.93 def msg_preview 1.94 - query(Request::GET_MESSAGE_PREVIEW) 1.95 + query!(Request::GET_MESSAGE_PREVIEW) 1.96 end 1.97 1.98 + # return the ears position 1.99 + def ears_position 1.100 + query!(Request::GET_EARS_POSITION) 1.101 + end 1.102 # send the Rabbit to sleep. return the sever's response. 1.103 def sleep! 1.104 query(Request::SET_RABBIT_ASLEEP) 1.105 @@ -194,14 +198,18 @@ 1.106 1.107 # wake up the Rabbit. return the sever's response. 1.108 def wakeup! 1.109 - query(Request::SET_RABBIT_AWAKE) 1.110 + query!(Request::SET_RABBIT_AWAKE) 1.111 end 1.112 1.113 - private 1.114 # used to send Query, and check the ServerRsp. 1.115 def query event 1.116 - rsp = Request::Query.new(:token => @token, :serial => @serial, :event => event).send! 1.117 - raise "unhandled server's response : #{rsp.inspect}" unless rsp.good? 1.118 + Request::Query.new(:token => @token, :serial => @serial, :event => event).send! 1.119 + end 1.120 + 1.121 + def query! event 1.122 + rsp = query event 1.123 + # FIXME: convert into raw xml 1.124 + raise "bad response : #{rsp.inspect}" unless rsp.good? 1.125 rsp 1.126 end 1.127
2.1 --- a/lib/libastag/request.rb Wed Jan 09 22:40:35 2008 +0100 2.2 +++ b/lib/libastag/request.rb Thu Jan 10 13:03:10 2008 +0100 2.3 @@ -104,10 +104,6 @@ 2.4 # to_url, it should return a string that contains some GET parameters like "foo=bar&oni=2", or an array of 2.5 # GET options like [ "foo=bar", "oni=2" ]. 2.6 def initialize h 2.7 - if h[:rabbit] 2.8 - h[:serial], h[:token] = h[:rabbit].serial, h[:rabbit].token 2.9 - end 2.10 - 2.11 raise ArgumentError.new('event parameter has no "to_url" method or is empty') unless h[:event] and h[:event].respond_to?(:to_url) 2.12 raise ArgumentError.new('need a :serial') unless h[:serial] 2.13 raise ArgumentError.new('need a :token' ) unless h[:token]