From e129ea922e6cbe8966f9a9f0b1c6c94401516c61 Mon Sep 17 00:00:00 2001 From: r Date: Sat, 14 Dec 2019 20:19:02 +0000 Subject: Add attachments support --- service/service.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'service/service.go') diff --git a/service/service.go b/service/service.go index 3bfb163..15dab5d 100644 --- a/service/service.go +++ b/service/service.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "io" + "mime/multipart" "net/http" "net/url" "path" @@ -36,7 +37,7 @@ type Service interface { 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) UnRetweet(ctx context.Context, client io.Writer, c *mastodon.Client, id string) (err error) - PostTweet(ctx context.Context, client io.Writer, c *mastodon.Client, content string, replyToID string) (id string, err error) + PostTweet(ctx context.Context, client io.Writer, c *mastodon.Client, content string, replyToID string, files []*multipart.FileHeader) (id string, err error) } type service struct { @@ -292,10 +293,20 @@ func (svc *service) UnRetweet(ctx context.Context, client io.Writer, c *mastodon return } -func (svc *service) PostTweet(ctx context.Context, client io.Writer, c *mastodon.Client, content string, replyToID string) (id string, err error) { +func (svc *service) PostTweet(ctx context.Context, client io.Writer, c *mastodon.Client, content string, replyToID string, files []*multipart.FileHeader) (id string, err error) { + var mediaIds []string + for _, f := range files { + a, err := c.UploadMediaFromMultipartFileHeader(ctx, f) + if err != nil { + return "", err + } + mediaIds = append(mediaIds, a.ID) + } + tweet := &mastodon.Toot{ Status: content, InReplyToID: replyToID, + MediaIDs: mediaIds, } s, err := c.PostStatus(ctx, tweet) -- cgit v1.2.3