Open
Description
Currently, flask-shell2http works just like any other flask extension; you create an object from a class to which you pass the flask application instance. We could follow a different approach making it solely available as a pluggable Flask.Blueprint
.
Some initial ideas:
- The
Shell2HTTP
class could derive from theFlask.Blueprint
class; that way we can drop theinit_app
method, theregister_command
can be a wrapper over theFlask.Blueprint.add_url_rule
method (it already is, but it works onapp.add_url_rule
). Then, the enduser would do something like,
from flask_shell2http import Shell2HTTP
# default blueprint instantiation
shell2http_bp = Shell2HTTP('awesome', __name__, url_prefix='/commands')
# extra method by flask-shell2http
shell2http_bp.register_command(endpoint="echo", command_name="echo", ...)
and then in the application factory,
app = Flask(__name__)
app.register_blueprint(shell2http_bp)
This would open doors for many other features since Flask.Flask
and Flask.Blueprint
derive from the same abstract base class and flask blueprints are very powerful.