diff --git a/lib/lib.go b/lib/lib.go index b92c297..5c911b3 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -53,6 +53,17 @@ type Context interface { // message, address +type MsgHead interface { + Action() string +} + +type Message interface { + MsgHead + Head() MsgHead + Sender() Address + Payload() Payload +} + type Address interface { fmt.Stringer Url() string @@ -62,9 +73,9 @@ type Address interface { SetInteraction(string, string) } -type Message interface { - Action() string - Sender() Address +type Payload interface { + fmt.Stringer + //Data() interface{} } // action diff --git a/lib/message/address.go b/lib/message/address.go index dbb71ae..a44507e 100644 --- a/lib/message/address.go +++ b/lib/message/address.go @@ -3,6 +3,8 @@ package message import ( "fmt" "strings" + + "git.sr.ht/~cco/go-scopes/lib" ) // Address implementation @@ -36,13 +38,13 @@ func (addr *address) SetInteraction(sid, iid string) { addr.iid = iid } -func SimpleAddress(srv string) *address { +func SimpleAddress(srv string) lib.Address { return &address{ srv: srv, } } -func ParseAddress(s string) *address { +func ParseAddress(s string) lib.Address { addr := address{} p := strings.SplitN(s, "#", 2) if len(p) > 1 { diff --git a/lib/message/message.go b/lib/message/message.go index 7a623cb..accf767 100644 --- a/lib/message/message.go +++ b/lib/message/message.go @@ -8,6 +8,10 @@ import ( type strMessage string +func (msg strMessage) Head() lib.MsgHead { + return msg +} + func (msg strMessage) Action() string { return string(msg) } @@ -16,7 +20,11 @@ func (msg strMessage) Sender() lib.Address { return nil } -func StrMessage(action string) strMessage { +func (msg strMessage) Payload() lib.Payload { + return nil +} + +func StrMessage(action string) lib.Message { return strMessage(action) } diff --git a/server/server.go b/server/server.go index 8e02ad9..0caca3e 100644 --- a/server/server.go +++ b/server/server.go @@ -19,7 +19,7 @@ type ServerState struct { } func Start(ctx lib.Context) { - gin.SetMode(gin.ReleaseMode) + //gin.SetMode(gin.ReleaseMode) lib.GetCfg[*Cfg](ctx).BaseCfg.WithDoneHandler(HandleDone) Serve(ctx) lib.RunCtx(ctx, core.Listen) @@ -33,6 +33,7 @@ func HandleDone(ctx lib.Context) bool { func Serve(ctx lib.Context) { //r := gin.Default() r := gin.New() + r.Use(gin.Recovery()) r.Use(Logger(ctx)) r.GET("/*action", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") diff --git a/tests/unit_test.go b/tests/unit_test.go index 79da687..6fe874a 100644 --- a/tests/unit_test.go +++ b/tests/unit_test.go @@ -12,6 +12,7 @@ import ( func TestUnit(tb *tbase.T) { t := testing.SetUp(tb) t.Run("address", AddressTest) + t.Run("strmsg", StrMessageTest) } func AddressTest(t *testing.T) { @@ -33,3 +34,10 @@ func AddressTest(t *testing.T) { ad1.SetInteraction("1abc", "2cde") t.AssertEqual(fmt.Sprint(ad1), "https://scopes.cy7.eu#worker/1abc/2cde") } + +func StrMessageTest(t *testing.T) { + t.AssertEqual(message.Quit.Action(), "quit") + var msg lib.Message = message.StrMessage("doit") + t.AssertEqual(msg.Action(), "doit") + t.AssertEqual(msg.Head().Action(), "doit") +}