github.com/timstclair/heapster@v0.20.0-alpha1/Godeps/_workspace/src/google.golang.org/appengine/user/oauth.go (about) 1 // Copyright 2012 Google Inc. All rights reserved. 2 // Use of this source code is governed by the Apache 2.0 3 // license that can be found in the LICENSE file. 4 5 package user 6 7 import ( 8 "golang.org/x/net/context" 9 10 "google.golang.org/appengine/internal" 11 pb "google.golang.org/appengine/internal/user" 12 ) 13 14 // CurrentOAuth returns the user associated with the OAuth consumer making this 15 // request. If the OAuth consumer did not make a valid OAuth request, or the 16 // scopes is non-empty and the current user does not have at least one of the 17 // scopes, this method will return an error. 18 func CurrentOAuth(c context.Context, scopes ...string) (*User, error) { 19 req := &pb.GetOAuthUserRequest{} 20 if len(scopes) != 1 || scopes[0] != "" { 21 // The signature for this function used to be CurrentOAuth(Context, string). 22 // Ignore the singular "" scope to preserve existing behavior. 23 req.Scopes = scopes 24 } 25 26 res := &pb.GetOAuthUserResponse{} 27 28 err := internal.Call(c, "user", "GetOAuthUser", req, res) 29 if err != nil { 30 return nil, err 31 } 32 return &User{ 33 Email: *res.Email, 34 AuthDomain: *res.AuthDomain, 35 Admin: res.GetIsAdmin(), 36 ID: *res.UserId, 37 ClientID: res.GetClientId(), 38 }, nil 39 } 40 41 // OAuthConsumerKey returns the OAuth consumer key provided with the current 42 // request. This method will return an error if the OAuth request was invalid. 43 func OAuthConsumerKey(c context.Context) (string, error) { 44 req := &pb.CheckOAuthSignatureRequest{} 45 res := &pb.CheckOAuthSignatureResponse{} 46 47 err := internal.Call(c, "user", "CheckOAuthSignature", req, res) 48 if err != nil { 49 return "", err 50 } 51 return *res.OauthConsumerKey, err 52 }