nidus-sync/rmo/scss.go

40 lines
1.1 KiB
Go
Raw Normal View History

package rmo
import (
"fmt"
"io"
"net/http"
"os"
"github.com/go-chi/chi/v5"
"github.com/rs/zerolog/log"
)
func getScssDebug(w http.ResponseWriter, r *http.Request) {
path := chi.URLParam(r, "*")
full_path := "scss/" + path
//log.Debug().Str("path", path).Str("full_path", full_path).Msg("working on SCSS debug")
file, err := os.Open(full_path)
if err != nil {
respondError(w, "failed to open file", err, http.StatusInternalServerError)
return
}
defer file.Close()
fileInfo, err := file.Stat()
if err != nil {
respondError(w, "failed to stat file", err, http.StatusInternalServerError)
return
}
// Set appropriate headers
w.Header().Set("Content-Type", "text/scss")
w.Header().Set("Content-Length", fmt.Sprintf("%d", fileInfo.Size()))
// Copy file contents to response writer
_, err = io.Copy(w, file)
if err != nil {
// Note: At this point, we've already started writing the response,
// so we can't change the status code anymore. The best we can do
// is log the error and abandon the connection.
log.Warn().Str("path", path).Msg("Failed to write scss file to output")
}
}