diff options
Diffstat (limited to 'service/service.go')
-rw-r--r-- | service/service.go | 15 |
1 files changed, 13 insertions, 2 deletions
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) |