Source code for flexget.components.variables.api

from flask import jsonify, request
from loguru import logger

from flexget.api import APIResource, api
from flexget.api.app import empty_response, etag
from flexget.components.variables.variables import variables_from_db, variables_to_db

logger = logger.bind(name='variables')

variables_api = api.namespace('variables', description='View and edit config variables')


[docs] @variables_api.route('/') class VariablesAPI(APIResource):
[docs] @etag @api.response(200, model=empty_response) def get(self, session=None): """Get variables data from DB.""" return jsonify(variables_from_db())
[docs] @api.response(201, 'Successfully updated variables file') @api.validate(empty_response) @api.doc( description='Note that editing variables may not be persistent, depending on user config' ) def put(self, session=None): """Store variables data to DB.""" data = request.json variables_to_db(data) # This will trigger reloading the variables file self.manager.validate_config() rsp = jsonify(variables_from_db()) rsp.status_code = 201 return rsp
[docs] @api.response(200, 'Successfully updated variables file') @api.validate(empty_response) @api.doc( description='Note that editing variables may not be persistent, depending on user config' ) def patch(self, session=None): """Update variables data to DB.""" data = request.json existing_variables = variables_from_db() existing_variables.update(data) variables_to_db(existing_variables) # This will trigger reloading the variables file self.manager.validate_config() return jsonify(variables_from_db())