github.com/Ptt-official-app/go-bbs@v0.12.0/serverlet/main.go (about) 1 package main 2 3 import ( 4 "github.com/Ptt-official-app/go-bbs" 5 _ "github.com/Ptt-official-app/go-bbs/pttbbs" 6 7 "encoding/json" 8 "fmt" 9 "log" 10 "net/http" 11 "strings" 12 ) 13 14 var userRecs []bbs.UserRecord 15 var boardHeader []bbs.BoardRecord 16 17 var bbsDB *bbs.DB 18 19 func main() { 20 fmt.Println("server start") 21 var err error 22 bbsDB, err = bbs.Open("pttbbs", "file://../home/bbs") 23 if err != nil { 24 log.Printf("open bbs error: %v", err) 25 return 26 } 27 28 loadPasswdsFile() 29 loadBoardFile() 30 31 r := http.NewServeMux() 32 r.HandleFunc("/v1/token", routeToken) 33 r.HandleFunc("/v1/boards", routeBoards) 34 r.HandleFunc("/v1/classes/", routeClasses) 35 r.HandleFunc("/v1/users/", routeUsers) 36 37 http.ListenAndServe(":8083", r) 38 } 39 40 func loadPasswdsFile() { 41 var err error 42 userRecs, err = bbsDB.ReadUserRecords() 43 if err != nil { 44 log.Println("get user rec error:", err) 45 return 46 } 47 log.Println(userRecs) 48 } 49 50 func loadBoardFile() { 51 var err error 52 boardHeader, err = bbsDB.ReadBoardRecords() 53 if err != nil { 54 log.Println("get board header error:", err) 55 return 56 } 57 log.Println(boardHeader) 58 } 59 60 func routeClass(w http.ResponseWriter, r *http.Request) { 61 if r.Method == "GET" { 62 getClass(w, r) 63 return 64 } 65 66 } 67 68 func getClass(w http.ResponseWriter, r *http.Request) { 69 70 seg := strings.Split(r.URL.Path, "/") 71 72 classID := "0" 73 if len(seg) > 2 { 74 classID = seg[3] 75 } 76 77 log.Println("user get class:", classID) 78 79 list := []interface{}{} 80 81 c := map[string]interface{}{ 82 "id": 1, 83 "type": "class", 84 "title": "title", 85 "number_of_user": 3, 86 "moderators": []string{ 87 "SYSOP", 88 "pichu", 89 }, 90 } 91 list = append(list, c) 92 93 m := map[string]interface{}{ 94 "data": list, 95 } 96 b, _ := json.MarshalIndent(m, "", " ") 97 98 w.Write(b) 99 100 }