aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/emersion/go-imap/responses/enabled.go
diff options
context:
space:
mode:
authorJordan <me@jordan.im>2023-02-04 23:54:03 -0700
committerJordan <me@jordan.im>2023-02-04 23:54:03 -0700
commitc4159d895ac399ca55326f7b4ff8bfbf8402e654 (patch)
tree45340ca429c16f683b375695d01e03d65ebf22b0 /vendor/github.com/emersion/go-imap/responses/enabled.go
downloadpigeon-c4159d895ac399ca55326f7b4ff8bfbf8402e654.tar.gz
pigeon-c4159d895ac399ca55326f7b4ff8bfbf8402e654.zip
initial commit
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)
+}