import time
from random import randint

import requests
from flask import Flask, jsonify, request
from opentracing.ext import tags
from opentracing.propagation import Format
from opentracing_instrumentation.request_context import (get_current_span,
                                                         span_in_context)

from simplebank.chassis import init_logger, init_statsd, init_tracer

app = Flask(__name__)
tracer = init_tracer('simplebank-settings')
statsd = init_statsd('simplebank.settings', 'statsd')
logger = init_logger()


@app.route('/settings/<uuid:uuid>')
@statsd.timer('settings')
def settings(uuid):
    logger.info("fetching user settings", extra={"uuid": uuid})
    span_ctx = tracer.extract(Format.HTTP_HEADERS, request.headers)
    span_tags = {tags.SPAN_KIND: tags.SPAN_KIND_RPC_SERVER, 'uuid': uuid}

    with tracer.start_span('settings', child_of=span_ctx, tags=span_tags):
        time.sleep(randint(0, 2))
        return jsonify({'settings': {'name': 'demo user', 'uuid': uuid}})


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)