Changeset 1504:83638760290c

Show
Ignore:
Timestamp:
03/09/10 21:16:01 (5 months ago)
Author:
Fritz
Branch:
default
Message:

REST : start replacing print by logging feature. Move /account/user/auth to /account/auth

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/domogik/xpl/bin/rest.py

    r1503 r1504  
    8888        self._log.info("Rest Server initialisation...") 
    8989        self._log.debug("locale : %s %s" % locale.getdefaultlocale()) 
     90        # logging data manipulation initialization 
     91        log_dm = logger.Logger('REST-DM') 
     92        self._log_dm = log_dm.get_logger() 
     93        self._log_dm.info("#Rest Server Data Manipulation...") 
     94        self._log_dm.debug("locale : %s %s" % locale.getdefaultlocale()) 
    9095        # DB Helper 
    9196        self._db = DbHelper() 
     
    110115            self.server_ip = server_ip 
    111116            self.server_port = server_port 
     117        self._log.info("Configuration : ip:port = %s:%s" % (self.server_ip, self.server_port)) 
    112118 
    113119 
    114120        # Queues config 
     121        self._log.debug("Get queues configuration") 
    115122        self._config = Query(self._myxpl) 
    116123        res = xPLResult() 
     
    142149 
    143150        # define listeners for queues 
     151        self._log.debug("Create listeners") 
    144152        Listener(self._add_to_queue_system_list, self._myxpl, \ 
    145153                 {'schema': 'domogik.system', 
     
    163171                  'host' : gethostname()}) 
    164172 
     173        self._log.info("Initialisation OK") 
     174 
    165175 
    166176    def _add_to_queue_system_list(self, message): 
     
    189199            @param nb_rec : internal parameter (do not use it for first call). Used to check recursivity VS queue size 
    190200        """ 
     201        self._log.debug("Get from queue : %s (recursivity deepth : %s)" % (str(my_queue), nb_rec)) 
    191202        # check if recursivity doesn't exceed queue size 
    192203        if nb_rec > self._queue_size: 
    193             print "_get_from_queue : number of call exceed queue size (%s) : return None" % self._queue_size 
     204            self._log.warning("Get from queue %s : number of call exceed queue size (%s) : return None" % (str(my_queue), self._queue_size)) 
    194205            # we raise an "Empty" exception because we consider that if we don't find 
    195206            # the good data, it is as if it was "empty" 
     
    202213            # no filter defined 
    203214            if filter == None:  
     215                self._log.debug("Get from queue %s : return %s" % (str(my_queue), str(message))) 
    204216                return message 
    205217 
     
    214226                        len_data = len(filter_data) - 1 
    215227                        if msg_data[0:len_data] != filter_data[0:-1]: 
    216                             print "Bad data!" 
    217228                            keep_data = False 
    218229                    # normal search 
    219230                    else: 
    220231                        if message.data[key] != filter[key]: 
    221                             print "Bad data!" 
    222232                            keep_data = False 
    223233 
    224234                # if message is ok for us, return it 
    225235                if keep_data == True: 
     236                    self._log.debug("Get from queue %s : return %s" % (str(my_queue), str(message))) 
    226237                    return message 
    227238 
    228239                # else, message get back in queue and get another one 
    229240                else: 
     241                    self._log.debug("Get from queue %s : bad data, check another one..." % (str(my_queue))) 
    230242                    self._put_in_queue(my_queue, message) 
    231243                    return self._get_from_queue(my_queue, filter, nb_rec + 1) 
     
    233245        # if message too old : get an other message 
    234246        else: 
     247            self._log.debug("Get from queue %s : data too old, check another one..." % (str(my_queue))) 
    235248            return self._get_from_queue(my_queue, filter, nb_rec + 1) 
    236249 
    237250    def _put_in_queue(self, my_queue, message): 
     251        self._log.debug("Put in queue %s : %s" % (str(my_queue), str(message))) 
    238252        my_queue.put((time.time(), message), True, self._queue_timeout)  
    239253 
     
    244258        """ 
    245259        # Start HTTP server 
     260        self._log.info("Start HTTP Server on %s:%s..." % (self.server_ip, self.server_port)) 
    246261        server = HTTPServerWithParam((self.server_ip, int(self.server_port)), RestHandler, \ 
    247262                                     handler_params = [self]) 
    248         print 'Start REST server on %s:%s...' % (self.server_ip, self.server_port) 
    249263        server.serve_forever() 
    250264 
     
    286300            Call directly .do_for_all_methods() 
    287301        """ 
    288         print "==== GET ============================================" 
    289302        self.do_for_all_methods() 
    290303 
     
    293306            Call directly .do_for_all_methods() 
    294307        """ 
    295         print "==== POST ===========================================" 
    296308        self.do_for_all_methods() 
    297309 
     
    300312            Call directly .do_for_all_methods() 
    301313        """ 
    302         print "==== OPTIONS ===========================================" 
    303314        self.do_for_all_methods() 
    304315 
     
    307318            the REST url 
    308319        """ 
    309  
    310320        # dirty issue to force HTTP/1.1  
    311321        self.protocol_version = 'HTTP/1.1' 
    312322        self.request_version = 'HTTP/1.1' 
    313323 
    314  
     324        # TODO : create a thread here 
    315325        request = ProcessRequest(self.server.handler_params, self.path, \ 
    316326                                 self.send_http_response_ok, \ 
    317327                                 self.send_http_response_error) 
    318328        request.do_for_all_methods() 
     329         
    319330 
    320331 
     
    331342            @param data : json data to display 
    332343        """ 
     344        # TODO : log!! 
     345        #self._log.debug("Send HTTP header for OK") 
    333346        self.send_response(200) 
    334347        self.send_header('Content-type',  'application/json') 
     
    338351        self.end_headers() 
    339352        if data: 
     353            # TODO : log!! 
     354            #self._log.debug("Send HTTP data : %s" % data.encode("utf-8")) 
    340355            self.wfile.write(data.encode("utf-8")) 
    341356 
     
    352367                              in jsonp format 
    353368        """ 
     369        # TODO : log!! 
     370        #self._log.debug("Send HTTP header for ERROR : code=%s ; msg=%s" % (err_code, err_msg)) 
    354371        self.send_response(200) 
    355372        self.send_header('Content-type',    'text/html') 
     
    358375        json_data.set_jsonp(jsonp, jsonp_cb) 
    359376        self.wfile.write(json_data.get()) 
     377        # TODO : log!! 
     378        #self._log.warning("Error reply : %s" % json_data.get()) 
    360379 
    361380 
     
    395414        self._xml_directory = self.handler_params[0]._xml_directory 
    396415 
     416        self._log.debug("Process request : init") 
     417 
    397418        self._queue_timeout =  self.handler_params[0]._queue_timeout 
    398419        self._queue_size =  self.handler_params[0]._queue_size 
     
    412433 
    413434        # url processing 
    414         print type(self.path).__name__ 
    415435        print self.path 
    416         #self.path = str(urllib.unquote(self.path)) 
    417436        self.path = urllib.unquote(unicode(self.path)) 
    418         print type(self.path).__name__ 
    419         print self.path 
    420         #self.path = unicode(self.path, "utf-8") 
     437        self._log.info("Request : %s" % self.path) 
     438 
     439        # TODO log data manipulation here 
    421440 
    422441        tab_url = self.path.split("?") 
     
    428447        if self.path[-1:] == "/": 
    429448            self.path = self.path[0:len(self.path)-1] 
    430         print "PATH : " + self.path 
    431449        tab_path = self.path.split("/") 
    432450 
     
    441459        else: 
    442460            self.rest_request = [] 
    443         print "TYPE    : " + self.rest_type 
    444         print "Request : " + str(self.rest_request) 
    445  
    446  
    447  
    448  
    449  
    450461 
    451462 
     
    477488        """ Process parameters : ...?param1=val1&param2=val2&.... 
    478489        """ 
     490        self._log.debug("Parse request options") 
    479491 
    480492        # for each debug option 
     
    490502            # call json specific options 
    491503            if opt_key == "callback" and opt_value != None: 
     504                self._log.debug("Option : jsonp mode") 
    492505                self.jsonp = True 
    493506                self.jsonp_cb = opt_value 
     
    502515        """ Sleep process for 15 seconds 
    503516        """ 
    504         print "DEBUG : start sleeping for " + str(duration) 
     517        self._log.debug("Start sleeping for " + str(duration)) 
    505518        time.sleep(float(duration)) 
    506         print "DEBUG : end sleeping" 
     519        self._log.debug("End sleeping") 
    507520 
    508521 
     
    521534        json_data.add_data(("Version : 0.1.x", "Status : UP")) 
    522535        self.send_http_response_ok(json_data.get()) 
    523  
    524  
    525  
    526  
    527536 
    528537 
     
    538547           - send appropriate xPL message on network 
    539548        """ 
    540         print "Call rest_command" 
     549        self._log.debug("Process command") 
    541550 
    542551        # parse data in URL 
     
    554563            self.send_http_response_ok(json_data.get()) 
    555564            return 
    556         print "Techno    : %s" % techno 
    557         print "Address   : %s" % address 
    558         print "Order     : %s" % order 
    559         print "Others    : %s" % str(others) 
     565        self._log.debug("Techno    : %s" % techno) 
     566        self._log.debug("Address   : %s" % address) 
     567        self._log.debug("Order     : %s" % order) 
     568        self._log.debug("Others    : %s" % str(others)) 
    560569 
    561570        # open xml file 
     
    567576            return 
    568577 
    569         print "Send message : %s" % message 
     578        self._log.debug("Process command > send message : %s" % str(message)) 
    570579        self._myxpl.send(message) 
    571580 
     
    576585 
    577586         
    578  
    579  
    580  
    581587 
    582588 
     
    704710            - Send message 
    705711        """ 
    706  
    707         print "Call rest_xpl_cmnd" 
     712        self._log.debug("Send xpl message") 
     713 
    708714        if len(self.rest_request) == 0: 
    709715            self.send_http_response_error(999, "Schema not given", self.jsonp, self.jsonp_cb) 
     
    740746            return 
    741747 
    742         print "Send message : %s" % message 
     748        self._log.debug("Send message : %s" % str(message)) 
    743749        self._myxpl.send(message) 
    744750 
     
    760766            - call the good fonction to get data from database 
    761767        """ 
    762         print "Call rest_base_get" 
     768        self._log.debug("Process base request") 
    763769        # parameters initialisation 
    764770        self.parameters = {} 
     
    13281334        month = int(date[4:6]) 
    13291335        day = int(date[6:8]) 
    1330         my_date = datetime.date(year, month, day) 
     1336        try: 
     1337            my_date = datetime.date(year, month, day) 
     1338        except: 
     1339            self.send_http_response_error(999, str(sys.exc_info()[1].replace('"', "'")), self.jsonp, self.jsonp_cb) 
    13311340        return my_date 
    13321341 
    13331342 
    13341343 
    1335  
     1344### TODO j'en suis ici pour les _log !! 
    13361345 
    13371346###### 
     
    23462355        self.parameters = {} 
    23472356 
     2357        ### auth ##################################### 
     2358        if self.rest_request[0] == "auth": 
     2359            if len(self.rest_request) == 3: 
     2360                self._rest_account_auth(self.rest_request[1], self.rest_request[2]) 
     2361            else: 
     2362                self.send_http_response_error(999, "Wrong syntax for " + self.rest_request[0], \ 
     2363                                                  self.jsonp, self.jsonp_cb) 
     2364                return 
     2365     
    23482366        ### user ##################################### 
    23492367        if self.rest_request[0] == "user": 
     
    23622380                        self.send_http_response_error(999, "Wrong syntax for " + self.rest_request[1], \ 
    23632381                                                  self.jsonp, self.jsonp_cb) 
    2364      
    2365      
    2366             ### auth 
    2367             elif self.rest_request[1] == "auth": 
    2368                 if len(self.rest_request) == 4: 
    2369                     self._rest_account_auth(self.rest_request[2], self.rest_request[3]) 
    2370                 else: 
    2371                     self.send_http_response_error(999, "Wrong syntax for " + self.rest_request[1], \ 
    2372                                                       self.jsonp, self.jsonp_cb) 
    2373                     return 
    23742382     
    23752383            ### add 
     
    23902398     
    23912399            ### password 
    2392             elif self.res2_request[1] == "password": 
     2400            elif self.rest_request[1] == "password": 
    23932401                offset = 2 
    23942402                if self.set_parameters(offset):