Files
fn_registry/functions/infra/http_download_file.md
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

1.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
http_download_file function go infra 1.0.0 impure func HttpDownloadFile(url, destPath string, headers map[string]string, timeout time.Duration) (int64, error) Descarga url en destPath en streaming con io.Copy. Crea directorios con os.MkdirAll. Usa archivo temporal + rename para atomicidad (no deja archivo corrupto si falla). Retorna bytes escritos.
http
download
file
streaming
atomic
network
stdlib
infra
pendiente-usar
extractor
false error_go_core
fmt
io
net/http
os
path/filepath
time
name desc
url URL del archivo a descargar
name desc
destPath ruta de destino del archivo descargado
name desc
headers mapa de headers custom a incluir en la solicitud
name desc
timeout duracion maxima para completar la descarga
numero de bytes descargados exitosamente true
httptest.Server sirve archivo binario
Directorio creado automaticamente
Archivo temporal + rename (no deja basura si falla)
Size retornado coincide
functions/infra/http_download_file_test.go functions/infra/http_download_file.go

Ejemplo

n, err := HttpDownloadFile(
    "https://example.com/report.pdf",
    "/tmp/reports/report.pdf",
    nil,
    2*time.Minute,
)
if err != nil {
    return err
}
fmt.Printf("Downloaded %d bytes\n", n)

Notas

Solo usa stdlib. El archivo temporal se crea en el mismo directorio que destPath para que el rename sea atomico (mismo filesystem). Si la descarga falla, el archivo temporal se elimina con os.Remove (el defer lo garantiza). Compatible con archivos de cualquier tamano ya que usa streaming con io.Copy.