diff --git a/message.go b/message.go index 629bdbd..02b68d6 100644 --- a/message.go +++ b/message.go @@ -285,3 +285,25 @@ func (c *Client) GetGroupedMessageCount(ctx context.Context) ([]MessageGroupCoun return res.Counts, nil } + +func (c *Client) SetExpirationTimeOnMessage(ctx context.Context, messageID string, expirationTime *int64) error { + return c.SetExpirationTimeOnMessages(ctx, []string{messageID}, expirationTime) +} + +func (c *Client) SetExpirationTimeOnMessages(ctx context.Context, messageIDs []string, expirationTime *int64) error { + if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) { + return r.SetBody(MessageExpireActionReq{ExpirationTime: expirationTime, IDs: messageIDs}).Put("/mail/v4/messages/expire") + }); err != nil { + return err + } + + return nil +} + +func (c *Client) RemoveExpirationTime(ctx context.Context, messageID string) error { + return c.SetExpirationTimeOnMessage(ctx, messageID, nil) +} + +func (c *Client) RemoveExpirationTimeFromMessages(ctx context.Context, messageIDs []string) error { + return c.SetExpirationTimeOnMessages(ctx, messageIDs, nil) +} diff --git a/message_types.go b/message_types.go index 4d5fe95..247b352 100644 --- a/message_types.go +++ b/message_types.go @@ -24,13 +24,14 @@ type MessageMetadata struct { BCCList []*mail.Address ReplyTos []*mail.Address - Flags MessageFlag - Time int64 - Size int - Unread Bool - IsReplied Bool - IsRepliedAll Bool - IsForwarded Bool + Flags MessageFlag + Time int64 + ExpirationTime *int64 + Size int + Unread Bool + IsReplied Bool + IsRepliedAll Bool + IsForwarded Bool NumAttachments int } @@ -70,6 +71,11 @@ type Message struct { type MessageFlag int64 +type MessageExpireActionReq struct { + IDs []string + ExpirationTime *int64 +} + const ( MessageFlagReceived MessageFlag = 1 << 0 MessageFlagSent MessageFlag = 1 << 1