Saltar al contenido principal
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Listado de archivos de un directorio

api.GetApplicationFiles(appID, path) devuelve las entradas de un directorio como un []squarecloud.FileInfo. Una ruta vacía lista la raíz de la aplicación.
entries, err := api.GetApplicationFiles("abc123def456abc123def456", "")
if err != nil {
	panic(err)
}

for _, entry := range entries {
	fmt.Println(entry.Type, entry.Name, entry.Size, entry.LastModified)
}
CampoTipoDescripción
Typestring"file" o "directory"
NamestringNombre de la entrada
SizeintTamaño en bytes — siempre 0 para directorios
LastModifiedint64Última modificación en milisegundos Unix

Lectura de un archivo

api.ReadApplicationFile(appID, path) devuelve un squarecloud.FileContent con los bytes del archivo.
content, err := api.ReadApplicationFile("abc123def456abc123def456", "main.go")
if err != nil {
	panic(err)
}

fmt.Println(string(content.Data))
La API devuelve el contenido como un objeto Buffer al estilo de Node.js ({"type": "Buffer", "data": [...]}). El SDK lo decodifica por ti — content.Data es un []byte normal (el tipo ByteArray), listo para usar.

Creación o sobrescritura de un archivo

api.PutApplicationFile(appID, path, content) escribe content en path, creando el archivo si no existe o sobrescribiéndolo si existe. Devuelve un squarecloud.FileWritten.
written, err := api.PutApplicationFile(
	"abc123def456abc123def456",
	"config/settings.json",
	[]byte(`{"debug": false}`),
)
if err != nil {
	panic(err)
}

fmt.Println(written.Written) // true
El contenido se envía a la API como un string UTF-8 — las subidas de archivos binarios aún no están soportadas. Para enviar archivos binarios, usa un commit en su lugar.

Mover o renombrar un archivo

api.MoveApplicationFile(appID, path, to) mueve o renombra un archivo.
err := api.MoveApplicationFile("abc123def456abc123def456", "main.go", "src/main.go")
if err != nil {
	panic(err)
}

Eliminación de un archivo o directorio

Eliminar un directorio elimina todo lo que contiene. No hay forma de recuperar los archivos eliminados a menos que tengas un snapshot.
err := api.DeleteApplicationFile("abc123def456abc123def456", "src/old.go")
if err != nil {
	panic(err)
}