From af4dc7f3f05fad8fe13edf0173a6dee5e4148bd3 Mon Sep 17 00:00:00 2001 From: Julio Capote Date: Sun, 1 Jan 2023 16:53:09 -0500 Subject: rename server to router --- http/router.go | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ http/server.go | 96 ------------------------------------------------- main.go | 4 +-- 3 files changed, 112 insertions(+), 98 deletions(-) create mode 100644 http/router.go delete mode 100644 http/server.go diff --git a/http/router.go b/http/router.go new file mode 100644 index 0000000..204243f --- /dev/null +++ b/http/router.go @@ -0,0 +1,110 @@ +package http + +import ( + "io" + "net/http" + + "git.capotej.com/capotej/communique/registry" + "github.com/gin-gonic/gin" +) + +type Router struct { + registry *registry.Registry +} + +func NewRouter(registry *registry.Registry) *Router { + return &Router{registry: registry} +} + +func (s *Router) Start(zapWriter io.Writer) { + router := gin.Default() + router.SetTrustedProxies(nil) + gin.DisableConsoleColor() + gin.DefaultWriter = zapWriter // send gin logs to zap + + // Webfinger + router.GET("/.well-known/webfinger", func(c *gin.Context) { + resourceParam := c.Query("resource") + resource, _ := s.registry.WebfingerResource(resourceParam) + if resource != nil { + c.JSON(http.StatusOK, resource) + } else { + c.JSON(http.StatusNotFound, nil) + } + + }) + + // "User" endpoint + router.GET("/actors/:actor", func(c *gin.Context) { + actorParam := c.Param("actor") + resource, _ := s.registry.Profile(actorParam) + if resource != nil { + c.Writer.Header().Set("Content-Type", "application/activity+json") + c.JSON(http.StatusOK, resource) + } else { + c.JSON(http.StatusNotFound, nil) + } + + }) + + // // Inbox + // router.POST("/actors/:actor/inbox", func(c *gin.Context) { + // actorParam := c.Param("actor") + // resource := s.registry.Inbox(actorParam) + // if resource != nil { + // c.JSON(http.StatusOK, resource) + // } else { + // c.JSON(http.StatusNotFound, nil) + // } + + // }) + + // Outbox + router.GET("/actors/:actor/outbox", func(c *gin.Context) { + actorParam := c.Param("actor") + var resource map[string]interface{} + if c.Query("page") == "true" { + resource, _ = s.registry.OutboxCollection(actorParam) + } else { + resource, _ = s.registry.Outbox(actorParam) + } + if resource != nil { + c.JSON(http.StatusOK, resource) + c.Writer.Header().Set("Content-Type", "application/activity+json") + } else { + c.JSON(http.StatusNotFound, nil) + } + }) + + // Single activity + router.GET("/actors/:actor/activity/:id", func(c *gin.Context) { + actorParam := c.Param("actor") + idParam := c.Param("id") + var resource map[string]interface{} + resource, _ = s.registry.Activity(actorParam, idParam) + + if resource != nil { + c.Writer.Header().Set("Content-Type", "application/activity+json") + c.JSON(http.StatusOK, resource) + } else { + c.JSON(http.StatusNotFound, nil) + } + }) + + // Single note + router.GET("/actors/:actor/activity/:id/note", func(c *gin.Context) { + actorParam := c.Param("actor") + idParam := c.Param("id") + var resource map[string]interface{} + resource, _ = s.registry.Activity(actorParam, idParam) + + if resource != nil { + c.Writer.Header().Set("Content-Type", "application/activity+json") + c.JSON(http.StatusOK, resource) + } else { + c.JSON(http.StatusNotFound, nil) + } + }) + + router.Run() +} diff --git a/http/server.go b/http/server.go deleted file mode 100644 index 7d18085..0000000 --- a/http/server.go +++ /dev/null @@ -1,96 +0,0 @@ -package http - -import ( - "io" - "net/http" - - "git.capotej.com/capotej/communique/registry" - "github.com/gin-gonic/gin" -) - -// TODO rename to Router and router.go -type Server struct { - registry *registry.Registry -} - -func NewServer(registry *registry.Registry) *Server { - return &Server{registry: registry} -} - -func (s *Server) Start(zapWriter io.Writer) { - router := gin.Default() - router.SetTrustedProxies(nil) - gin.DisableConsoleColor() - gin.DefaultWriter = zapWriter // send gin logs to zap - - // Webfinger - router.GET("/.well-known/webfinger", func(c *gin.Context) { - resourceParam := c.Query("resource") - resource, _ := s.registry.WebfingerResource(resourceParam) - if resource != nil { - c.JSON(http.StatusOK, resource) - } else { - c.JSON(http.StatusNotFound, nil) - } - - }) - - // "User" endpoint - router.GET("/actors/:actor", func(c *gin.Context) { - actorParam := c.Param("actor") - resource, _ := s.registry.Profile(actorParam) - if resource != nil { - c.Writer.Header().Set("Content-Type", "application/activity+json") - c.JSON(http.StatusOK, resource) - } else { - c.JSON(http.StatusNotFound, nil) - } - - }) - - // // Inbox - // router.POST("/actors/:actor/inbox", func(c *gin.Context) { - // actorParam := c.Param("actor") - // resource := s.registry.Inbox(actorParam) - // if resource != nil { - // c.JSON(http.StatusOK, resource) - // } else { - // c.JSON(http.StatusNotFound, nil) - // } - - // }) - - // Outbox - router.GET("/actors/:actor/outbox", func(c *gin.Context) { - actorParam := c.Param("actor") - var resource map[string]interface{} - if c.Query("page") == "true" { - resource, _ = s.registry.OutboxCollection(actorParam) - } else { - resource, _ = s.registry.Outbox(actorParam) - } - if resource != nil { - c.JSON(http.StatusOK, resource) - c.Writer.Header().Set("Content-Type", "application/activity+json") - } else { - c.JSON(http.StatusNotFound, nil) - } - }) - - // Single activity - router.GET("/actors/:actor/outbox/:id/activity", func(c *gin.Context) { - actorParam := c.Param("actor") - idParam := c.Param("id") - var resource map[string]interface{} - resource, _ = s.registry.Activity(actorParam, idParam) - - if resource != nil { - c.Writer.Header().Set("Content-Type", "application/activity+json") - c.JSON(http.StatusOK, resource) - } else { - c.JSON(http.StatusNotFound, nil) - } - }) - - router.Run() -} diff --git a/main.go b/main.go index fa81264..35b5b80 100644 --- a/main.go +++ b/main.go @@ -56,9 +56,9 @@ func main() { // // External Http Server writer := &zapio.Writer{Log: logger, Level: zap.DebugLevel} defer writer.Close() - server := http.NewServer(registry) + router := http.NewRouter(registry) mainWg.Add(1) - go server.Start(writer) + go router.Start(writer) mainWg.Wait() } -- cgit v1.2.3