1
0
mirror of https://github.com/gilbertchen/duplicacy synced 2025-12-19 09:43:17 +00:00

pass in the http request method rather than switching on input type

This commit is contained in:
Arno Hautala
2017-10-01 21:16:45 -04:00
parent 6c96c52a93
commit be2c3931cd

View File

@@ -81,14 +81,24 @@ func (client *B2Client) retry(backoff int, response *http.Response) int {
return backoff return backoff
} }
func (client *B2Client) call(url string, requestHeaders map[string]string, input interface{}) (io.ReadCloser, http.Header, int64, error) { func (client *B2Client) call(url string, method string, requestHeaders map[string]string, input interface{}) (io.ReadCloser, http.Header, int64, error) {
switch method {
case http.MethodGet:
break
case http.MethodHead:
break
case http.MethodPost:
break
default:
return nil, nil, 0, fmt.Errorf("unhandled http request method: "+method)
}
var response *http.Response var response *http.Response
backoff := 0 backoff := 0
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
var inputReader *bytes.Reader var inputReader *bytes.Reader
method := "POST"
switch input.(type) { switch input.(type) {
default: default:
@@ -100,10 +110,6 @@ func (client *B2Client) call(url string, requestHeaders map[string]string, input
case []byte: case []byte:
inputReader = bytes.NewReader(input.([]byte)) inputReader = bytes.NewReader(input.([]byte))
case int: case int:
method = "GET"
inputReader = bytes.NewReader([]byte(""))
case bool:
method = "HEAD"
inputReader = bytes.NewReader([]byte("")) inputReader = bytes.NewReader([]byte(""))
} }
@@ -197,7 +203,7 @@ type B2AuthorizeAccountOutput struct {
func (client *B2Client) AuthorizeAccount() (err error) { func (client *B2Client) AuthorizeAccount() (err error) {
readCloser, _, _, err := client.call(B2AuthorizationURL, make(map[string]string), make(map[string]string)) readCloser, _, _, err := client.call(B2AuthorizationURL, http.MethodPost, make(map[string]string), make(map[string]string))
if err != nil { if err != nil {
return err return err
} }
@@ -231,7 +237,7 @@ func (client *B2Client) FindBucket(bucketName string) (err error) {
url := client.APIURL + "/b2api/v1/b2_list_buckets" url := client.APIURL + "/b2api/v1/b2_list_buckets"
readCloser, _, _, err := client.call(url, make(map[string]string), input) readCloser, _, _, err := client.call(url, http.MethodPost, make(map[string]string), input)
if err != nil { if err != nil {
return err return err
} }
@@ -311,9 +317,9 @@ func (client *B2Client) ListFileNames(startFileName string, singleFile bool, inc
var responseHeader http.Header var responseHeader http.Header
var err error var err error
if inputMapBool { if inputMapBool {
readCloser, responseHeader, _, err = client.call(url, requestHeaders, input) readCloser, responseHeader, _, err = client.call(url, http.MethodPost, requestHeaders, input)
} else { } else {
readCloser, responseHeader, _, err = client.call(url, requestHeaders, false) readCloser, responseHeader, _, err = client.call(url, http.MethodHead, requestHeaders, 0)
} }
if err != nil { if err != nil {
return nil, err return nil, err
@@ -388,7 +394,7 @@ func (client *B2Client) DeleteFile(fileName string, fileID string) (err error) {
input["fileId"] = fileID input["fileId"] = fileID
url := client.APIURL + "/b2api/v1/b2_delete_file_version" url := client.APIURL + "/b2api/v1/b2_delete_file_version"
readCloser, _, _, err := client.call(url, make(map[string]string), input) readCloser, _, _, err := client.call(url, http.MethodPost, make(map[string]string), input)
if err != nil { if err != nil {
return err return err
} }
@@ -408,7 +414,7 @@ func (client *B2Client) HideFile(fileName string) (fileID string, err error) {
input["fileName"] = fileName input["fileName"] = fileName
url := client.APIURL + "/b2api/v1/b2_hide_file" url := client.APIURL + "/b2api/v1/b2_hide_file"
readCloser, _, _, err := client.call(url, make(map[string]string), input) readCloser, _, _, err := client.call(url, http.MethodPost, make(map[string]string), input)
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -429,7 +435,7 @@ func (client *B2Client) DownloadFile(filePath string) (io.ReadCloser, int64, err
url := client.DownloadURL + "/file/" + client.BucketName + "/" + filePath url := client.DownloadURL + "/file/" + client.BucketName + "/" + filePath
readCloser, _, len, err := client.call(url, make(map[string]string), 0) readCloser, _, len, err := client.call(url, http.MethodGet, make(map[string]string), 0)
return readCloser, len, err return readCloser, len, err
} }
@@ -444,7 +450,7 @@ func (client *B2Client) getUploadURL() error {
input["bucketId"] = client.BucketID input["bucketId"] = client.BucketID
url := client.APIURL + "/b2api/v1/b2_get_upload_url" url := client.APIURL + "/b2api/v1/b2_get_upload_url"
readCloser, _, _, err := client.call(url, make(map[string]string), input) readCloser, _, _, err := client.call(url, http.MethodPost, make(map[string]string), input)
if err != nil { if err != nil {
return err return err
} }