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