duheng
2024-12-05 a31a34e7bf37b4ac3b75d43f2d64b90594d27374
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);
        }
 
 
 
    }
}