# Cloudflare Worker

Puedes conectar un Worker de Clodflare a [WebHook de Dinaup](/integraciones/webhook.md)

Implementar un Worker de Cloudflare entre el webhook de Dinaup y el cliente es una práctica recomendada que aporta múltiples ventajas que optimizan el rendimiento, la seguridad y la gestión del flujo de datos. A continuación, se detallan los beneficios clave:

* **Reescritura de URLs:**\
  Permite transformar las direcciones URL para facilitar integraciones con plataformas como Make, Zapier y otras, haciendo más simples las conexiones entre diferentes servicios.
* **Protección del Endpoint.**\
  Actúa como una barrera extra que filtra y verifica las solicitudes, ayudando a evitar accesos no autorizados y posibles ataques.
* **Encolado con Cloudflare Queue:**\
  Organiza las solicitudes en una cola, lo que ayuda a gestionar mejor los picos de tráfico y evita que el sistema se sobrecargue.
* **Gestión Segura de Secretos:**\
  Cloudflare Workers permite almacenar tokens y credenciales en su sistema de secretos. Esto simplifica la gestión de información sensible, manteniendo las claves fuera del código y reduciendo riesgos de exposición.
* **Observabilidad y Monitoreo:**\
  Aprovechar la infraestructura de Cloudflare facilita la captura de métricas y logs en tiempo real. Esta visibilidad mejora la capacidad de diagnóstico y el análisis del rendimiento, permitiendo ajustes proactivos.
* **Caching para Acelerar las Llamadas:**\
  La posibilidad de implementar técnicas de cache, como configurar un `cacheTtl` y reescribir cabeceras, permite que las respuestas se sirvan rápidamente a solicitudes repetitivas. Esto reduce la latencia y descarga el backend, mejorando la experiencia del usuario.

## Ejemplo Caching

Este worker actúa como un proxy que realiza una solicitud POST. La respuesta se cachea durante 10 segundos tanto en Cloudflare como en el navegador.

```javascript
const apiUrl = "https://webhook.dinaup.com/api/reports?id=6f3d56a0-0a46-422f-b1dc-ee9cd433cc82&page=1&resultsPerPage=100&withFiles=false&safeColumnsName=false";

export default {
  async fetch(request, env, ctx) {
 
    const init = {
      method: "POST",
      headers: {
        "Authorization": "Bearer " + env.SECRET_TOKEN,
      },
      body: "",
    };

    // Ejecutar la llamada a la URL con opciones de caché: 10 segundos
    const newRequest = new Request(apiUrl, init);
    const response = await fetch(newRequest, {
      cf: {
        cacheTtl: 10,
        cacheEverything: true,
      }
    });

    // Ajustar las cabeceras para que el navegador también cachee la respuesta
    const newHeaders = new Headers(response.headers);
    newHeaders.set("Cache-Control", "public, max-age=10");
    newHeaders.delete("set-cookie");

    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: newHeaders,
    });
  }
};



```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.dinaup.com/integraciones/cloudflare-worker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
