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:
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
+}