added query! to libastag, reverted Query :rabbit =>...

2008-01-10

author
Perrin Alexandre <makoto.kaworu@gmail.com>
date
Thu Jan 10 13:03:10 2008 +0100
changeset 81
d4114716cb22
parent 80
12101f1b81cb
child 82
5d1214820697

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]

mercurial