本文整理汇总了C#中net.openstack.Core.Domain.CloudIdentity.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# CloudIdentity.GetType方法的具体用法?C# CloudIdentity.GetType怎么用?C# CloudIdentity.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.openstack.Core.Domain.CloudIdentity
的用法示例。
在下文中一共展示了CloudIdentity.GetType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetUserAccess
/// <inheritdoc/>
public override UserAccess GetUserAccess(CloudIdentity identity, bool forceCacheRefresh = false)
{
if (identity == null)
throw new ArgumentNullException("identity");
CloudIdentityWithProject identityWithProject = identity as CloudIdentityWithProject;
if (identityWithProject == null)
{
if (identity.GetType() != typeof(CloudIdentity))
throw new NotSupportedException(string.Format("{0} does not support credentials of type {1}", GetType().Name, identity.GetType().Name));
}
Func<UserAccess> refreshCallback =
() =>
{
JObject credentialsObject;
if (!string.IsNullOrEmpty(identity.APIKey))
{
credentialsObject = new JObject(
new JProperty("apiAccessKeyCredentials", new JObject(
new JProperty("accessKey", identity.APIKey),
new JProperty("secretKey", identity.Password))));
}
else
{
credentialsObject = new JObject(
new JProperty("passwordCredentials", new JObject(
new JProperty("username", identity.Username),
new JProperty("password", identity.Password))));
}
JObject authObject = new JObject(credentialsObject);
if (identityWithProject != null && identityWithProject.ProjectId != null)
authObject.Add("tenantId", JToken.FromObject(identityWithProject.ProjectId));
if (identityWithProject != null && !string.IsNullOrEmpty(identityWithProject.ProjectName))
authObject.Add("tenantName", JToken.FromObject(identityWithProject.ProjectName));
JObject requestBody = new JObject(
new JProperty("auth", authObject));
var response = ExecuteRESTRequest<JObject>(identity, new Uri(UrlBase, "/v2.0/tokens"), HttpMethod.POST, requestBody, isTokenRequest: true);
if (response == null || response.Data == null)
return null;
JToken userAccessObject = response.Data["access"];
if (userAccessObject == null)
return null;
UserAccess access = userAccessObject.ToObject<UserAccess>();
if (access == null || access.Token == null)
return null;
return access;
};
string key = string.Format("{0}:{1}/{2}/{3}/{4}", UrlBase, identityWithProject != null ? identityWithProject.ProjectId : null, identity.Username, identity.APIKey, identity.Password);
var userAccess = TokenCache.Get(key, refreshCallback, forceCacheRefresh);
return userAccess;
}