diff --git a/imap/imap.go b/imap/imap.go index d13cc4a..b0b919b 100644 --- a/imap/imap.go +++ b/imap/imap.go @@ -4,52 +4,12 @@ import ( "errors" imapbackend "github.com/emersion/go-imap/backend" - "golang.org/x/crypto/openpgp" "github.com/emersion/hydroxide/auth" - "github.com/emersion/hydroxide/protonmail" ) var errNotYetImplemented = errors.New("not yet implemented") -type user struct { - username string - c *protonmail.Client - u *protonmail.User - privateKeys openpgp.EntityList -} - -func (u *user) Username() string { - return u.username -} - -func (u *user) ListMailboxes(subscribed bool) ([]imapbackend.Mailbox, error) { - return nil, errNotYetImplemented // TODO -} - -func (u *user) GetMailbox(name string) (imapbackend.Mailbox, error) { - return nil, errNotYetImplemented // TODO -} - -func (u *user) CreateMailbox(name string) error { - return errNotYetImplemented // TODO -} - -func (u *user) DeleteMailbox(name string) error { - return errNotYetImplemented // TODO -} - -func (u *user) RenameMailbox(existingName, newName string) error { - return errNotYetImplemented // TODO -} - -func (u *user) Logout() error { - u.c = nil - u.u = nil - u.privateKeys = nil - return nil -} - type backend struct { sessions *auth.Manager } diff --git a/imap/mailbox.go b/imap/mailbox.go new file mode 100644 index 0000000..873675c --- /dev/null +++ b/imap/mailbox.go @@ -0,0 +1,55 @@ +package imap + +import ( + "time" + + "github.com/emersion/go-imap" +) + +type mailbox struct { + name string +} + +func (mbox *mailbox) Name() string { + return mbox.name +} + +func (mbox *mailbox) Info() (*imap.MailboxInfo, error) { + return nil, errNotYetImplemented // TODO +} + +func (mbox *mailbox) Status(items []imap.StatusItem) (*imap.MailboxStatus, error) { + return nil, errNotYetImplemented // TODO +} + +func (mbox *mailbox) SetSubscribed(subscribed bool) error { + return errNotYetImplemented // TODO +} + +func (mbox *mailbox) Check() error { + return nil +} + +func (mbox *mailbox) ListMessages(uid bool, seqset *imap.SeqSet, items []imap.FetchItem, ch chan<- *imap.Message) error { + return errNotYetImplemented // TODO +} + +func (mbox *mailbox) SearchMessages(uid bool, criteria *imap.SearchCriteria) ([]uint32, error) { + return nil, errNotYetImplemented // TODO +} + +func (mbox *mailbox) CreateMessage(flags []string, date time.Time, body imap.Literal) error { + return errNotYetImplemented // TODO +} + +func (mbox *mailbox) UpdateMessagesFlags(uid bool, seqset *imap.SeqSet, operation imap.FlagsOp, flags []string) error { + return errNotYetImplemented // TODO +} + +func (mbox *mailbox) CopyMessages(uid bool, seqset *imap.SeqSet, dest string) error { + return errNotYetImplemented // TODO +} + +func (mbox *mailbox) Expunge() error { + return errNotYetImplemented // TODO +} diff --git a/imap/user.go b/imap/user.go new file mode 100644 index 0000000..d73c448 --- /dev/null +++ b/imap/user.go @@ -0,0 +1,46 @@ +package imap + +import ( + "golang.org/x/crypto/openpgp" + imapbackend "github.com/emersion/go-imap/backend" + + "github.com/emersion/hydroxide/protonmail" +) + +type user struct { + username string + c *protonmail.Client + u *protonmail.User + privateKeys openpgp.EntityList +} + +func (u *user) Username() string { + return u.username +} + +func (u *user) ListMailboxes(subscribed bool) ([]imapbackend.Mailbox, error) { + return nil, errNotYetImplemented // TODO +} + +func (u *user) GetMailbox(name string) (imapbackend.Mailbox, error) { + return &mailbox{}, errNotYetImplemented // TODO +} + +func (u *user) CreateMailbox(name string) error { + return errNotYetImplemented // TODO +} + +func (u *user) DeleteMailbox(name string) error { + return errNotYetImplemented // TODO +} + +func (u *user) RenameMailbox(existingName, newName string) error { + return errNotYetImplemented // TODO +} + +func (u *user) Logout() error { + u.c = nil + u.u = nil + u.privateKeys = nil + return nil +}