get https://api.finbits.com.br/public/attachments//download
Essa rota realiza o download de um anexo (attachment) associado a um lançamento.
Por padrão o endpoint redireciona para uma url assinada do S3, executando o download do arquivo.
Exemplo de código em JavaScript:
axios.get(`https://api.finbits.com.br/public/attachments/${attachmentId}/download`, {
headers: {
'authorization': `Bearer ${token}`
},
responseType: 'arraybuffer'
})
.then(function(response) {
fs.writeFileSync('final.pdf', response.data);
})
Streaming
Caso o query param ?stream=true
esteja presente o download é feito em chunks, ou seja, os dados são enviados em partes, não em um bloco único. O cliente deverá processar cada parte conforme recebida.
Exemplo de código em JavaScript:
async function downloadFile() {
const response = await axios.get(`https://api.finbits.com.br/public/attachments/${attachmentId}/download`, {
headers: { 'authorization': `Bearer ${token}` },
responseType: 'stream', // muda para stream
});
// write stream
const writer = fs.createWriteStream('arquivo.pdf');// Encaminha os dados do stream de resposta para o stream de gravação
response.data.pipe(writer);
return new Promise((resolve, reject) => {
writer.on('finish', resolve); // Quando o download e gravação terminarem
writer.on('error', reject); // Caso ocorra algum erro
});
}