func (this *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	path := r.URL.Path[1:]
	log.PrintLn(path)
	data, err := ioutil.ReadFile(string(path))

	if err == nil {
		var contentType string

		if strings.HasSuffix(path, ".css") {
			contentType = "text/css"
		} else if strings.HasSuffix(path, ".html") {
			contentType = "text/html"
		} else if strings.HasSuffix(path, ".js") {
			contentType = "application/javascript"
		} else if strings.HasSuffix(path, ".png") {
			contentType = "image/png"
		} else if strings.HasSuffix(path, ".svg") {
			contentType = "image/svg+xml"
		} else {
			contentType = "text/plain"
		}

		w.Header().Add("Content Type", contentType)
		w.Write(data)
	} else {
		w.WriteHeader(404)
		w.Write([]byte("Sorry, 404 - " + http.StatusText(404)))
	}
}
Ejemplo n.º 2
0
// attach to the struct a the ServeHTTP method, which turns MyHandler into an http handler to write responses given a request
// the http request is named: "r", sometimes it is conventionally named: "req"
// the http response is named "w", which you write data to, which you then send to the client as the body of the response
func (this *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	// http.Request has built in data for a URL_PATH
	path := r.URL.Path[1:]
	// logs the url path to the terminal
	log.PrintLn(path)
	data, err := ioutil.ReadFile(string(path))

	if err == nil {
		// write the response body
		w.Write(data)
	} else {
		// write the response header
		w.Writeheader(404)
		// write the response body
		w.Write([]byte("404 HTTP Error - " + http.StatusText(404)))
	}
}