+LOG = logging.getLogger(__name__)
+LOG.setLevel(logging.DEBUG)
+
+
+class ApiResource(Resource):
+
+ def _post_args(self):
+ data = request.json if request.json else {}
+ params = common_utils.translate_to_str(data)
+ action = params.get('action', request.form.get('action', ''))
+ args = params.get('args', {})
+
+ try:
+ args['file'] = request.files['file']
+ except KeyError:
+ pass
+
+ args.update({k: v for k, v in request.form.items()})
+
+ return action, args
+
+ def _get_args(self):
+ args = common_utils.translate_to_str(request.args)
+
+ return args
+
+ def _dispatch_post(self, **kwargs):
+ action, args = self._post_args()
+ args.update(kwargs)
+ return self._dispatch(args, action)
+
+ def _dispatch(self, args, action):
+ try:
+ return getattr(self, action)(args)
+ except AttributeError:
+ common_utils.result_handler(consts.API_ERROR, 'No such action')
+
+
+class Url(object):
+
+ def __init__(self, url, target):
+ super(Url, self).__init__()
+ self.url = url
+ self.target = target
+
+common_utils.import_modules_from_package("api.resources")