コード例 #1
0
        public UserAccess GetUserAccess(CloudIdentity identity, bool forceCacheRefresh = false)
        {
            if (identity == null)
            {
                identity = _defaultIdentity;
            }

            var rackspaceCloudIdentity = identity as RackspaceCloudIdentity;

            if (rackspaceCloudIdentity == null)
            {
                rackspaceCloudIdentity = new RackspaceCloudIdentity(identity);
            }

            var userAccess = _userAccessCache.Get(string.Format("{0}/{1}", rackspaceCloudIdentity.CloudInstance, rackspaceCloudIdentity.Username), () =>
            {
                var auth     = AuthRequest.FromCloudIdentity(identity);
                var response = ExecuteRESTRequest <AuthenticationResponse>(identity, "/v2.0/tokens", HttpMethod.POST, auth, isTokenRequest: true);


                if (response == null || response.Data == null || response.Data.UserAccess == null || response.Data.UserAccess.Token == null)
                {
                    return(null);
                }

                return(response.Data.UserAccess);
            }, forceCacheRefresh);

            return(userAccess);
        }