main.go 使用 APIConfig 传参

This commit is contained in:
2021-05-23 01:27:13 +08:00
parent 5bc57be0db
commit 67b329d11a
2 changed files with 30 additions and 5 deletions

View File

@@ -16,6 +16,7 @@ type API struct {
Db *database.Database Db *database.Database
Server http.Server Server http.Server
token string token string
APIConfig APIConfig
} }
type Status struct { type Status struct {
@@ -408,10 +409,16 @@ func (api *API) HandleGetFile(w http.ResponseWriter, r *http.Request) {
io.Copy(w, src) io.Copy(w, src)
} }
func NewAPI(dbName string, Addr string) (*API, error) { type APIConfig struct {
DatabaseName string
Addr string
Token string
}
func NewAPI(apiConfig APIConfig) (*API, error) {
var err error var err error
db, err := database.NewDatabase(dbName) db, err := database.NewDatabase(apiConfig.DatabaseName)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -422,9 +429,10 @@ func NewAPI(dbName string, Addr string) (*API, error) {
api := &API{ api := &API{
Db: db, Db: db,
Server: http.Server{ Server: http.Server{
Addr: Addr, Addr: apiConfig.Addr,
Handler: mux, Handler: mux,
}, },
APIConfig: apiConfig,
} }
// mount api // mount api
@@ -443,7 +451,7 @@ func NewAPI(dbName string, Addr string) (*API, error) {
mux.Handle("/api/v1/", http.StripPrefix("/api/v1", apiMux)) mux.Handle("/api/v1/", http.StripPrefix("/api/v1", apiMux))
mux.Handle("/web/", http.StripPrefix("/web", http.FileServer(http.Dir("web")))) mux.Handle("/web/", http.StripPrefix("/web", http.FileServer(http.Dir("web"))))
api.token = "pwd" api.token = apiConfig.Token
return api, nil return api, nil
} }

19
main.go
View File

@@ -1,12 +1,29 @@
package main package main
import ( import (
"flag"
"log" "log"
"msw-open-music/internal/pkg/api" "msw-open-music/internal/pkg/api"
) )
var DatabaseName string
var Listen string
var Token string
func init() {
flag.StringVar(&DatabaseName, "db", "/tmp/music.sqlite3", "sqlite3 database file path")
flag.StringVar(&Listen, "listen", ":8080", "http server listening")
flag.StringVar(&Token, "token", "mikusavetheworld", "secret token")
}
func main() { func main() {
api, err := api.NewAPI("/tmp/test.sqlite3", ":8080") flag.Parse()
apiConfig := api.APIConfig{
DatabaseName: DatabaseName,
Addr: Listen,
Token: Token,
}
api, err := api.NewAPI(apiConfig)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }