Add user page and follow/unfollow calls
[bloat] / service / logging.go
1 package service
2
3 import (
4         "context"
5         "io"
6         "log"
7         "mastodon"
8         "mime/multipart"
9         "time"
10 )
11
12 type loggingService struct {
13         logger *log.Logger
14         Service
15 }
16
17 func NewLoggingService(logger *log.Logger, s Service) Service {
18         return &loggingService{logger, s}
19 }
20
21 func (s *loggingService) GetAuthUrl(ctx context.Context, instance string) (
22         redirectUrl string, sessionID string, err error) {
23         defer func(begin time.Time) {
24                 s.logger.Printf("method=%v, instance=%v, took=%v, err=%v\n",
25                         "GetAuthUrl", instance, time.Since(begin), err)
26         }(time.Now())
27         return s.Service.GetAuthUrl(ctx, instance)
28 }
29
30 func (s *loggingService) GetUserToken(ctx context.Context, sessionID string, c *mastodon.Client,
31         code string) (token string, err error) {
32         defer func(begin time.Time) {
33                 s.logger.Printf("method=%v, session_id=%v, code=%v, took=%v, err=%v\n",
34                         "GetUserToken", sessionID, code, time.Since(begin), err)
35         }(time.Now())
36         return s.Service.GetUserToken(ctx, sessionID, c, code)
37 }
38
39 func (s *loggingService) ServeHomePage(ctx context.Context, client io.Writer) (err error) {
40         defer func(begin time.Time) {
41                 s.logger.Printf("method=%v, took=%v, err=%v\n",
42                         "ServeHomePage", time.Since(begin), err)
43         }(time.Now())
44         return s.Service.ServeHomePage(ctx, client)
45 }
46
47 func (s *loggingService) ServeErrorPage(ctx context.Context, client io.Writer, err error) {
48         defer func(begin time.Time) {
49                 s.logger.Printf("method=%v, err=%v, took=%v\n",
50                         "ServeErrorPage", err, time.Since(begin))
51         }(time.Now())
52         s.Service.ServeErrorPage(ctx, client, err)
53 }
54
55 func (s *loggingService) ServeSigninPage(ctx context.Context, client io.Writer) (err error) {
56         defer func(begin time.Time) {
57                 s.logger.Printf("method=%v, took=%v, err=%v\n",
58                         "ServeSigninPage", time.Since(begin), err)
59         }(time.Now())
60         return s.Service.ServeSigninPage(ctx, client)
61 }
62
63 func (s *loggingService) ServeTimelinePage(ctx context.Context, client io.Writer,
64         c *mastodon.Client, maxID string, sinceID string, minID string) (err error) {
65         defer func(begin time.Time) {
66                 s.logger.Printf("method=%v, max_id=%v, since_id=%v, min_id=%v, took=%v, err=%v\n",
67                         "ServeTimelinePage", maxID, sinceID, minID, time.Since(begin), err)
68         }(time.Now())
69         return s.Service.ServeTimelinePage(ctx, client, c, maxID, sinceID, minID)
70 }
71
72 func (s *loggingService) ServeThreadPage(ctx context.Context, client io.Writer, c *mastodon.Client, id string, reply bool) (err error) {
73         defer func(begin time.Time) {
74                 s.logger.Printf("method=%v, id=%v, reply=%v, took=%v, err=%v\n",
75                         "ServeThreadPage", id, reply, time.Since(begin), err)
76         }(time.Now())
77         return s.Service.ServeThreadPage(ctx, client, c, id, reply)
78 }
79
80 func (s *loggingService) ServeNotificationPage(ctx context.Context, client io.Writer, c *mastodon.Client, maxID string, minID string) (err error) {
81         defer func(begin time.Time) {
82                 s.logger.Printf("method=%v, max_id=%v, min_id=%v, took=%v, err=%v\n",
83                         "ServeNotificationPage", maxID, minID, time.Since(begin), err)
84         }(time.Now())
85         return s.Service.ServeNotificationPage(ctx, client, c, maxID, minID)
86 }
87
88 func (s *loggingService) ServeUserPage(ctx context.Context, client io.Writer, c *mastodon.Client, id string, maxID string, minID string) (err error) {
89         defer func(begin time.Time) {
90                 s.logger.Printf("method=%v, id=%v, max_id=%v, min_id=%v, took=%v, err=%v\n",
91                         "ServeUserPage", id, maxID, minID, time.Since(begin), err)
92         }(time.Now())
93         return s.Service.ServeUserPage(ctx, client, c, id, maxID, minID)
94 }
95
96 func (s *loggingService) Like(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
97         defer func(begin time.Time) {
98                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
99                         "Like", id, time.Since(begin), err)
100         }(time.Now())
101         return s.Service.Like(ctx, client, c, id)
102 }
103
104 func (s *loggingService) UnLike(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
105         defer func(begin time.Time) {
106                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
107                         "UnLike", id, time.Since(begin), err)
108         }(time.Now())
109         return s.Service.UnLike(ctx, client, c, id)
110 }
111
112 func (s *loggingService) Retweet(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
113         defer func(begin time.Time) {
114                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
115                         "Retweet", id, time.Since(begin), err)
116         }(time.Now())
117         return s.Service.Retweet(ctx, client, c, id)
118 }
119
120 func (s *loggingService) UnRetweet(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
121         defer func(begin time.Time) {
122                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
123                         "UnRetweet", id, time.Since(begin), err)
124         }(time.Now())
125         return s.Service.UnRetweet(ctx, client, c, id)
126 }
127
128 func (s *loggingService) PostTweet(ctx context.Context, client io.Writer, c *mastodon.Client, content string, replyToID string, files []*multipart.FileHeader) (id string, err error) {
129         defer func(begin time.Time) {
130                 s.logger.Printf("method=%v, content=%v, reply_to_id=%v, took=%v, err=%v\n",
131                         "PostTweet", content, replyToID, time.Since(begin), err)
132         }(time.Now())
133         return s.Service.PostTweet(ctx, client, c, content, replyToID, files)
134 }
135
136 func (s *loggingService) Follow(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
137         defer func(begin time.Time) {
138                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
139                         "Follow", id, time.Since(begin), err)
140         }(time.Now())
141         return s.Service.Follow(ctx, client, c, id)
142 }
143
144 func (s *loggingService) UnFollow(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) {
145         defer func(begin time.Time) {
146                 s.logger.Printf("method=%v, id=%v, took=%v, err=%v\n",
147                         "UnFollow", id, time.Since(begin), err)
148         }(time.Now())
149         return s.Service.UnFollow(ctx, client, c, id)
150 }