An experimental IndieWeb site built in Go.
at main 695 B view raw
1package handlers 2 3import ( 4 "fmt" 5 "io" 6 "net/http" 7 "os" 8 "strings" 9 10 "github.com/aws/aws-sdk-go-v2/aws" 11 "github.com/aws/aws-sdk-go-v2/service/s3" 12 "github.com/puregarlic/space/storage" 13) 14 15func ServeMedia(w http.ResponseWriter, r *http.Request) { 16 key := strings.TrimPrefix(r.URL.Path, "/") 17 18 res, err := storage.S3().GetObject(r.Context(), &s3.GetObjectInput{ 19 Bucket: aws.String(os.Getenv("AWS_S3_BUCKET_NAME")), 20 Key: &key, 21 }) 22 if err != nil { 23 fmt.Println("failed to get object", err) 24 panic(err) 25 } 26 27 defer res.Body.Close() 28 29 w.Header().Set("Cache-Control", "604800") 30 31 if _, err := io.Copy(w, res.Body); err != nil { 32 fmt.Println("failed to send object", err) 33 panic(err) 34 } 35}