namespace Yw
|
{
|
/// <summary>
|
/// ViewToken
|
/// </summary>
|
public sealed partial class BIMFaceClient
|
{
|
private readonly Dictionary<string, string> _viewToken = new();//view token
|
private const string _viewTokenUrl = @"https://api.bimface.com/view/token";//视图令牌请求地址
|
private readonly ViewTokenExpireHelper _viewTokenExpireHelper = new();//view token 过期辅助类
|
|
/// <summary>
|
/// 获取ViewToken
|
/// </summary>
|
public async Task<string> GetViewToken(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId)
|
{
|
await GetAccessToken();
|
if (!_viewToken.ContainsKey(bimfaceId) || _viewTokenExpireHelper.IsExpire(bimfaceId))
|
{
|
await GetViewTokenAsync(bimfaceId, modelIdType);
|
}
|
return _viewToken[bimfaceId];
|
}
|
|
//获取AccessToken,内部调用
|
private async Task GetViewTokenAsync(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId)
|
{
|
var url = $"{_viewTokenUrl}?{modelIdType}={bimfaceId}";
|
var request = new FlurlRequest(url);
|
var header = HeaderHelper.GetHeader(_accessToken);
|
request.WithHeader(header.Key, header.Value);
|
var response = await request.GetAsync();
|
var jsonString = await response.GetStringAsync();
|
var result = JsonHelper.Json2Object<ViewTokenResponse>(jsonString);
|
result.TryThrowException();
|
if (_viewToken.ContainsKey(bimfaceId))
|
{
|
_viewToken[bimfaceId] = result.Data;
|
}
|
else
|
{
|
_viewToken.Add(bimfaceId, result.Data);
|
}
|
_viewTokenExpireHelper.SetExpireTime(bimfaceId);
|
}
|
|
|
|
}
|
}
|