From be852d0655e2bad0f705ef184f04cb9e2f8dd659 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sun, 5 Mar 2023 21:11:37 +0100 Subject: [PATCH] Manage API Method Registration from main --- cmd/api.go | 10 ++++++++++ cmd/main.go | 7 ++++++- pkg/jsonrpc/handler.go | 4 ++-- pkg/server/jsonrpc.go | 35 ----------------------------------- pkg/server/server.go | 5 ++++- 5 files changed, 22 insertions(+), 39 deletions(-) create mode 100644 cmd/api.go delete mode 100644 pkg/server/jsonrpc.go diff --git a/cmd/api.go b/cmd/api.go new file mode 100644 index 0000000..4313db3 --- /dev/null +++ b/cmd/api.go @@ -0,0 +1,10 @@ +package main + +import ( + "nfsense.net/nfsense/pkg/definitions" + "nfsense.net/nfsense/pkg/jsonrpc" +) + +func RegisterAPIMethods(apiHandler *jsonrpc.Handler, conf *definitions.Config) { + +} diff --git a/cmd/main.go b/cmd/main.go index 6c64df7..8760cbd 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -9,6 +9,7 @@ import ( "time" "golang.org/x/exp/slog" + "nfsense.net/nfsense/pkg/jsonrpc" "nfsense.net/nfsense/pkg/server" ) @@ -37,8 +38,12 @@ func main() { return } + slog.Info("Setup API...") + apiHandler := jsonrpc.NewHandler(100 << 20) + RegisterAPIMethods(apiHandler, conf) + slog.Info("Starting Webserver...") - server.StartWebserver(conf) + server.StartWebserver(conf, apiHandler) slog.Info("Ready") diff --git a/pkg/jsonrpc/handler.go b/pkg/jsonrpc/handler.go index fd1dee8..ae22189 100644 --- a/pkg/jsonrpc/handler.go +++ b/pkg/jsonrpc/handler.go @@ -18,8 +18,8 @@ type Handler struct { maxRequestSize int64 } -func NewHandler(maxRequestSize int64) Handler { - return Handler{ +func NewHandler(maxRequestSize int64) *Handler { + return &Handler{ methods: map[string]method{}, maxRequestSize: maxRequestSize, } diff --git a/pkg/server/jsonrpc.go b/pkg/server/jsonrpc.go deleted file mode 100644 index 2b46fe1..0000000 --- a/pkg/server/jsonrpc.go +++ /dev/null @@ -1,35 +0,0 @@ -package server - -import ( - "context" - "fmt" - - "nfsense.net/nfsense/pkg/jsonrpc" -) - -var apiHandler jsonrpc.Handler - -func init() { - apiHandler = jsonrpc.NewHandler(100 << 20) - apiHandler.Register("test", Ping{}) -} - -type Ping struct { -} - -type PingRequest struct { - Msg string `json:"msg"` -} - -type PingResponse struct { - Msg string `json:"msg"` -} - -func (p Ping) Ping(ctx context.Context, req PingRequest) (*PingResponse, error) { - if req.Msg == "" { - return nil, fmt.Errorf("Message is empty") - } - return &PingResponse{ - Msg: req.Msg, - }, nil -} diff --git a/pkg/server/server.go b/pkg/server/server.go index f1e09ee..f24734e 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -9,14 +9,17 @@ import ( "golang.org/x/exp/slog" "nfsense.net/nfsense/pkg/definitions" + "nfsense.net/nfsense/pkg/jsonrpc" ) var server http.Server var mux = http.NewServeMux() +var apiHandler *jsonrpc.Handler -func StartWebserver(conf *definitions.Config) { +func StartWebserver(conf *definitions.Config, _apiHandler *jsonrpc.Handler) { server.Addr = ":8080" server.Handler = mux + apiHandler = _apiHandler // Routing mux.HandleFunc("/login", HandleLogin)