Функції файлів
Функції для роботи з файлами через HTTP.
| Функція | Опис | Вхід → Вихід |
|---|---|---|
| Download | Отримати текстовий ресурс через HTTP/HTTPS | url, headers → file, contentType, statusCode |
Download
Завантажує віддалений ресурс і повертає його тіло як текст. Блок призначений для текстових даних — JSON, простий текст, webhook-контент, XML.
| Вхід | Обов'язково | Опис |
|---|---|---|
| url | так | Повний URL з http:// або https:// |
| headers | ні | JSON-об'єкт заголовків запиту |
| Вихід | Тип | Опис |
|---|---|---|
| file | string | Тіло відповіді, декодоване як UTF-8 |
| contentType | string | Заголовок Content-Type від сервера |
| statusCode | number | HTTP-код відповіді |
Обмеження безпеки
Щоб один потік не зупинив воркер, дія застосовує жорсткі обмеження:
| Обмеження | Значення | Що відбувається при перевищенні |
|---|---|---|
| Розмір відповіді | 10 МіБ | Блок завершується помилкою Response too large … |
| Загальний час | 30 секунд | Блок завершується помилкою Download timed out after 30000 ms |
| Цільовий хост | приватні/зарезервовані IP заблоковано | Блок завершується помилкою … not allowed |
Обмеження розміру застосовується двома способами:
- Якщо сервер надсилає заголовок
Content-Lengthбільший за 10 МіБ, запит відхиляється негайно (тіло не читається). - Інакше тіло читається поступово; читання припиняється, як тільки накопичений обсяг перевищить ліміт.
Фільтр хостів відхиляє будь-який URL, чий хост резолвиться у приватну, link-local, loopback, CGNAT/Tailscale адресу або в IP cloud-metadata. Це не дає потокам зондувати внутрішню інфраструктуру (SSRF).
Обмеження
- Тільки текст. Бінарні файли (зображення, PDF, архіви) повертаються як спотворений UTF-8 — їх не варто використовувати. Безпечне для бінарних даних завантаження в дорожній карті (
Upload, наразі заглушено). - Без повторних спроб. Тимчасова 5xx-помилка або таймаут повертає ERROR; з'єднайте блок із Branch та Retry After, якщо вашому потоку потрібні повторні спроби.
Приклад
Завантажити JSON webhook-payload:
| Вхід | Значення |
|---|---|
| url | https://api.example.com/webhook/abc123 |
| headers | { "Authorization": "Bearer …" } |
Виходи:
file→{"event":"...","data":{...}}contentType→application/jsonstatusCode→200
Використайте JSON → Parse на file, щоб витягти поля.