const axios = require('axios').default
const argv = require('process').argv

const { obterListaDeVersoesParaApresentacao } = require('../../ordenacaoVersoes')

const URL_LISTAGEM = 'https://gitlab.microuniverso.com.br/api/v4/projects/33/registry/repositories/4/tags'

async function obterNumeroPaginas(token) {
    const resposta = await axios.get(URL_LISTAGEM, {
        headers: {
            'PRIVATE-TOKEN': token
        }
    })

    return resposta.headers['x-total-pages']
}

async function listarPorPagina(pagina, token) {
    const resposta = await axios.get(`${URL_LISTAGEM}?page=${pagina}`, {
        headers: {
            'PRIVATE-TOKEN': token
        }
    })

    return resposta.data
}

async function main() {
    const token = argv.length >= 3 ? argv[2] : null

    if (token == null) {
        console.error('token nao informado')
        return
    }

    const numeroPaginas = await obterNumeroPaginas(token)

    let listaImagensETags = []

    for (let pagina = 1 ; pagina <= numeroPaginas ; pagina++) {
        listaImagensETags = [
            ...listaImagensETags,
            ...(await listarPorPagina(pagina,token))
        ]
    }

    return obterListaDeVersoesParaApresentacao(listaImagensETags)
}

main().then(lista => {
    if (lista != null) {
        console.log(lista)
    }
})
