75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
#!/usr/bin/python
|
|
# Provides all the API functionality callable through "/api"
|
|
|
|
from flask import request
|
|
from flaskext.auth import login_required
|
|
import json, os, sys
|
|
import security, charts, plugins, webconfig, domoticz
|
|
|
|
apiDict = {}
|
|
modules = {}
|
|
|
|
def init():
|
|
global modules
|
|
modules = plugins.loadPlugins()
|
|
return
|
|
|
|
def addToApi(custom, module, function):
|
|
apiDict[custom] = [module, function]
|
|
|
|
@login_required()
|
|
def gateway():
|
|
requestedUrl = request.url.split("/api")
|
|
custom = request.args.get('custom', '')
|
|
if custom == "bar_chart":
|
|
result = charts.barChart()
|
|
elif custom == "donut_chart":
|
|
result = charts.donutChart()
|
|
elif custom == "modify_config":
|
|
idx = request.args.get('idx', '')
|
|
page = request.args.get('page', '')
|
|
component = request.args.get('component', '')
|
|
description = request.args.get('description', '')
|
|
extra = request.args.get('extra', '')
|
|
webconfig.writeToConfig(idx, page, component, description, extra)
|
|
elif custom == 'indexPlugins':
|
|
result = json.dumps(plugins.indexPlugins(request.args))
|
|
elif custom == "performUpgrade":
|
|
result = json.dumps(webconfig.performUpgrade())
|
|
elif custom in apiDict:
|
|
module = apiDict.get(custom)[0]
|
|
function = apiDict.get(custom)[1]
|
|
call = getattr(modules[module], function)
|
|
result = call(request.args)
|
|
else:
|
|
result = domoticz.queryDomoticz(requestedUrl[1])
|
|
try:
|
|
if not isJson(result):
|
|
result = json.dumps(result)
|
|
return security.sanitizeJSON(json.loads(result))
|
|
except:
|
|
return "No results returned"
|
|
|
|
def setConfig(cfg, orig_cfg):
|
|
global config
|
|
global originalCfg
|
|
config = cfg
|
|
originalCfg = orig_cfg
|
|
|
|
def setModules(modulesList):
|
|
global modules
|
|
modules = modulesList
|
|
|
|
def getConfig():
|
|
return config
|
|
|
|
def getOriginalConfig():
|
|
return originalCfg
|
|
|
|
def isJson(myjson):
|
|
try:
|
|
json_object = json.loads(str(myjson))
|
|
except ValueError, e:
|
|
return False
|
|
return True
|