Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cache capabilities and add capability?(name) #31

Closed
Tracked by #37 ...
nevans opened this issue Nov 23, 2021 · 0 comments · Fixed by #156
Closed
Tracked by #37 ...

cache capabilities and add capability?(name) #31

nevans opened this issue Nov 23, 2021 · 0 comments · Fixed by #156
Labels
IMAP4rev1 Requirement for IMAP4rev1, RFC3501

Comments

@nevans
Copy link
Collaborator

nevans commented Nov 23, 2021

The client should keep track of server CAPABILITY responses and response codes. And it should invalidate previously cached values at the appropriate times (e.g. after STARTTLS).

The base spec requires this: (e.g. #32 LOGINDISABLED, #48 AUTH=). And many other extensions require the client to keep track (e.g. #37 LITERAL-). And the parser will also need to be able to "enable" different behavior for some extensions (e.g.
BINARY, UTF8=ACCEPT, IMAPrev2).

@nevans nevans changed the title cache and add cache capabilities and add capability?(name) Nov 23, 2021
nevans added a commit that referenced this issue Jan 2, 2023
This simplifies caching of the server capabilities, as many servers will
send their capabilities inside the greeting.  Needed for #31.
nevans added a commit that referenced this issue Jan 6, 2023
This simplifies caching of the server capabilities, as many servers will
send their capabilities inside the greeting.  Needed for #31.
nevans added a commit that referenced this issue Jan 7, 2023
This simplifies caching of the server capabilities, as many servers will
send their capabilities inside the greeting.  Needed for #31.
nevans added a commit that referenced this issue Jan 8, 2023
This simplifies caching of the server capabilities, as many servers will
send their capabilities inside the greeting.  Needed for #31.
@nevans nevans added the IMAP4rev1 Requirement for IMAP4rev1, RFC3501 label Feb 12, 2023
nevans added a commit to nevans/net-imap that referenced this issue Jul 16, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#capabilities` - calls `capability` when needed
* `#cached_capabilities` - accessor for cache; never contacts server
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 17, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 17, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 17, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 17, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 19, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#auth_capable?(name)` - returns whether SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 20, 2023
Added methods:
* `#capable?(name)` - the main API for discovering capabilities
* `#auth_capable?(name)` - returns whether SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache; is thread safe

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 20, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 20, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 21, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 21, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Fixes ruby#31
nevans added a commit to nevans/net-imap that referenced this issue Jul 22, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Also, many docs related to capabilities wer reorganized and rewritten.

Fixes ruby#31.
nevans added a commit to nevans/net-imap that referenced this issue Jul 22, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Also, many docs related to capabilities were reorganized and rewritten.

Fixes ruby#31.
nevans added a commit to nevans/net-imap that referenced this issue Jul 22, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#capabilities` - calls `capability` when needed
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Also, many docs related to capabilities were reorganized and rewritten.

Fixes ruby#31.
nevans added a commit to nevans/net-imap that referenced this issue Jul 22, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#auth_mechanisms` - returns the server's supported SASL mechanisms
* `#capabilities` - cached version of `capability`
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Also, the docs related to capabilities were reorganized and rewritten.

Fixes ruby#31.
nevans added a commit to nevans/net-imap that referenced this issue Jul 22, 2023
Updated methods:
* `#initialize` - save capabilities in `OK` or `PREAUTH` greeting
* `#capability` - always update saved capabilities
* `#starttls` - always clear capabilities after tagged OK response
* `#authenticate` - clear capabilities or update from tagged OK response
* `#login` - clear capabilities or update from tagged OK response

New methods:
* `#capable?(name)` - the primary API for discovering capabilities
* `#auth_capable?(name)` - returns whether a SASL mechanism is supported
* `#auth_mechanisms` - returns the server's supported SASL mechanisms
* `#capabilities` - cached version of `capability`
* `#capabilities_cached?` - whether capabilities are cached
* `#clear_cached_capabilities` - clears the cache

Also, the docs related to capabilities were reorganized and rewritten.

Fixes ruby#31.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IMAP4rev1 Requirement for IMAP4rev1, RFC3501
Development

Successfully merging a pull request may close this issue.

1 participant