Пример #1
0
def create_backend_app(service):
    from werkzeug.routing import Map

    # Create the backend_app
    backend_app = Flask(__name__)
    backend_app.debug = True
    backend_app.service = service

    # Reset view functions to reset the app
    backend_app.view_functions = {}
    backend_app.url_map = Map()
    backend_app.url_map.converters['regex'] = RegexConverter
    backend = BACKENDS[service]
    for url_path, handler in backend.flask_paths.items():
        if handler.__name__ == 'dispatch':
            endpoint = '{0}.dispatch'.format(handler.__self__.__name__)
        else:
            endpoint = None

        if endpoint in backend_app.view_functions:
            # HACK: Sometimes we map the same view to multiple url_paths. Flask
            # requries us to have different names.
            endpoint += "2"

        backend_app.add_url_rule(
            url_path,
            endpoint=endpoint,
            methods=HTTP_METHODS,
            view_func=convert_flask_to_httpretty_response(handler),
        )

    backend_app.test_client_class = AWSTestHelper
    return backend_app
Пример #2
0
def create_backend_app(service):
    from werkzeug.routing import Map

    # Create the backend_app
    backend_app = Flask(__name__)
    backend_app.debug = True
    backend_app.service = service

    # Reset view functions to reset the app
    backend_app.view_functions = {}
    backend_app.url_map = Map()
    backend_app.url_map.converters['regex'] = RegexConverter
    backend = BACKENDS[service]
    for url_path, handler in backend.flask_paths.items():
        if handler.__name__ == 'dispatch':
            endpoint = '{0}.dispatch'.format(handler.__self__.__name__)
        else:
            endpoint = None

        if endpoint in backend_app.view_functions:
            # HACK: Sometimes we map the same view to multiple url_paths. Flask
            # requries us to have different names.
            endpoint += "2"

        backend_app.add_url_rule(
            url_path,
            endpoint=endpoint,
            methods=HTTP_METHODS,
            view_func=convert_flask_to_httpretty_response(handler),
            strict_slashes=False,
        )

    backend_app.test_client_class = AWSTestHelper
    return backend_app
Пример #3
0
def create_backend_app(service):
    from werkzeug.routing import Map

    current_file = os.path.abspath(__file__)
    current_dir = os.path.abspath(os.path.join(current_file, os.pardir))
    template_dir = os.path.join(current_dir, "templates")

    # Create the backend_app
    backend_app = Flask("moto", template_folder=template_dir)
    backend_app.debug = True
    backend_app.service = service
    CORS(backend_app)

    # Reset view functions to reset the app
    backend_app.view_functions = {}
    backend_app.url_map = Map()
    backend_app.url_map.converters["regex"] = RegexConverter

    backend_dict = backends.get_backend(service)
    if "us-east-1" in backend_dict:
        backend = backend_dict["us-east-1"]
    else:
        backend = backend_dict["global"]

    for url_path, handler in backend.flask_paths.items():
        view_func = convert_to_flask_response(handler)
        if handler.__name__ == "dispatch":
            endpoint = "{0}.dispatch".format(handler.__self__.__name__)
        else:
            endpoint = view_func.__name__

        original_endpoint = endpoint
        index = 2
        while endpoint in backend_app.view_functions:
            # HACK: Sometimes we map the same view to multiple url_paths. Flask
            # requires us to have different names.
            endpoint = original_endpoint + str(index)
            index += 1

        # Some services do not provide a URL path
        # I.e., boto3 sends a request to 'https://ingest.timestream.amazonaws.com'
        # Which means we have a empty url_path to catch this request - but Flask can't handle that
        if url_path:
            backend_app.add_url_rule(
                url_path,
                endpoint=endpoint,
                methods=HTTP_METHODS,
                view_func=view_func,
                strict_slashes=False,
            )

    backend_app.test_client_class = AWSTestHelper
    return backend_app
Пример #4
0
def create_backend_app(service):
    from werkzeug.routing import Map

    # Create the backend_app
    backend_app = Flask(__name__)
    backend_app.debug = True
    backend_app.service = service
    CORS(backend_app)

    # Reset view functions to reset the app
    backend_app.view_functions = {}
    backend_app.url_map = Map()
    backend_app.url_map.converters["regex"] = RegexConverter
    backend = list(backends.get_backend(service).values())[0]
    for url_path, handler in backend.flask_paths.items():
        view_func = convert_flask_to_httpretty_response(handler)
        if handler.__name__ == "dispatch":
            endpoint = "{0}.dispatch".format(handler.__self__.__name__)
        else:
            endpoint = view_func.__name__

        original_endpoint = endpoint
        index = 2
        while endpoint in backend_app.view_functions:
            # HACK: Sometimes we map the same view to multiple url_paths. Flask
            # requires us to have different names.
            endpoint = original_endpoint + str(index)
            index += 1

        backend_app.add_url_rule(
            url_path,
            endpoint=endpoint,
            methods=HTTP_METHODS,
            view_func=view_func,
            strict_slashes=False,
        )

    backend_app.test_client_class = AWSTestHelper
    return backend_app
