Todas as coleções
Triggers
HTTP File Trigger - Downloads
HTTP File Trigger - Downloads

Conheça o trigger e saiba como utilizá-lo.

Rodrigo Lara avatar
Escrito por Rodrigo Lara
Atualizado há mais de uma semana

O HTTP File Trigger baixa arquivos grandes de forma robusta e eficiente, chamando o método GET.

Dê uma olhada nos parâmetros de configuração do trigger:

  • Methods: define os métodos aceitos pelo pipeline (GET, PUT, POST, PATCH e DELETE).

  • Response Headers: headers a serem retornados pelo endpoint quando o processamento no pipeline terminar. Esse parâmetro não pode ser deixado vazio e aceita Double Braces. Caracteres especiais não devem ser utilizados nas chaves, por conta de possíveis falhas em proxys e gateways.

  • Add Cross-Origin Resource Sharing (CORS) - CORS Headers: adicione os CORS headers a serem retornados pelo endpoint quando o processamento no pipeline terminar. O Cross-Origin Resource Sharing (CORS) é um mecanismo que permite informar ao navegador quais origens tem a permissão para fazer requisições. Este parâmetro define o CORS especificamente ao pipeline e suas restrições. Para configurar de forma global ao invés de individualmente em cada pipeline consulte o artigo CORS Global .


    Importante: Utilizamos vírgula para informar múltiplos valores em um header, mas não adicionamos espaço antes ou após a vírgula. Caracteres especiais não devem ser utilizados nas chaves, por conta de possíveis falhas em proxys e gateways.


  • Form Data Uploads: habilita/desabilita o recebimento do upload de form data (multi-part form data).

  • Body Uploads: habilita/desabilita o recebimento do upload de bodies.

  • Body Upload Content Types: define os content types permitidos pelo pipeline para o upload de bodies.

  • Response Content Types: define os content types de resposta permitidos para o pipeline - ao configurar essa resposta, você determina o formato de resposta.

  • Maximum Timeout: define o tempo máximo de expiração (padrão = 60000).

  • Maximum Request Size: define o tamanho máximo do arquivo na solicitação de upload (em MB) (máximo = 100 MB).

  • External API: se ativada, a opção publica o API em um gateway externo.

  • Internal API: se ativada, a opção publica o API em um gateway interno.

  • mTLS enabled API: se a opção estiver ativada, a API é publicada em um gateway dedicado a APIs com mTLS ativo por padrão. Nesse caso, o host de acesso será diferente dos demais. O pipeline pode ter tanto a opção de External API quanto a Internal API habilitadas simultaneamente, mas é recomendado deixá-las inativas. Este parâmetro não suporta API Key e JWT. Para utilizá-lo no seu realm, é necessário fazer uma solicitação via chat e assim enviaremos as informações necessárias para instalação deste serviço

  • API Key: se ativada, a opção vai solicitar a chave para consumo do API.

  • Token JWT: se ativada, a opção vai solicitar o token para consumo do API

  • Additional API Routes: se ativada, a opção permite que você adicione novas rotas.

  • API Routes: rotas customizáveis.

  • Security (Legacy): se ativada, a opção determina a necessidade de uso de um token JWT para acessar a API exposta.

  • Allow Redelivery Of Messages: se ativada, a opção permite que as mensagens sejam entregues novamente caso o Pipeline Engine falhe.

HTTP File Trigger em Ação

Cenário: GET com qualquer content type

Digamos que você tenha um arquivo com mais de 5MB. Você pode chamar um endpoint de pipeline configurado com HTTP Trigger via GET com qualquer content type para que a requisição seja recebida e tratada. O arquivo é devolvido de acordo com o content type de saída e o seu conteúdo "as-is".

Para que isso aconteça, basta você seguir estes passos:

  1. Crie um pipeline e configure seu trigger como HTTP-File, incluindo o método GET e os Response Content Types aceitos.

  2. Insira um File Connector no pipeline para buscar o arquivo a ser disponibilizado. Você pode, por exemplo, configurar o WGet para obter um arquivo de uma URL passada ao endpoint durante a chamada.

  3. Insira o JSON Generator Connector como o último passo do seu pipeline para que seja gerado um JSON no seguinte formato:

{
 "file": "file-download.pdf",
 "Content-Type": "application/pdf"
}


IMPORTANTE: esse passo é fundamental para que o HTTP File Trigger entenda que o arquivo serve.


4. Implante o pipeline.

5. Crie uma API Key e o configure de modo que tenha acesso ao pipeline.

6. Chame o pipeline através deste curl:

curl https://godigibee.io/pipeline/realm_name/v1/pipeline_name -v -H 'Content-Type: application/pdf' -H 'apikey: generated_token' -H 'urlDownload: http://url/path'

  • realm_name: se refere ao Realm onde o pipeline se encontra

  • generated_token: se refere à chave de API gerada pela API Key recém-criada

  • urlDownload: parâmetro passado para o WGet Connector resolver o valor do campo URL. O atributo não é obrigatório, mas permite uma abordagem mais flexível através de Double Braces. Funciona perfeitamente se você definir o "path" diretamente no WGet Connector.

Resposta do HTTP File Trigger

É simples definir o formato da resposta do pipeline. Adicione um Transformer ao final do pipeline e defina a resposta:

{
"file": "file-download.pdf",
"code": 200,
"Content-Type": "application/pdf"
}


IMPORTANTE: Content-Type precisa ser um dos valores definidos em Response Content Types.


O HTTP File Trigger responde bodies que não sejam arquivos da mesma forma que o HTTP Trigger faz. Isso permite que o pipeline responda com o arquivo ou com alguma outra de acordo com o contexto da invocação. Para que o HTTP File Trigger responda com um body qualquer, basta que o último passo do pipeline tenha a seguinte estrutura:

{
 "body": "informação que será escrita na saída do endpoint",
 "Content-Type": "qual o tipo de conteúdo do body",
 "code": <um código de retorno HTTP>
}


IMPORTANTE: Content-Type precisa ser um dos valores definidos em Response Content Types.



Respondeu à sua pergunta?