feat(server): simple http server support

This commit is contained in:
fengxxc
2022-11-26 14:08:32 +08:00
parent 428ee34c3b
commit 573cf4f447
2 changed files with 50 additions and 2 deletions

19
main.go
View File

@@ -6,6 +6,7 @@ import (
"github.com/fengxxc/wechatmp2markdown/format"
"github.com/fengxxc/wechatmp2markdown/parse"
"github.com/fengxxc/wechatmp2markdown/server"
)
func main() {
@@ -15,8 +16,22 @@ func main() {
if len(args) <= 2 {
panic("not enough args")
}
url := args[1]
filename := args[2]
args1 := args[1]
args2 := args[2]
if args1 == "server" {
// server pattern
port := args2
if port == "" {
port = "8964"
}
server.Start(":" + port)
return
}
// cli pattern
url := args1
filename := args2
fmt.Printf("url: %s, filename: %s\n", url, filename)
var articleStruct parse.Article = parse.ParseFromURL(url)
format.FormatAndSave(articleStruct, filename)

33
server/server.go Normal file
View File

@@ -0,0 +1,33 @@
package server
import (
"fmt"
"log"
"net/http"
"github.com/fengxxc/wechatmp2markdown/format"
"github.com/fengxxc/wechatmp2markdown/parse"
)
func Start(addr string) {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
wechatmpURL := r.FormValue("url")
if wechatmpURL == "" {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("param 'url' must not be empty. please put in a wechatmp URL and try again."))
return
}
w.Header().Set("Content-Type", "application/octet-stream")
var articleStruct parse.Article = parse.ParseFromURL(wechatmpURL)
title := articleStruct.Title.Val.(string)
w.Header().Set("Content-Disposition", "attachment; filename="+title+".md")
var mdString string = format.Format(articleStruct)
w.Write([]byte(mdString))
return
})
fmt.Printf("wechatmp2markdown server listening on %s\n", addr)
if err := http.ListenAndServe(addr, nil); err != nil {
log.Fatal(err)
}
}