1 package httpaccept_test 2 3 import ( 4 "fmt" 5 "io" 6 "net/http" 7 "net/http/httptest" 8 9 "vimagination.zapto.org/httpaccept" 10 ) 11 12 func Example() { 13 handler := func(w http.ResponseWriter, r *http.Request) { 14 if !httpaccept.HandleAccept(r, httpaccept.HandlerFunc(func(m httpaccept.Mime) bool { 15 if m.Match("image/png") { 16 io.WriteString(w, "png") 17 } else if m.Match("image/*") { 18 io.WriteString(w, "image") 19 } else if m.Match("*/other") { 20 io.WriteString(w, "other") 21 } else { 22 return false 23 } 24 25 return true 26 })) { 27 io.WriteString(w, "none") 28 } 29 } 30 31 w := httptest.NewRecorder() 32 r, _ := http.NewRequest(http.MethodGet, "/", nil) 33 r.Header.Set("Accept", "image/png") 34 handler(w, r) 35 fmt.Println(w.Body) 36 37 w = httptest.NewRecorder() 38 r.Header.Set("Accept", "image/*") 39 handler(w, r) 40 fmt.Println(w.Body) 41 42 w = httptest.NewRecorder() 43 r.Header.Set("Accept", "image/gif") 44 handler(w, r) 45 fmt.Println(w.Body) 46 47 w = httptest.NewRecorder() 48 r.Header.Set("Accept", "text/other") 49 handler(w, r) 50 fmt.Println(w.Body) 51 52 w = httptest.NewRecorder() 53 r.Header.Set("Accept", "image/png, text/other") 54 handler(w, r) 55 fmt.Println(w.Body) 56 57 w = httptest.NewRecorder() 58 r.Header.Set("Accept", "image/png;q=0.5, text/other") 59 handler(w, r) 60 fmt.Println(w.Body) 61 62 w = httptest.NewRecorder() 63 r.Header.Set("Accept", "*/*;q=0") 64 handler(w, r) 65 fmt.Println(w.Body) 66 67 // Output: 68 // png 69 // png 70 // image 71 // other 72 // png 73 // other 74 // none 75 } 76