import json from flask import Blueprint, abort, request, Response from platypush.backend.http.app import template_folder from platypush.backend.http.app.utils import authenticate, authentication_ok, \ logger, send_message from platypush.backend.http.utils import HttpUtils execute = Blueprint('execute', __name__, template_folder=template_folder) # Declare routes list __routes__ = [ execute, ] @execute.route('/execute', methods=['POST']) def execute(): """ Endpoint to execute commands """ if not authentication_ok(request): return authenticate() try: msg = json.loads(request.data.decode('utf-8')) except Exception as e: logger().error('Unable to parse JSON from request {}: {}'.format( request.data, str(e))) abort(400, str(e)) logger().info('Received message on the HTTP backend: {}'.format(msg)) try: response = send_message(msg) return Response(str(response or {}), mimetype='application/json') except Exception as e: logger().error('Error while running HTTP action: {}. Request: {}'. format(str(e), msg)) abort(500, str(e)) # vim:sw=4:ts=4:et: