Pular para o conteúdo principal
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Listando arquivos de um diretório

api.GetApplicationFiles(appID, path) retorna as entradas de um diretório como um []squarecloud.FileInfo. Um caminho vazio lista a raiz da aplicação.
entries, err := api.GetApplicationFiles("abc123def456abc123def456", "")
if err != nil {
	panic(err)
}

for _, entry := range entries {
	fmt.Println(entry.Type, entry.Name, entry.Size, entry.LastModified)
}
CampoTipoDescrição
Typestring"file" ou "directory"
NamestringNome da entrada
SizeintTamanho em bytes — sempre 0 para diretórios
LastModifiedint64Última modificação em milissegundos Unix

Lendo um arquivo

api.ReadApplicationFile(appID, path) retorna um squarecloud.FileContent com os bytes do arquivo.
content, err := api.ReadApplicationFile("abc123def456abc123def456", "main.go")
if err != nil {
	panic(err)
}

fmt.Println(string(content.Data))
A API retorna o conteúdo como um objeto Buffer no estilo Node.js ({"type": "Buffer", "data": [...]}). O SDK decodifica para você — content.Data é um []byte comum (o tipo ByteArray), pronto para uso.

Criando ou sobrescrevendo um arquivo

api.PutApplicationFile(appID, path, content) escreve content em path, criando o arquivo se ele não existir ou sobrescrevendo se existir. Retorna um squarecloud.FileWritten.
written, err := api.PutApplicationFile(
	"abc123def456abc123def456",
	"config/settings.json",
	[]byte(`{"debug": false}`),
)
if err != nil {
	panic(err)
}

fmt.Println(written.Written) // true
O conteúdo é enviado à API como uma string UTF-8 — uploads de arquivos binários ainda não são suportados. Para enviar arquivos binários, use um commit.

Movendo ou renomeando um arquivo

api.MoveApplicationFile(appID, path, to) move ou renomeia um arquivo.
err := api.MoveApplicationFile("abc123def456abc123def456", "main.go", "src/main.go")
if err != nil {
	panic(err)
}

Excluindo um arquivo ou diretório

Excluir um diretório remove tudo que estiver dentro dele. Não há como recuperar arquivos excluídos, a não ser que você tenha um snapshot.
err := api.DeleteApplicationFile("abc123def456abc123def456", "src/old.go")
if err != nil {
	panic(err)
}