From adbdffbfb4a0d87f60a0019588892c17adfccd4b Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Thu, 10 Oct 2013 10:31:27 -0400 Subject: [PATCH] client upload works again --- client/client.go | 46 +++++++++++++++++++--------------------------- imgsrv.go | 3 +-- server.go | 7 +++++++ 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/client/client.go b/client/client.go index 698bb22..e9d5a6f 100644 --- a/client/client.go +++ b/client/client.go @@ -1,17 +1,18 @@ package client import ( + "bytes" + "errors" + "io" "io/ioutil" + "mime/multipart" "net/http" - "net/url" - "log" "os" - "mime/multipart" - "bytes" - "path" - "io" + "path" ) +var ErrorNotOK = errors.New("HTTP Response was not 200 OK") + func NewfileUploadRequest(uri, file_path string, params map[string]string) (*http.Request, error) { file, err := os.Open(file_path) if err != nil { @@ -30,46 +31,37 @@ func NewfileUploadRequest(uri, file_path string, params map[string]string) (*htt for key, val := range params { _ = writer.WriteField(key, val) } - contentType := writer.FormDataContentType() + _ = writer.WriteField("returnUrl", "true") + contentType := writer.FormDataContentType() err = writer.Close() if err != nil { return nil, err } - log.Println(uri) - req, err := http.NewRequest("POST", uri, body) - req.Header.Add("Content-Type", contentType) - return req, err + req, err := http.NewRequest("POST", uri, body) + req.Header.Add("Content-Type", contentType) + return req, err } func PutFileFromPath(uri, file_path string, params map[string]string) (path string, err error) { - request, err := NewfileUploadRequest(uri, file_path, params) + request, err := NewfileUploadRequest(uri, file_path, params) if err != nil { return "", err } client := &http.Client{} - resp, err := client.Do(request) + resp, err := client.Do(request) if err != nil { return "", err } - log.Printf("%#v",resp) - defer resp.Body.Close() + defer resp.Body.Close() bytes, err := ioutil.ReadAll(resp.Body) if err != nil { return "", err } + if resp.StatusCode != 200 { + return string(bytes), ErrorNotOK + } + return string(bytes), nil } - -func hurr() { - values := make(url.Values) - values.Set("email", "anything@email.com") - values.Set("name", "bob") - values.Set("count", "1") - r, err := http.PostForm("http://example.com/form", values) - if err != nil { - return - } - _ = r -} diff --git a/imgsrv.go b/imgsrv.go index 5a62e7e..f5f5665 100644 --- a/imgsrv.go +++ b/imgsrv.go @@ -89,13 +89,12 @@ func main() { log.Println(err) return } - //log.Printf("POSTing: %s\n", url.String()) url_path, err := client.PutFileFromPath(url.String(), PutFile, params) if err != nil { log.Println(err) return } - log.Printf("uploaded: %s%s\n", DefaultConfig.RemoteHost, url_path) + fmt.Printf("%s%s\n", DefaultConfig.RemoteHost, url_path) } } diff --git a/server.go b/server.go index 447af4a..2af758b 100644 --- a/server.go +++ b/server.go @@ -729,12 +729,15 @@ func routeUpload(w http.ResponseWriter, r *http.Request) { return } useRandName := false + returnUrl := false log.Printf("%q", r.MultipartForm.Value) for k, v := range r.MultipartForm.Value { if k == "keywords" { info.Keywords = append(info.Keywords, strings.Split(v[0], ",")...) } else if k == "rand" { useRandName = true + } else if k == "returnUrl" { + returnUrl = true } else { log.Printf("WARN: not sure what to do with param [%s = %s]", k, v) } @@ -781,6 +784,10 @@ func routeUpload(w http.ResponseWriter, r *http.Request) { n) } + if returnUrl { + fmt.Fprintf(w, "/v/%s", filename) + return + } http.Redirect(w, r, fmt.Sprintf("/v/%s", filename), 302) } else { httplog.LogRequest(r, 404)