Skip to content
Snippets Groups Projects
Commit 1512c02b authored by jkerdreu's avatar jkerdreu
Browse files

Switch to rapidjson to avoid uuid=>json issues.

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2318 b32b6428-25c9-4566-ad07-03861ab6144f
parent 02e18c16
No related branches found
No related tags found
No related merge requests found
......@@ -28,5 +28,6 @@ setup(
'bottle',
'gevent==1.4.0',
'gevent-websocket',
'python-rapidjson'
]
)
from gevent import monkey; monkey.patch_all()
from xaal.lib import tools,Engine,Device,helpers
from xaal.lib import tools,Engine,Device,UUID,helpers
from xaal.monitor import Monitor
from bottle import default_app,debug,get,request,response,redirect,static_file
import json
import rapidjson
import os
import platform
import logging
......@@ -25,7 +25,6 @@ logger = logging.getLogger(PACKAGE_NAME)
# we use this global variable to share data with greenlet
monitor = None
def monitor_filter(msg):
""" Filter incomming messages. Return False if you don't want to use this device"""
if msg.devtype in BLACK_LIST:
......@@ -44,7 +43,7 @@ def setup_xaal():
cfg['config']['db_server'] = ''
cfg.write()
dev = Device("hmi.basic")
dev.address = tools.get_address(cfg['config']['addr'])
dev.address = tools.parse_uuid(cfg['config']['addr'])
dev.vendor_id = "IHSEV"
dev.product_id = "REST API"
dev.version = 0.1
......@@ -64,6 +63,8 @@ def xaal_loop(engine):
while 1:
engine.loop()
def json_encode(obj):
return rapidjson.dumps(obj,uuid_mode=rapidjson.UM_CANONICAL,indent=4)
@get('/static/<filename:path>')
def send_static(filename):
......@@ -81,29 +82,26 @@ def list_devices():
""" Return the list of devices in JSON"""
l = []
for dev in monitor.devices:
h = {'address':dev.str_address,'devtype':dev.devtype}
h = {'address':dev.address,'devtype':dev.devtype}
l.append(h)
response.headers['Content-Type'] = 'application/json'
return json.dumps(l,indent=4)
return json_encode(l)
@get('/devices/<addr>')
def get_device(addr):
""" Return the full description of a device """
uid = tools.get_address(addr)
uid = tools.parse_uuid(addr)
dev=monitor.devices.get_with_addr(uid)
response.headers['Content-Type'] = 'application/json'
if dev:
res = {'address':dev.str_address,'devtype':dev.devtype}
res = {'address':dev.address,'devtype':dev.devtype}
res.update({'attributes':dev.attributes})
res.update({'description':dev.description})
res.update({'metadata':dev.db})
else:
res = {'error':{'code':404,'message':'Unknow device'}}
response.status=404
return json.dumps(res,indent=4)
return json_encode(res)
@get('/devices/<addr>/<action>')
def send_request(addr,action):
......@@ -111,18 +109,16 @@ def send_request(addr,action):
body = {}
for k in request.query.keys():
body.update({k:request.query[k]})
uid = tools.get_address(addr)
uid = tools.parse_uuid(addr)
dev=monitor.devices.get_with_addr(uid)
response.headers['Content-Type'] = 'application/json'
if dev:
monitor.engine.send_request(monitor.dev,[uid,],action,body)
res = {'address':dev.str_address}
res = {'address':dev.address}
else:
res = {'error':{'code':404,'message':'Unknow device'}}
response.status=404
return json.dumps(res,indent=4)
return json_encode(res)
def run():
""" start the xAAL stack & launch the HTTP stuff"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment