func (client *Client) DownloadAsset(md5 string) (string, error) { tmpFile, err := ioutil.TempFile("", "conduit.") if err != nil { return "", err } defer tmpFile.Close() req := api.GetAssetRequest{ MD5: md5, } req.Sign(client.AccessKeyName, client.AccessKey) requestBytes, err := json.Marshal(req) if err != nil { return "", err } url := fmt.Sprintf("http://%s/%s", client.Host, "asset") if client.ShowRequests { log.Infof("URL: %s\nRequest: %s", url, string(requestBytes)) } requestReader := bytes.NewReader(requestBytes) resp, err := http.Post(url, "application/json", requestReader) if resp != nil { defer resp.Body.Close() } if err != nil { return "", err } if resp.StatusCode == 200 { _, err = io.Copy(tmpFile, resp.Body) if err != nil { return "", err } return tmpFile.Name(), nil } else { return "", errors.New(fmt.Sprintf("Could not download asset (%d)", resp.StatusCode)) } }