summary refs log tree commit diff stats
path: root/README
Commit message (Expand)AuthorAgeFilesLines
* Fixed bug #65 by adding flag "--fail-if-run"hut2010-04-261-1/+1
* README: Removed finished parts of roadmaphut2010-04-191-2/+0
* README: slightly improved Roadmaphut2010-04-131-1/+2
* README: added Roadmaphut2010-04-131-0/+18
* Fixed suggested cd-after-exit-script for zshhut2010-04-131-1/+1
* README: updatedhut2010-03-291-1/+1
* removed the cd-after-exit hackhut2010-03-291-0/+13
* README: Removed the reference to code/keys.rb >_<hut2010-03-291-2/+2
* incremented verison number v1.0.4hut2010-03-121-2/+2
* README: typohut2010-03-121-2/+2
* more documentationhut2010-03-121-3/+10
* README: slightly changed introductionhut2010-03-121-3/+3
* README: changed introductionhut2010-03-121-8/+10
* README: updatedhut2010-03-121-16/+19
* incremented version number and updated pydoc html files v1.0.3hut2010-02-161-2/+2
* readme: normalized letter casing in headingshut2010-02-151-2/+2
* updated READMEhut2010-02-151-29/+40
* made configuration more simplehut2010-01-251-6/+2
* README: corrected bad instructionshut2010-01-241-2/+2
* readme: improvedhut2010-01-201-6/+13
* 1.0.2! v1.0.2hut2010-01-141-2/+2
* readme: added part "customizing ranger"hut2010-01-141-0/+16
* readme: removed ugly sentencehut2010-01-141-3/+1
* new minor version v1.0.1hut2010-01-021-2/+2
* readme: updatedhut2010-01-011-4/+77
* decided to use python from now onhut2009-11-221-1/+1
* Initial commithut2009-11-161-0/+11
/ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
package imap

import (
	"github.com/emersion/go-imap"

	"git.sr.ht/~sircmpwn/aerc/models"
)

func toSeqSet(uids []uint32) *imap.SeqSet {
	var set imap.SeqSet
	for _, uid := range uids {
		set.AddNum(uid)
	}
	return &set
}

func translateBodyStructure(bs *imap.BodyStructure) *models.BodyStructure {
	if bs == nil {
		return nil
	}
	var parts []*models.BodyStructure
	for _, part := range bs.Parts {
		parts = append(parts, translateBodyStructure(part))
	}
	return &models.BodyStructure{
		MIMEType:          bs.MIMEType,
		MIMESubType:       bs.MIMESubType,
		Params:            bs.Params,
		Description:       bs.Description,
		Encoding:          bs.Encoding,
		Parts:             parts,
		Disposition:       bs.Disposition,
		DispositionParams: bs.DispositionParams,
	}
}

func translateEnvelope(e *imap.Envelope) *models.Envelope {
	if e == nil {
		return nil
	}
	return &models.Envelope{
		Date:      e.Date,
		Subject:   e.Subject,
		From:      translateAddresses(e.From),
		ReplyTo:   translateAddresses(e.ReplyTo),
		To:        translateAddresses(e.To),
		Cc:        translateAddresses(e.Cc),
		Bcc:       translateAddresses(e.Bcc),
		MessageId: e.MessageId,
	}
}

func translateAddress(a *imap.Address) *models.Address {
	if a == nil {
		return nil
	}
	return &models.Address{
		Name:    a.PersonalName,
		Mailbox: a.MailboxName,
		Host:    a.HostName,
	}
}

func translateAddresses(addrs []*imap.Address) []*models.Address {
	var converted []*models.Address
	for _, addr := range addrs {
		converted = append(converted, translateAddress(addr))
	}
	return converted
}

var flagMap = map[string]models.Flag{
	imap.SeenFlag:     models.SeenFlag,
	imap.RecentFlag:   models.RecentFlag,
	imap.AnsweredFlag: models.AnsweredFlag,
	imap.DeletedFlag:  models.DeletedFlag,
	imap.FlaggedFlag:  models.FlaggedFlag,
}

func translateFlags(imapFlags []string) []models.Flag {
	var flags []models.Flag
	for _, imapFlag := range imapFlags {
		if flag, ok := flagMap[imapFlag]; ok {
			flags = append(flags, flag)
		}
	}
	return flags
}