import binascii
import requests

from decouple import config
from pyotp import TOTP


def check_otp(name, realm, seed):
    try:
        data = {
            "auth_name": config('AUTH_NAME', ''),
            "auth_token": TOTP(config('AUTH_SEED', '')).now(),
            "auth_realm": config('AUTH_REALM', ''),
            "name": name,
            "realm": realm,
            "token": TOTP(seed).now()
        }
    except binascii.Error:
        return 400

    response = requests.post(
        "{OTP_SERVER}{OTP_VERIFY_ENDPOINT}".format(
            OTP_SERVER=config('OTP_SERVER', ''),
            OTP_VERIFY_ENDPOINT=config('OTP_VERIFY_ENDPOINT', 'verify/')
        ),
        data=data
    )
    return response.status_code