1package gofakes3
2
3import (
4	"net/http"
5	"strings"
6)
7
8var (
9	corsHeaders = []string{
10		"Accept",
11		"Accept-Encoding",
12		"Authorization",
13		"Content-Disposition",
14		"Content-Length",
15		"Content-Type",
16		"X-Amz-Date",
17		"X-Amz-User-Agent",
18		"X-CSRF-Token",
19		"x-amz-acl",
20		"x-amz-content-sha256",
21		"x-amz-meta-filename",
22		"x-amz-meta-from",
23		"x-amz-meta-private",
24		"x-amz-meta-to",
25		"x-amz-security-token",
26	}
27	corsHeadersString = strings.Join(corsHeaders, ", ")
28)
29
30type withCORS struct {
31	r   http.Handler
32	log Logger
33}
34
35func (s *withCORS) ServeHTTP(w http.ResponseWriter, r *http.Request) {
36	w.Header().Set("Access-Control-Allow-Origin", "*")
37	w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD")
38	w.Header().Set("Access-Control-Allow-Headers", corsHeadersString)
39	w.Header().Set("Access-Control-Expose-Headers", "ETag")
40
41	if r.Method == "OPTIONS" {
42		return
43	}
44
45	s.r.ServeHTTP(w, r)
46}
47