from __future__ import unicode_literals

import json

from .common import TokenGenerator


class NFLTokenGenerator(TokenGenerator):
    _AUTHORIZATION = None

    def generate(ie, anvack, mcp_id):
        if not NFLTokenGenerator._AUTHORIZATION:
            reroute = ie._download_json(
                'https://api.nfl.com/v1/reroute', mcp_id,
                data=b'grant_type=client_credentials',
                headers={'X-Domain-Id': 100})
            NFLTokenGenerator._AUTHORIZATION = '%s %s' % (reroute.get('token_type') or 'Bearer', reroute['access_token'])
        return ie._download_json(
            'https://api.nfl.com/v3/shield/', mcp_id, data=json.dumps({
                'query': '''{
  viewer {
    mediaToken(anvack: "%s", id: %s) {
      token
    }
  }
}''' % (anvack, mcp_id),
            }).encode(), headers={
                'Authorization': NFLTokenGenerator._AUTHORIZATION,
                'Content-Type': 'application/json',
            })['data']['viewer']['mediaToken']['token']
