forked from asjoyner/shade
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fail.go
62 lines (49 loc) · 1.87 KB
/
fail.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Package fail is a test client. It implements the Shade drive.Client API,
// and fails any attempted operation. You may configure it to appear as a
// Local client, or not.
package fail
import (
"errors"
"github.com/asjoyner/shade"
"github.com/asjoyner/shade/drive"
)
func init() {
drive.RegisterProvider("fail", NewClient)
}
// Drive is a test client implementation which fails every operation. If you
// provide any OAuthConfig its will return false for Local.
type Drive struct {
config drive.Config
}
// NewClient returns a client which will always fail.
func NewClient(c drive.Config) (drive.Client, error) {
return &Drive{config: c}, nil
}
// ListFiles returns an error, every time.
func (s *Drive) ListFiles() ([][]byte, error) {
return nil, errors.New("fail.Drive does what it says on the tin")
}
// GetFile returns an error, every time.
func (s *Drive) GetFile(sha256sum []byte) ([]byte, error) {
return nil, errors.New("fail.Drive does what it says on the tin")
}
// PutFile returns an error, every time.
func (s *Drive) PutFile(sha256sum, f []byte) error {
return errors.New("fail.Drive does what it says on the tin")
}
// GetChunk returns an error, every time.
func (s *Drive) GetChunk(sha256sum []byte, f *shade.File) ([]byte, error) {
return nil, errors.New("fail.Drive does what it says on the tin")
}
// PutChunk returns an error, every time.
func (s *Drive) PutChunk(sha256sum []byte, chunk []byte, f *shade.File) error {
return errors.New("fail.Drive does what it says on the tin")
}
// GetConfig returns an empty config.
func (s *Drive) GetConfig() drive.Config {
return s.config
}
// Local returns true, unless any OAuthConfig is provided.
func (s *Drive) Local() bool { return s.config.OAuth.ClientID == "" }
// Persistent returns whether the storage is persistent across task restarts.
func (s *Drive) Persistent() bool { return s.config.OAuth.ClientID != "" }