Пример #5
0
import psycopg2
from flask import Flask, render_template, redirect, flash, session
import requests
from flask.ext.wtf import Form
from wtforms import StringField, PasswordField
import riotwatcher
import atexit


app = Flask(__name__)
app.secret_key = "A0Zr98j/3yX R~XHH!jmN]LWX/,?RT"
app.service = "http://127.0.0.1:5001/api/"
key = "1dbf97cc-5028-4196-a05c-6645adc80bef"
w = riotwatcher.RiotWatcher(key)


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/sign-out")
def sign_out():
    if "username" in session:
        del session["username"]
    return redirect("/")


@app.route("/sign-up", methods=["GET", "POST"])
def sign_up():
    class SignUpForm(Form):
Пример #6
0
def create_app(service):
    app = Flask(__name__)
    app.service = service

    @app.route("/register", methods=['POST'])
    def register():
        try:
            record = request.get_json()
            first_name = record['first_name']
            last_name = record['last_name']
            email = record['email']
            password = record['password']
            app.service.register(email, password, first_name, last_name)
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500
        return "", 200

    @app.route("/login", methods=['POST'])
    def login():
        try:
            record = request.get_json()
            email = record['email']
            password = record['password']
            token = app.service.login(email, password)
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500
        return jsonify({"token": token}), 200

    @app.route("/template", methods=['POST'])
    def insert():
        try:
            token = get_token(request)
            record = request.get_json()
            template_name = record['template_name']
            subject = record['subject']
            body = record['body']
            x = app.service.insert(token, template_name, subject, body)
            return {'template_id': x}, 200
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/template/<template_id>", methods=['GET'])
    def get(template_id):
        try:
            token = get_token(request)
            x = app.service.get(template_id, token)
            return jsonify(x), 200
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/template", methods=['GET'])
    def get_all():
        try:
            token = get_token(request)
            temp = app.service.get_all(token)
            return jsonify(temp), 200
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/template/<template_id>", methods=['PUT'])
    def update(template_id):
        try:
            token = get_token(request)
            record = request.get_json()
            template_name = record['template_name']
            subject = record['subject']
            body = record['body']
            app.service.update(token, template_name, subject, body,
                               template_id)
            return "", 200
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/template/<template_id>", methods=['DELETE'])
    def delete(template_id):
        try:
            token = get_token(request)
            app.service.delete(token, template_id)
            return "", 200
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    def get_token(request_):
        authorization_value = request_.headers.get('Authorization')
        token = authorization_value[7:]
        return token

    return app
Пример #7
0
import psycopg2
from flask import Flask, render_template, redirect, flash, session
import requests
from flask.ext.wtf import Form
from wtforms import StringField, PasswordField
import riotwatcher
import atexit

app = Flask(__name__)
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
app.service = 'http://127.0.0.1:5001/api/'
key = '1dbf97cc-5028-4196-a05c-6645adc80bef'
w = riotwatcher.RiotWatcher(key)


@app.route('/')
def index():
    return render_template("index.html")


@app.route('/sign-out')
def sign_out():
    if 'username' in session:
        del session['username']
    return redirect('/')


@app.route('/sign-up', methods=['GET', 'POST'])
def sign_up():
    class SignUpForm(Form):
        email = StringField()
Пример #8
0
def create_app(service):
    app = Flask(__name__)
    app.service = service

    @app.route("/<string:audio_file_type>/<int:audio_file_id>",
               methods=['PUT'])
    def updated_audio_file(audio_file_type, audio_file_id):
        try:
            app.service.update_audio_file(audio_file_type, audio_file_id,
                                          request.get_json())
            return ""
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/<string:audio_file_type>/<int:audio_file_id>",
               methods=['POST'])
    def create_audio_file(audio_file_type, audio_file_id):
        try:
            app.service.add_audio_file(audio_file_type, audio_file_id,
                                       request.get_json())
            return ""
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/<string:audio_file_type>/<int:audio_file_id>",
               methods=['GET'])
    def get_audio_file(audio_file_type, audio_file_id):
        try:
            x = app.service.get_file(audio_file_type, audio_file_id)
            return x
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/<string:audio_file_type>/<int:audio_file_id>",
               methods=['DELETE'])
    def delete_audio_file(audio_file_type, audio_file_id):
        try:
            app.service.delete_file(audio_file_type, audio_file_id)
            return ""
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    @app.route("/<string:audio_file_type>", methods=['GET'])
    def get_audio_files(audio_file_type):
        try:
            x = app.service.get_files(audio_file_type)
            return jsonify(x)
        except UserInputError as error:
            return error.args[0], 400
        except Exception as error:
            return error.args[0], 500

    return app