from flask import Blueprint, request, jsonify, abort, Response

from app.processor.impliedvolatility.ImpliedVolatilityProcessor import ImpliedVolatilityProcessor

from app.resource.CustomerJSONEncoder import *
from app.resource.ResourceConstant import ResourceConstant
from app.resource.ResultWrapper import *
from app.resource.ResponseBuilder import *

mod = Blueprint('impliedvolatility', __name__, url_prefix=ResourceConstant.IMPLIED_VOLATILITY)

@mod.route(ResourceConstant.CALCULATOR_CALC, methods=['POST'])
def get():
    parameters = request.get_json(force=True)

    ticker = parameters["ticker"]
    quoteDate = parameters["quoteDate"]

    #userId = request.headers.get('token')
    #if userId is None or userId != "system":
    #    abort
        
    try:
        recordCount = ImpliedVolatilityProcessor.calculate(ticker, quoteDate)
        resultWrapper = ResultWrapper(str(recordCount) + " recorders saved.")
    except Exception as e:
        parameters = {
                      "content": [],
                      "state": "false",
                      "logMessage": str(e)
                  }
        resultWrapper = ResultWrapper(**parameters)
        
    return ResponseBuilder.build(resultWrapper)
    