github.com/cavaliergopher/grab/v3@v3.0.1/doc.go (about) 1 /* 2 Package grab provides a HTTP download manager implementation. 3 4 Get is the most simple way to download a file: 5 6 resp, err := grab.Get("/tmp", "http://example.com/example.zip") 7 // ... 8 9 Get will download the given URL and save it to the given destination directory. 10 The destination filename will be determined automatically by grab using 11 Content-Disposition headers returned by the remote server, or by inspecting the 12 requested URL path. 13 14 An empty destination string or "." means the transfer will be stored in the 15 current working directory. 16 17 If a destination file already exists, grab will assume it is a complete or 18 partially complete download of the requested file. If the remote server supports 19 resuming interrupted downloads, grab will resume downloading from the end of the 20 partial file. If the server does not support resumed downloads, the file will be 21 retransferred in its entirety. If the file is already complete, grab will return 22 successfully. 23 24 For control over the HTTP client, destination path, auto-resume, checksum 25 validation and other settings, create a Client: 26 27 client := grab.NewClient() 28 client.HTTPClient.Transport.DisableCompression = true 29 30 req, err := grab.NewRequest("/tmp", "http://example.com/example.zip") 31 // ... 32 req.NoResume = true 33 req.HTTPRequest.Header.Set("Authorization", "Basic YWxhZGRpbjpvcGVuc2VzYW1l") 34 35 resp := client.Do(req) 36 // ... 37 38 You can monitor the progress of downloads while they are transferring: 39 40 client := grab.NewClient() 41 req, err := grab.NewRequest("", "http://example.com/example.zip") 42 // ... 43 resp := client.Do(req) 44 45 t := time.NewTicker(time.Second) 46 defer t.Stop() 47 48 for { 49 select { 50 case <-t.C: 51 fmt.Printf("%.02f%% complete\n", resp.Progress()) 52 53 case <-resp.Done: 54 if err := resp.Err(); err != nil { 55 // ... 56 } 57 58 // ... 59 return 60 } 61 } 62 */ 63 package grab