forked from buchgr/bazel-remote
-
Notifications
You must be signed in to change notification settings - Fork 0
/
proxy.go
80 lines (69 loc) · 1.87 KB
/
proxy.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package config
import (
"net/http"
"net/url"
"github.com/buchgr/bazel-remote/cache/azblobproxy"
"github.com/buchgr/bazel-remote/cache/gcsproxy"
"github.com/buchgr/bazel-remote/cache/httpproxy"
"github.com/buchgr/bazel-remote/cache/s3proxy"
)
func (c *Config) setProxy() error {
if c.GoogleCloudStorage != nil {
proxyCache, err := gcsproxy.New(c.GoogleCloudStorage.Bucket,
c.GoogleCloudStorage.UseDefaultCredentials, c.GoogleCloudStorage.JSONCredentialsFile,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
if err != nil {
return err
}
c.ProxyBackend = proxyCache
return nil
}
if c.HTTPBackend != nil {
httpClient := &http.Client{}
var baseURL *url.URL
baseURL, err := url.Parse(c.HTTPBackend.BaseURL)
if err != nil {
return err
}
proxyCache, err := httpproxy.New(baseURL, c.StorageMode,
httpClient, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
if err != nil {
return err
}
c.ProxyBackend = proxyCache
return nil
}
if c.S3CloudStorage != nil {
creds, err := c.S3CloudStorage.GetCredentials()
if err != nil {
return err
}
c.ProxyBackend = s3proxy.New(
c.S3CloudStorage.Endpoint,
c.S3CloudStorage.Bucket,
c.S3CloudStorage.Prefix,
creds,
c.S3CloudStorage.DisableSSL,
c.S3CloudStorage.UpdateTimestamps,
c.S3CloudStorage.Region,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
return nil
}
if c.AzBlobConfig != nil {
creds, err := c.AzBlobConfig.GetCredentials()
if err != nil {
return err
}
c.ProxyBackend = azblobproxy.New(
c.AzBlobConfig.StorageAccount,
c.AzBlobConfig.ContainerName,
c.AzBlobConfig.Prefix,
creds,
c.AzBlobConfig.SharedKey,
c.AzBlobConfig.UpdateTimestamps,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads,
)
return nil
}
return nil
}