-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathstorage.go
45 lines (33 loc) · 1.69 KB
/
storage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package niso
import "context"
// Storage is a backend used to persist data generated by the OAuth2 server
type Storage interface {
// Close the resources the Storage potentially holds. (Implements io.Closer)
Close() error
// GetClientData fetches the data for a ClientData by id
// Should return NotFoundError, so an EInvalidClient error will be returned instead of EServerError
GetClientData(ctx context.Context, id string) (*ClientData, error)
// GetAuthorizeData looks up AuthorizationData by a code.
//// ClientData information MUST be loaded together.
// Optionally can return error if expired.
GetAuthorizeData(ctx context.Context, code string) (*AuthorizationData, error)
// SaveAuthorizeData saves authorize data.
SaveAuthorizeData(ctx context.Context, data *AuthorizationData) error
// DeleteAuthorizeData revokes or deletes the authorization code.
DeleteAuthorizeData(ctx context.Context, code string) error
// SaveAccessData writes AccessData to storage.
SaveAccessData(ctx context.Context, data *AccessData) error
// GetRefreshTokenData retrieves refresh token data from the token string.
GetRefreshTokenData(ctx context.Context, token string) (*RefreshTokenData, error)
// SaveRefreshTokenData saves refresh token data so it can be retrieved with GetRefreshTokenData
SaveRefreshTokenData(ctx context.Context, data *RefreshTokenData) error
// DeleteRefreshTokenData revokes or deletes a RefreshToken.
DeleteRefreshTokenData(ctx context.Context, token string) error
}
// NotFoundError can be used to differentiate between internal server errors and an entity not existing in storage.
type NotFoundError struct {
Err error
}
func (e *NotFoundError) Error() string {
return e.Err.Error()
}