56 строки
1.9 KiB
Go
56 строки
1.9 KiB
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Package proto defines the protocol between appfs client and server.
|
|
package proto
|
|
|
|
import "time"
|
|
|
|
// An Auth appears, JSON-encoded, as the X-Appfs-Auth header line,
|
|
// to authenticate a request made to the file server.
|
|
// The authentication scheme could be made more sophisticated, but since
|
|
// we are already forcing the use of TLS, a plain password is fine for now.
|
|
type Auth struct {
|
|
Password string
|
|
}
|
|
|
|
// GET /.appfs/stat/path returns the metadata for a file or directory,
|
|
// a JSON-encoded FileInfo.
|
|
const StatURL = "/.appfs/stat/"
|
|
|
|
// GET /.appfs/read/path returns the content of the file or directory.
|
|
// The body of the response is the raw file or directory content.
|
|
// The content of a directory is a sequence of JSON-encoded FileInfo.
|
|
const ReadURL = "/.appfs/read/"
|
|
|
|
// POST to /.appfs/write/path writes new data to a file.
|
|
// The X-Appfs-SHA1 header is the SHA1 hash of the data.
|
|
// The body of the request is the raw file content.
|
|
const WriteURL = "/.appfs/write/"
|
|
|
|
// POST to /.appfs/mount initializes the file system if it does not
|
|
// yet exist in the datastore.
|
|
const MkfsURL = "/.appfs/mkfs"
|
|
|
|
// POST to /.appfs/create/path creates a new file or directory.
|
|
// The named path must not already exist; its parent must exist.
|
|
// The query parameter dir=1 indicates that a directory should be created.
|
|
const CreateURL = "/.appfs/create/"
|
|
|
|
// POST to /.appfs/remove/path removes the file or directory.
|
|
// A directory must be empty to be removed.
|
|
const RemoveURL = "/.appfs/remove/"
|
|
|
|
// A FileInfo is a directory entry.
|
|
type FileInfo struct {
|
|
Name string // final path element
|
|
ModTime time.Time
|
|
Size int64
|
|
IsDir bool
|
|
}
|
|
|
|
// PostContentType is the Content-Type for POSTed data.
|
|
// There is no encoding or framing: it is just raw data bytes.
|
|
const PostContentType = "x-appfs/raw"
|