Docs / SDK / Go / Imágenes

Go — módulo Imágenes

Paquete github.com/webability/webability-go/image. Envuelve la API de Imágenes (/v1/image/*): subida, procesamiento bajo demanda y purga de caché.

Importar y crear el objeto

import (
    "github.com/webability/webability-go/wa"
    "github.com/webability/webability-go/image"
)

api := wa.New("tu-client-id", "tu-token-secreto")
img := image.New(api)

Get(path string)

GET /v1/image/{path}/{WxH}/{file.ext} — obtiene (y procesa) una imagen. Devuelve la respuesta cruda: el binario en Body y el tipo en el header Content-Type.

resp, err := img.Get("productos/800x600/zapatilla.jpg.webp")
if err != nil {
    log.Fatal(err)
}
fmt.Println(resp.Header.Get("Content-Type")) // image/webp
os.WriteFile("zapatilla.webp", resp.Body, 0644)

Upload(path, filename string, file io.Reader)

POST /v1/image/{path} — sube una imagen original (multipart/form-data). Purga automáticamente las versiones cacheadas.

f, err := os.Open("zapatilla.jpg")
if err != nil {
    log.Fatal(err)
}
defer f.Close()

out, err := img.Upload("productos/zapatilla.jpg", "zapatilla.jpg", f)
if err != nil {
    log.Fatal(err)
}
fmt.Println(out.Path, out.Size, "bytes,", out.CachePurged, "versiones purgadas")

Delete(path string)

DELETE /v1/image/{path} — elimina el original y todas sus versiones cacheadas. Si path termina en "/", elimina la carpeta completa.

del, err := img.Delete("productos/zapatilla.jpg")
if err != nil {
    log.Fatal(err)
}
fmt.Println("eliminados:", del.Total)

PurgeCache()

DELETE /v1/image — purga toda la caché de versiones procesadas (secondcache); los originales se conservan.

del, err := img.PurgeCache()
if err != nil {
    log.Fatal(err)
}
fmt.Println("purgados:", del.DeletedSecondcache)

Referencia completa de la API HTTP (headers, códigos de error, formato de respuesta): /documentacion/imagenes.