forked from jason/cpolis
		
	Move file handling to backend/files.go
This commit is contained in:
		
							
								
								
									
										28
									
								
								cmd/backend/files.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								cmd/backend/files.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
package backend
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func CopyFile(src, dst string) error {
 | 
			
		||||
	srcFile, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error opening source file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer srcFile.Close()
 | 
			
		||||
 | 
			
		||||
	dstFile, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error opening destination file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer dstFile.Close()
 | 
			
		||||
 | 
			
		||||
	_, err = io.Copy(dstFile, srcFile)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error copying file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return dstFile.Sync()
 | 
			
		||||
}
 | 
			
		||||
@@ -33,27 +33,6 @@ type EditorHTMLData struct {
 | 
			
		||||
	Tags         []*b.Tag
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func copyFile(src, dst string) error {
 | 
			
		||||
	srcFile, err := os.Open(src)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error opening source file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer srcFile.Close()
 | 
			
		||||
 | 
			
		||||
	dstFile, err := os.Create(dst)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error opening destination file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer dstFile.Close()
 | 
			
		||||
 | 
			
		||||
	_, err = io.Copy(dstFile, srcFile)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return fmt.Errorf("error copying file: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return dstFile.Sync()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WriteArticle(c *b.Config, db *b.DB, s *b.CookieStore) http.HandlerFunc {
 | 
			
		||||
	return func(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		session, err := getSession(w, r, c, s)
 | 
			
		||||
@@ -61,14 +40,13 @@ func WriteArticle(c *b.Config, db *b.DB, s *b.CookieStore) http.HandlerFunc {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		data := new(EditorHTMLData)
 | 
			
		||||
		data := &EditorHTMLData{Action: "submit"}
 | 
			
		||||
 | 
			
		||||
		if session.Values["article"] == nil {
 | 
			
		||||
			data = &EditorHTMLData{Article: new(b.Article)}
 | 
			
		||||
		} else {
 | 
			
		||||
			data = session.Values["article"].(*EditorHTMLData)
 | 
			
		||||
		}
 | 
			
		||||
		// data.Mode = EditMode
 | 
			
		||||
 | 
			
		||||
		data.Tags, err = db.GetTagList()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
@@ -77,8 +55,6 @@ func WriteArticle(c *b.Config, db *b.DB, s *b.CookieStore) http.HandlerFunc {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		data.Action = "submit"
 | 
			
		||||
 | 
			
		||||
		tmpl, err := template.ParseFiles(c.WebDir + "/templates/editor.html")
 | 
			
		||||
		template.Must(tmpl, err).ExecuteTemplate(w, "page-content", data)
 | 
			
		||||
	}
 | 
			
		||||
@@ -696,7 +672,7 @@ func AllowEditArticle(c *b.Config, db *b.DB, s *b.CookieStore) http.HandlerFunc
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err = copyFile(fmt.Sprint(c.ArticleDir, "/", oldID, ".md"), fmt.Sprint(c.ArticleDir, "/", newID, ".md")); err != nil {
 | 
			
		||||
		if err = b.CopyFile(fmt.Sprint(c.ArticleDir, "/", oldID, ".md"), fmt.Sprint(c.ArticleDir, "/", newID, ".md")); err != nil {
 | 
			
		||||
			log.Println(err)
 | 
			
		||||
			http.Error(w, err.Error(), http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user