mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 19:08:20 +00:00
Manage API Method Registration from main
This commit is contained in:
parent
c3d5e3edc1
commit
be852d0655
5 changed files with 22 additions and 39 deletions
10
cmd/api.go
Normal file
10
cmd/api.go
Normal 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) {
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"golang.org/x/exp/slog"
|
"golang.org/x/exp/slog"
|
||||||
|
"nfsense.net/nfsense/pkg/jsonrpc"
|
||||||
"nfsense.net/nfsense/pkg/server"
|
"nfsense.net/nfsense/pkg/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -37,8 +38,12 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
slog.Info("Setup API...")
|
||||||
|
apiHandler := jsonrpc.NewHandler(100 << 20)
|
||||||
|
RegisterAPIMethods(apiHandler, conf)
|
||||||
|
|
||||||
slog.Info("Starting Webserver...")
|
slog.Info("Starting Webserver...")
|
||||||
server.StartWebserver(conf)
|
server.StartWebserver(conf, apiHandler)
|
||||||
|
|
||||||
slog.Info("Ready")
|
slog.Info("Ready")
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,8 @@ type Handler struct {
|
||||||
maxRequestSize int64
|
maxRequestSize int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewHandler(maxRequestSize int64) Handler {
|
func NewHandler(maxRequestSize int64) *Handler {
|
||||||
return Handler{
|
return &Handler{
|
||||||
methods: map[string]method{},
|
methods: map[string]method{},
|
||||||
maxRequestSize: maxRequestSize,
|
maxRequestSize: maxRequestSize,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -9,14 +9,17 @@ import (
|
||||||
"golang.org/x/exp/slog"
|
"golang.org/x/exp/slog"
|
||||||
|
|
||||||
"nfsense.net/nfsense/pkg/definitions"
|
"nfsense.net/nfsense/pkg/definitions"
|
||||||
|
"nfsense.net/nfsense/pkg/jsonrpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
var server http.Server
|
var server http.Server
|
||||||
var mux = http.NewServeMux()
|
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.Addr = ":8080"
|
||||||
server.Handler = mux
|
server.Handler = mux
|
||||||
|
apiHandler = _apiHandler
|
||||||
|
|
||||||
// Routing
|
// Routing
|
||||||
mux.HandleFunc("/login", HandleLogin)
|
mux.HandleFunc("/login", HandleLogin)
|
||||||
|
|
Loading…
Add table
Reference in a new issue