func serveFile(w http.ResponseWriter, r *http.Request, path, contentType string) { info, err := assets.AssetInfo(path) if err != nil { http.Error(w, "", http.StatusInternalServerError) return } if !modifiedSince(w, r, info.ModTime()) { return } data, err := assets.Asset(path) if err != nil { http.Error(w, "", http.StatusInternalServerError) return } w.Header().Set("Content-Type", contentType) if strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { w.Header().Set("Content-Encoding", "gzip") w.Header().Set("Content-Length", strconv.Itoa(len(data))) w.Write(data) } else { gzr, err := gzip.NewReader(bytes.NewReader(data)) buf, err := ioutil.ReadAll(gzr) if err != nil { http.Error(w, "", http.StatusInternalServerError) return } w.Header().Set("Content-Length", strconv.Itoa(len(buf))) w.Write(buf) } }
func initConfig() { configPath := path.Join(appDir, "config.toml") if _, err := os.Stat(configPath); os.IsNotExist(err) { config, err := assets.Asset("config.default.toml") if err != nil { log.Println(err) return } err = ioutil.WriteFile(configPath, config, 0600) if err != nil { log.Println(err) } } }