package googleapi

import (
	"encoding/base64"
	"fmt"
)

type MailAttachment struct {
	IsInline    bool
	ContentType string
	Filename    string
	Data        []byte
}

func (a MailAttachment) dump() []string {
	res := make([]string, 0, 4)

	if a.ContentType != "" {
		res = append(res, "Content-Type: "+a.ContentType+"; charset=UTF-8")
	}

	res = append(res, "Content-Transfer-Encoding: base64")

	if a.IsInline {
		if a.Filename != "" {
			res = append(res, fmt.Sprintf("Content-Disposition: inline;filename=\"%s\"", a.Filename))
		} else {
			res = append(res, "Content-Disposition: inline")
		}
	} else {
		if a.Filename != "" {
			res = append(res, fmt.Sprintf("Content-Disposition: attachment;filename=\"%s\"", a.Filename))
		} else {
			res = append(res, "Content-Disposition: attachment")
		}
	}

	b64 := base64.StdEncoding.EncodeToString(a.Data)
	for i := 0; i < len(b64); i += 80 {
		res = append(res, b64[i:min(i+80, len(b64))])
	}

	res = append(res)

	return res
}