mirror of
https://github.com/fengxxc/wechatmp2markdown.git
synced 2026-04-21 11:17:42 +08:00
feat(server): simple http server support
This commit is contained in:
19
main.go
19
main.go
@@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/fengxxc/wechatmp2markdown/format"
|
"github.com/fengxxc/wechatmp2markdown/format"
|
||||||
"github.com/fengxxc/wechatmp2markdown/parse"
|
"github.com/fengxxc/wechatmp2markdown/parse"
|
||||||
|
"github.com/fengxxc/wechatmp2markdown/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -15,8 +16,22 @@ func main() {
|
|||||||
if len(args) <= 2 {
|
if len(args) <= 2 {
|
||||||
panic("not enough args")
|
panic("not enough args")
|
||||||
}
|
}
|
||||||
url := args[1]
|
args1 := args[1]
|
||||||
filename := args[2]
|
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)
|
fmt.Printf("url: %s, filename: %s\n", url, filename)
|
||||||
var articleStruct parse.Article = parse.ParseFromURL(url)
|
var articleStruct parse.Article = parse.ParseFromURL(url)
|
||||||
format.FormatAndSave(articleStruct, filename)
|
format.FormatAndSave(articleStruct, filename)
|
||||||
|
|||||||
33
server/server.go
Normal file
33
server/server.go
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user