nativehttp

Simple interface to the native http client
Log | Files | Refs | README | LICENSE

commit e22db7bfbaa268c9abd78fc1b803d82ca8691da6
parent 8528e2bfb0445b02a42aa96ea23415459306517f
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date:   Mon, 12 Feb 2024 19:00:31 +0800

example/get: add simple example

Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>

Diffstat:
Aexample/get/main.go | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+), 0 deletions(-)

diff --git a/example/get/main.go b/example/get/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "errors" + "flag" + "io" + "os" + + "git.sr.ht/~jackmordaunt/nativehttp" +) + +func main() { + var ( + uri string + file string + ) + + flag.StringVar(&uri, "uri", "https://www.example.com", "uri to GET") + flag.StringVar(&file, "o", "file.html", "output file") + + flag.Parse() + + if err := downloadFile(uri, file); err != nil { + print("error: %v\n", err) + } +} + +func downloadFile(url, file string) (err error) { + r, err := nativehttp.Get(url) + if err != nil { + return err + } + + defer func() { + if e := r.Close(); e != nil { + err = errors.Join(err, e) + } + }() + + f, err := os.OpenFile(file, os.O_CREATE|os.O_RDWR, 0o644) + if err != nil { + return err + } + + defer f.Close() + + if _, err := io.Copy(f, r); err != nil { + return err + } + + return nil +}