package server import ( "fmt" "log" "net/http" "regexp" "strings" "github.com/fengxxc/wechatmp2markdown/format" "github.com/fengxxc/wechatmp2markdown/parse" "github.com/fengxxc/wechatmp2markdown/util" ) func Start(addr string) { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { rawQuery := r.URL.RawQuery paramsMap := parseParams(rawQuery) // url param wechatmpURL := paramsMap["url"] fmt.Printf("accept url: %s\n", wechatmpURL) imageArgValue := paramsMap["image"] fmt.Printf(" image: %s\n", imageArgValue) imagePolicy := parse.ImageArgValue2ImagePolicy(imageArgValue) if wechatmpURL == "" { w.WriteHeader(http.StatusBadRequest) w.Write([]byte(defHTML)) return } w.Header().Set("Content-Type", "application/octet-stream") var articleStruct parse.Article = parse.ParseFromURL(wechatmpURL, imagePolicy) title := articleStruct.Title.Val.(string) mdString, saveImageBytes := format.Format(articleStruct) if len(saveImageBytes) > 0 { w.Header().Set("Content-Disposition", "attachment; filename="+title+".zip") saveImageBytes[title] = []byte(mdString) util.HttpDownloadZip(w, saveImageBytes) } else { w.Header().Set("Content-Disposition", "attachment; filename="+title+".md") w.Write([]byte(mdString)) } }) fmt.Printf("wechatmp2markdown server listening on %s\n", addr) if err := http.ListenAndServe(addr, nil); err != nil { log.Fatal(err) } } var defHTML string = `