func (pf *PacmanFetcher) httpDownload(url *http.URL) (string, os.Error) { req, err := http.NewRequest("GET", url.String(), nil) if err != nil { return "", err } req.UserAgent = MAW_USERAGENT resp, err := http.DefaultClient.Do(req) if err != nil { return "", err } defer resp.Body.Close() if resp.StatusCode != 200 { return "", os.NewError("Download of " + url.String() + " failed: HTTP " + resp.Status) } _, filename := path.Split(url.Path) destpath := path.Join(pf.pkgdest, filename) destfile, err := os.Create(destpath) if err != nil { return "", err } defer destfile.Close() if resp.ContentLength < 0 { _, err = io.Copy(destfile, resp.Body) } else { _, err = io.Copyn(destfile, resp.Body, resp.ContentLength) } if err != nil { return "", err } return destpath, nil }