Manage API Method Registration from main

This commit is contained in:
Samuel Lorch 2023-03-05 21:11:37 +01:00
parent c3d5e3edc1
commit be852d0655
5 changed files with 22 additions and 39 deletions

10
cmd/api.go Normal file
View file

@ -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) {
}

View file

@ -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")

View file

@ -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,
}

View file

@ -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
}

View file

@ -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)