var express = require('express');
var router = express.Router();
const fs = require('fs');

let DNSArray = require('../lib/DNSArray.json')
let streamArrays = require('../lib/streamArray.json')
const otherDNS = require('../lib/otherDNS.json')

const { gotRequest } = require('../lib/gotRequest')

function writeFile(streamArrays) {
  fs.writeFileSync(__dirname + '/../lib/streamArray.json', JSON.stringify(streamArrays), function (err) {
    if (err) return console.log(err);
  });
}

function splitToArray(DNS) {
  DNS = DNS.split(',')
  return DNS
}

function mapToStream(DNSList) {
  console.log('---Updated URLS---')
  DNSList.unshift(...otherDNS)
  for (let index = 0; index < streamArrays.length; index++) {
    let element = streamArrays[index];
    element.StreamURL = DNSList[index]
    console.log(element.StreamName + ' ' + element.StreamURL)
  }
  writeFile(streamArrays)
  console.log('---Updated URLS---')
  return streamArrays
}

async function getStreams() {
  let requestData
  let jointArray = []
  for (let index = 0; index < DNSArray.length; index++) {
    const url = DNSArray[index];
    requestData = await gotRequest(url)
    let DNSList = JSON.parse(requestData.body)
    DNSList = splitToArray(DNSList.su)
    DNSList.forEach(url => {
      jointArray.push(url)
    });
  }
  await mapToStream(jointArray)
  return streamArrays
}

async function getStreamsNew() {
  let requestData
  let jointArray = []
  for (let index = 0; index < DNSArray.length; index++) {
    const url = DNSArray[index];
    requestData = await gotRequest(url)
    let DNSList = JSON.parse(requestData.body)
    DNSList = splitToArray(DNSList.su)
    DNSList.forEach(url => {
      jointArray.push(url)
    });
  }
  return jointArray
}
/* GET users listing. */
router.get('/', async function (req, res, next) {
  let fullStreamArray = await main()
  res.send(fullStreamArray)
});

module.exports = {
  router, getStreams, getStreamsNew
}
  ;