From 2648484a1de4443fdb748edb144c90c4a7a37472 Mon Sep 17 00:00:00 2001 From: r Date: Sat, 21 Dec 2019 05:48:48 +0000 Subject: Add about page --- service/auth.go | 8 ++++++++ service/logging.go | 8 ++++++++ service/service.go | 16 ++++++++++++++++ service/transport.go | 10 ++++++++++ 4 files changed, 42 insertions(+) (limited to 'service') diff --git a/service/auth.go b/service/auth.go index 2b6fdd6..3cdf357 100644 --- a/service/auth.go +++ b/service/auth.go @@ -127,6 +127,14 @@ func (s *authService) ServeUserPage(ctx context.Context, client io.Writer, c *ma return s.Service.ServeUserPage(ctx, client, c, id, maxID, minID) } +func (s *authService) ServeAboutPage(ctx context.Context, client io.Writer, c *mastodon.Client) (err error) { + c, err = s.getClient(ctx) + if err != nil { + return + } + return s.Service.ServeAboutPage(ctx, client, c) +} + func (s *authService) Like(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) { c, err = s.getClient(ctx) if err != nil { diff --git a/service/logging.go b/service/logging.go index 9b398af..e0d47ed 100644 --- a/service/logging.go +++ b/service/logging.go @@ -93,6 +93,14 @@ func (s *loggingService) ServeUserPage(ctx context.Context, client io.Writer, c return s.Service.ServeUserPage(ctx, client, c, id, maxID, minID) } +func (s *loggingService) ServeAboutPage(ctx context.Context, client io.Writer, c *mastodon.Client) (err error) { + defer func(begin time.Time) { + s.logger.Printf("method=%v, took=%v, err=%v\n", + "ServeAboutPage", time.Since(begin), err) + }(time.Now()) + return s.Service.ServeAboutPage(ctx, client, c) +} + func (s *loggingService) Like(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) { defer func(begin time.Time) { s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n", diff --git a/service/service.go b/service/service.go index 63f74d3..4d74449 100644 --- a/service/service.go +++ b/service/service.go @@ -33,6 +33,7 @@ type Service interface { ServeThreadPage(ctx context.Context, client io.Writer, c *mastodon.Client, id string, reply bool) (err error) ServeNotificationPage(ctx context.Context, client io.Writer, c *mastodon.Client, maxID string, minID string) (err error) ServeUserPage(ctx context.Context, client io.Writer, c *mastodon.Client, id string, maxID string, minID string) (err error) + ServeAboutPage(ctx context.Context, client io.Writer, c *mastodon.Client) (err error) Like(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) UnLike(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) Retweet(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) @@ -411,6 +412,21 @@ func (svc *service) ServeUserPage(ctx context.Context, client io.Writer, c *mast return } +func (svc *service) ServeAboutPage(ctx context.Context, client io.Writer, c *mastodon.Client) (err error) { + navbarData, err := svc.getNavbarTemplateData(ctx, client, c) + if err != nil { + return + } + + data := renderer.NewAboutPageTemplateData(navbarData) + err = svc.renderer.RenderAboutPage(ctx, client, data) + if err != nil { + return + } + + return +} + func (svc *service) getNavbarTemplateData(ctx context.Context, client io.Writer, c *mastodon.Client) (data *renderer.NavbarTemplateData, err error) { notifications, err := c.GetNotifications(ctx, nil) if err != nil { diff --git a/service/transport.go b/service/transport.go index 6759fcc..2b75662 100644 --- a/service/transport.go +++ b/service/transport.go @@ -228,6 +228,16 @@ func NewHandler(s Service, staticDir string) http.Handler { w.WriteHeader(http.StatusFound) }).Methods(http.MethodPost) + r.HandleFunc("/about", func(w http.ResponseWriter, req *http.Request) { + ctx := getContextWithSession(context.Background(), req) + + err := s.ServeAboutPage(ctx, w, nil) + if err != nil { + s.ServeErrorPage(ctx, w, err) + return + } + }).Methods(http.MethodGet) + r.HandleFunc("/signout", func(w http.ResponseWriter, req *http.Request) { // TODO remove session from database w.Header().Add("Set-Cookie", fmt.Sprintf("session_id=;max-age=0")) -- cgit v1.2.3