imap: add mailbox stub

This commit is contained in:
emersion 2017-12-03 15:08:30 +01:00
parent 00542af08d
commit e7302dd4c4
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
3 changed files with 101 additions and 40 deletions

View File

@ -4,52 +4,12 @@ import (
"errors" "errors"
imapbackend "github.com/emersion/go-imap/backend" imapbackend "github.com/emersion/go-imap/backend"
"golang.org/x/crypto/openpgp"
"github.com/emersion/hydroxide/auth" "github.com/emersion/hydroxide/auth"
"github.com/emersion/hydroxide/protonmail"
) )
var errNotYetImplemented = errors.New("not yet implemented") 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 { type backend struct {
sessions *auth.Manager sessions *auth.Manager
} }

55
imap/mailbox.go Normal file
View File

@ -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
}

46
imap/user.go Normal file
View File

@ -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
}