The server for Open Course World
at main 47 lines 1.3 kB view raw
1package bcd_parser 2 3import ( 4 "fmt" 5 "io/ioutil" 6 "net/http" 7 "github.com/mm2srv/smm2_parsing" 8) 9 10func HandlePage(w http.ResponseWriter, r *http.Request) { 11 w.Header().Set("Content-Type", "text/html; charset=utf-8") 12 page := `<form method="post" enctype="multipart/form-data" action="/remove_uploaded_flag"><input type="file" name="file"><input type="submit" value="Remove uploaded-flag from BCD"></form>` 13 w.Write([]byte(page)) 14} 15 16func HandleProcess(w http.ResponseWriter, r *http.Request) { 17 maxSize := int64(0x5c000 * 2) 18 r.Body = http.MaxBytesReader(w, r.Body, maxSize) 19 if err := r.ParseMultipartForm(maxSize); err != nil { 20 fmt.Printf("removeUploadCheck error parsing form %v\n", err) 21 http.Error(w, err.Error(), http.StatusBadRequest) 22 return 23 } 24 25 file, fileHeader, err := r.FormFile("file") 26 if err != nil { 27 http.Error(w, err.Error(), http.StatusBadRequest) 28 return 29 } 30 defer file.Close() 31 32 rawBCD, err := ioutil.ReadAll(file) 33 if err != nil { 34 http.Error(w, err.Error(), http.StatusBadRequest) 35 return 36 } 37 38 newBCD, err := smm2_parsing.RemoveUploadedFlag(rawBCD) 39 if err != nil { 40 fmt.Printf("removeUploadCheck error %v\n", err) 41 http.Error(w, err.Error(), http.StatusBadRequest) 42 return 43 } 44 45 w.Header().Set("content-disposition", fmt.Sprintf("attachment; filename=\"%s\"", fileHeader.Filename)) 46 w.Write(newBCD) 47}