Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bytes"
- "github.com/goji/httpauth"
- "github.com/gorilla/handlers"
- "net/http"
- "os"
- )
- func enforceXMLHandler(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- if r.ContentLength == 0 {
- http.Error(w, http.StatusText(400), 400)
- return
- }
- buf := new(bytes.Buffer)
- buf.ReadFrom(r.Body)
- if http.DetectContentType(buf.Bytes()) != "text/xml; charset=utf-8" {
- http.Error(w, http.StatusText(415), 415)
- return
- }
- next.ServeHTTP(w, r)
- })
- }
- func myLoggingHandler(h http.Handler) http.Handler {
- logFile, err := os.OpenFile("server.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
- if err != nil {
- panic(err)
- }
- return handlers.LoggingHandler(logFile, h)
- }
- func main() {
- indexHandler := http.HandlerFunc(index)
- authHandler := httpauth.SimpleBasicAuth("username", "password")
- http.Handle("/", myLoggingHandler(authHandler(enforceXMLHandler(indexHandler))))
- http.ListenAndServe(":3000", nil)
- }
- func index(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte("OK"))
- }
Advertisement
Add Comment
Please, Sign In to add comment