Transformação

É possível aplicar transformações nas mensagens trafegadas no fluxo. Pode ser aplicada em qualquer tipo de configuração, inclusive com uma configuração de Processamento em Streaming.

No momento, as transformações funcionam apenas com payloads com Content-Type application/json.

Tipos

As seguintes transformações são aceitas:

HTTP

Permite que um endpoint HTTP externo seja consumido durante o processamento e atribui o resultado à mensagem.

Bloblang

Permite um mapeamento usando a sintaxe bloblang e atribui o resultado à mensagem.

Para realizar testes da sintaxe a ferramenta Bloblang Walkthrough pode ser utilizada.

Delete

Permite uma a sintaxe bloblang que retorne um valor booleano indicando se a mensagem deve ser excluída.

Parâmetros

Parâmetros aceitos na configuração de transformação:

Requisição

Para habilitar a transformação a seguinte requisição pode ser realizada:

curl --location '<HOST>/v1/configs' \
--header 'Content-Type: application/json' \
--header 'Authorization: <ACCESS-TOKEN>' \
--data '{
{
  "transformer": {
    "description": "TRANSFORMER-DESCRIPTION",
    "workflow": [
      [
        "http"
      ],
      [
        "bloblang"
      ],
      [
        "delete"
      ]
    ],
    "steps": [
      {
        "id": "http",
        "type": "HTTP",
        "ignore_error": false,
        "override": false,
        "http": {
          "url": "https://example.com",
          "verb": "GET",
          "headers": {
            "key": "value"
          },
          "timeout_seconds": 10,
          "ignore_error_codes": [
            1,
            2,
            3
          ],
          "body": {
            "mapping": "root = this"
          },
          "rate_limit": {
            "count": 100,
            "interval_seconds": 10
          },
          "basic_auth": {
            "user_id": "USERNAME",
            "password": "PASSWORD"
          },
          "oauth": {
            "consumer_key": "CONSUMER_KEY",
            "consumer_secret": "CONSUMER_SECRET",
            "access_token": "ACCESS_TOKEN",
            "access_token_secret": "ACCESS_TOKEN_SECRET"
          },
          "oauth2": {
            "client_key": "CLIENT_KEY",
            "client_secret": "CLIENT_SECRET",
            "token_url": "TOKEN_URL",
            "scopes": [
              "SCOPE"
            ],
            "endpoint_params": {
              "key": [
                "value"
              ]
            }
          }
        }
      },
      {
        "id": "bloblang",
        "type": "BLOBLANG",
        "ignore_error": false,
        "override": false,
        "bloblang": {
          "mapping": "root = this.http"
        }
      },
      {
        "id": "delete",
        "type": "DELETE",
        "ignore_error": false,
        "override": false,
        "delete": {
          "mapping": "root = this.bloblang == \"OK\""
        }
      }
    ]
  }
}
}'

No exemplo acima foi gerada uma configuração do Firehose que aplica 3 etapas de transformação de forma sequencial na mensagem.

A primeira etapa realiza uma requisição http e armazena o resultado no campo http. A segunda etapa recupera o resultado do campo adicionado pela etapa anterior e armazena o resultado no campo bloblang. A última etapa verifica se o valor do campo adicionado na etapa anterior é igual à OK, em caso positivo a mensagem será apagada.

Last updated