diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-01-09 21:24:50 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-01-09 21:31:36 -0500 |
commit | b5d5e0dbedee34bd5d3edf13616f055d4f227d36 (patch) | |
tree | d4353b88a830a29c570b0a54adcda2126427fc95 /worker/worker.go | |
parent | 6394e386c2a88c3b376cd422a7b7ce5ae7534984 (diff) | |
download | aerc-b5d5e0dbedee34bd5d3edf13616f055d4f227d36.tar.gz |
Parse account configuration
Diffstat (limited to 'worker/worker.go')
-rw-r--r-- | worker/worker.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/worker/worker.go b/worker/worker.go index 1f9f04c..a504790 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -3,6 +3,9 @@ package worker import ( "git.sr.ht/~sircmpwn/aerc2/worker/imap" "git.sr.ht/~sircmpwn/aerc2/worker/types" + + "fmt" + "net/url" ) type Worker interface { @@ -12,7 +15,18 @@ type Worker interface { } // Guesses the appropriate worker type based on the given source string -func NewWorker(source string) Worker { - // TODO: Do this properly - return imap.NewIMAPWorker() +func NewWorker(source string) (Worker, error) { + var ( + u *url.URL + err error + ) + if u, err = url.Parse(source); err != nil { + return nil, err + } + switch u.Scheme { + case "imap": + case "imaps": + return imap.NewIMAPWorker(), nil + } + return nil, fmt.Errorf("Unknown backend %s", u.Scheme) } |