package calls import ( "fmt" "log" "net/http" "os" "strconv" b "streifling.com/jason/cpolis/cmd/backend" ) func ServeArticle(c *b.Config, db *b.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if !tokenIsVerified(w, r, c) { return } idString := r.PathValue("id") id, err := strconv.ParseInt(idString, 10, 64) if err != nil { log.Println(err) http.Error(w, err.Error(), http.StatusInternalServerError) return } article, err := db.GetArticle(id) if err != nil { log.Println(err) http.Error(w, err.Error(), http.StatusInternalServerError) return } if !article.Published { return } contentBytes, err := os.ReadFile(article.Link) if err != nil { log.Println(err) http.Error(w, err.Error(), http.StatusInternalServerError) return } content, err := b.ConvertToHTML(string(contentBytes)) if err != nil { log.Println(err) http.Error(w, err.Error(), http.StatusInternalServerError) return } fmt.Fprint(w, content) } }