github.com/amlun/go-oauth2-server@v1.0.1/web/context.go (about) 1 package web 2 3 import ( 4 "errors" 5 "net/http" 6 7 "github.com/RichardKnop/go-oauth2-server/models" 8 "github.com/RichardKnop/go-oauth2-server/session" 9 "github.com/gorilla/context" 10 ) 11 12 type contextKey int 13 14 const ( 15 sessionServiceKey contextKey = 0 16 clientKey contextKey = 1 17 ) 18 19 var ( 20 // ErrSessionServiceNotPresent ... 21 ErrSessionServiceNotPresent = errors.New("Session service not present in the request context") 22 // ErrClientNotPresent ... 23 ErrClientNotPresent = errors.New("Client not present in the request context") 24 ) 25 26 // Returns *session.Service from the request context 27 func getSessionService(r *http.Request) (session.ServiceInterface, error) { 28 val, ok := context.GetOk(r, sessionServiceKey) 29 if !ok { 30 return nil, ErrSessionServiceNotPresent 31 } 32 33 sessionService, ok := val.(session.ServiceInterface) 34 if !ok { 35 return nil, ErrSessionServiceNotPresent 36 } 37 38 return sessionService, nil 39 } 40 41 // Returns *oauth.Client from the request context 42 func getClient(r *http.Request) (*models.OauthClient, error) { 43 val, ok := context.GetOk(r, clientKey) 44 if !ok { 45 return nil, ErrClientNotPresent 46 } 47 48 client, ok := val.(*models.OauthClient) 49 if !ok { 50 return nil, ErrClientNotPresent 51 } 52 53 return client, nil 54 }