const got = require('got')
const {CookieJar} = require('tough-cookie')
const {_md5} = require('./crypto.js')
const { USER_AGENT_HEADER } = require('./index.js')

const CLIENT_ID = "172365"
const CLIENT_SECRET = "fb0bec7ccc063dab0417eb7b0d847f34"

async function getAccessToken(email, password){
  let accessToken = null
  password = _md5(password, 'utf8')
  const hash = _md5([CLIENT_ID, email, password, CLIENT_SECRET].join(''), 'utf8')
  try {
    let response = await got.get("https://api.deezer.com/auth/token",{
      searchParams: {
        app_id: CLIENT_ID,
        login: email,
        password: password,
        hash
      },
      https: {rejectUnauthorized: false},
      headers: {"User-Agent": USER_AGENT_HEADER}
    }).json()
    accessToken = response.access_token
    if (accessToken == "undefined") accessToken = null
  } catch { /*empty*/ }
  return accessToken
}

async function getArlFromAccessToken(accessToken){
  if (!accessToken) return null
  let arl = null
  let cookieJar = new CookieJar()
  try {
    await got.get("https://api.deezer.com/platform/generic/track/3135556", {
      headers: {"Authorization": `Bearer ${accessToken}`, "User-Agent": USER_AGENT_HEADER},
      https: {rejectUnauthorized: false},
      cookieJar
    })
    let response = await got.get('https://www.deezer.com/ajax/gw-light.php?method=user.getArl&input=3&api_version=1.0&api_token=null', {
      headers: {"User-Agent": USER_AGENT_HEADER},
      https: {rejectUnauthorized: false},
      cookieJar
    }).json()
    arl = response.results
  } catch { /*empty*/ }
  return arl
}

module.exports = {
  getAccessToken,
  getArlFromAccessToken
}