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  }