Zum Hauptinhalt springen
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Dateien eines Verzeichnisses auflisten

api.GetApplicationFiles(appID, path) gibt die Einträge eines Verzeichnisses als []squarecloud.FileInfo zurück. Ein leerer Pfad listet das Anwendungs-Root auf.
entries, err := api.GetApplicationFiles("abc123def456abc123def456", "")
if err != nil {
	panic(err)
}

for _, entry := range entries {
	fmt.Println(entry.Type, entry.Name, entry.Size, entry.LastModified)
}
FeldTypBeschreibung
Typestring"file" oder "directory"
NamestringName des Eintrags
SizeintGröße in Bytes — für Verzeichnisse immer 0
LastModifiedint64Letzte Änderung in Unix-Millisekunden

Eine Datei lesen

api.ReadApplicationFile(appID, path) gibt einen squarecloud.FileContent mit den Datei-Bytes zurück.
content, err := api.ReadApplicationFile("abc123def456abc123def456", "main.go")
if err != nil {
	panic(err)
}

fmt.Println(string(content.Data))
Die API liefert den Inhalt als Buffer-Objekt im Node.js-Stil ({"type": "Buffer", "data": [...]}). Das SDK dekodiert es für dich — content.Data ist ein einfaches []byte (der Typ ByteArray), direkt einsatzbereit.

Eine Datei erstellen oder überschreiben

api.PutApplicationFile(appID, path, content) schreibt content an path und erstellt die Datei, falls sie nicht existiert, oder überschreibt sie, falls doch. Zurück kommt ein squarecloud.FileWritten.
written, err := api.PutApplicationFile(
	"abc123def456abc123def456",
	"config/settings.json",
	[]byte(`{"debug": false}`),
)
if err != nil {
	panic(err)
}

fmt.Println(written.Written) // true
Der Inhalt wird als UTF-8-String an die API gesendet — Uploads binärer Dateien werden noch nicht unterstützt. Um Binärdateien auszuliefern, verwende stattdessen einen Commit.

Eine Datei verschieben oder umbenennen

api.MoveApplicationFile(appID, path, to) verschiebt eine Datei oder benennt sie um.
err := api.MoveApplicationFile("abc123def456abc123def456", "main.go", "src/main.go")
if err != nil {
	panic(err)
}

Eine Datei oder ein Verzeichnis löschen

Das Löschen eines Verzeichnisses entfernt alles darin. Gelöschte Dateien lassen sich nicht wiederherstellen, es sei denn, du hast einen Snapshot.
err := api.DeleteApplicationFile("abc123def456abc123def456", "src/old.go")
if err != nil {
	panic(err)
}