123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package auth
- import (
- "context"
- "google.golang.org/grpc/metadata"
- )
- // A Credential is used to authenticate.
- type Credential struct {
- App string
- Token string
- }
- // GetRequestMetadata gets the request metadata.
- func (c *Credential) GetRequestMetadata(context.Context, ...string) (map[string]string, error) {
- return map[string]string{
- appKey: c.App,
- tokenKey: c.Token,
- }, nil
- }
- // RequireTransportSecurity always returns false.
- func (c *Credential) RequireTransportSecurity() bool {
- return false
- }
- // ParseCredential parses credential from given ctx.
- func ParseCredential(ctx context.Context) Credential {
- var credential Credential
- md, ok := metadata.FromIncomingContext(ctx)
- if !ok {
- return credential
- }
- apps, tokens := md[appKey], md[tokenKey]
- if len(apps) == 0 || len(tokens) == 0 {
- return credential
- }
- app, token := apps[0], tokens[0]
- if len(app) == 0 || len(token) == 0 {
- return credential
- }
- credential.App = app
- credential.Token = token
- return credential
- }
|