Created
August 24, 2016 21:20
-
-
Save tdeck/20dcd52be40edc94f615647ff31a9eb2 to your computer and use it in GitHub Desktop.
Square Connect item image upload in Golang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"fmt" | |
"io" | |
"log" | |
"mime/multipart" | |
"net/http" | |
"os" | |
"path/filepath" | |
) | |
// Creates a new file upload http request with optional extra params | |
func newfileUploadRequest(uri string, token string, paramName, path string) (*http.Request, error) { | |
file, err := os.Open(path) | |
if err != nil { | |
return nil, err | |
} | |
defer file.Close() | |
body := &bytes.Buffer{} | |
writer := multipart.NewWriter(body) | |
part, err := writer.CreateFormFile(paramName, filepath.Base(path)) | |
if err != nil { | |
return nil, err | |
} | |
_, err = io.Copy(part, file) | |
err = writer.Close() | |
if err != nil { | |
return nil, err | |
} | |
req, err := http.NewRequest("POST", uri, body) | |
if err != nil { | |
return nil, err | |
} | |
req.Header.Add("Authorization", "Bearer "+token) | |
req.Header.Add("Content-Type", writer.FormDataContentType()) | |
return req, nil | |
} | |
func main() { | |
uri := "https://connect.squareup.com/v1/me/items/THE-ITEM-ID/image" | |
path, _ := os.Getwd() | |
path += "/THE-FILE-NAME" | |
token := "YOUR-ACCESS-TOKEN" | |
request, err := newfileUploadRequest(uri, token, "image_data", path) | |
if err != nil { | |
log.Fatal(err) | |
} | |
client := &http.Client{} | |
resp, err := client.Do(request) | |
if err != nil { | |
log.Fatal(err) | |
} else { | |
body := &bytes.Buffer{} | |
_, err := body.ReadFrom(resp.Body) | |
if err != nil { | |
log.Fatal(err) | |
} | |
resp.Body.Close() | |
fmt.Println(resp.StatusCode) | |
fmt.Println(resp.Header) | |
fmt.Println(body) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment