aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-imap/responses/enabled.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/emersion/go-imap/responses/enabled.go')
-rw-r--r--vendor/github.com/emersion/go-imap/responses/enabled.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/vendor/github.com/emersion/go-imap/responses/enabled.go b/vendor/github.com/emersion/go-imap/responses/enabled.go
new file mode 100644
index 0000000..fc4e27b
--- /dev/null
+++ b/vendor/github.com/emersion/go-imap/responses/enabled.go
@@ -0,0 +1,33 @@
+package responses
+
+import (
+ "github.com/emersion/go-imap"
+)
+
+// An ENABLED response, defined in RFC 5161 section 3.2.
+type Enabled struct {
+ Caps []string
+}
+
+func (r *Enabled) Handle(resp imap.Resp) error {
+ name, fields, ok := imap.ParseNamedResp(resp)
+ if !ok || name != "ENABLED" {
+ return ErrUnhandled
+ }
+
+ if caps, err := imap.ParseStringList(fields); err != nil {
+ return err
+ } else {
+ r.Caps = append(r.Caps, caps...)
+ }
+
+ return nil
+}
+
+func (r *Enabled) WriteTo(w *imap.Writer) error {
+ fields := []interface{}{imap.RawString("ENABLED")}
+ for _, cap := range r.Caps {
+ fields = append(fields, imap.RawString(cap))
+ }
+ return imap.NewUntaggedResp(fields).WriteTo(w)
+}