public async Task <TokenResponse> RefreshAccessTokenAsync(string tenantName) { var tenant = (from item in _options.Tenants where item.Name == tenantName select item).FirstOrDefault(); if (tenant == null) { return(null); } var tokenClient = _httpClientFactory.CreateClient("tokenClient"); var document = await DiscoveryCache.GetAsync(); var tokenResonse = await tokenClient.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest() { Address = document.TokenEndpoint, ClientId = tenant.Credentials.ClientId, ClientSecret = tenant.Credentials.ClientSecret, }); TokenRecords[tenantName] = new TokenRecord { TokenResponse = tokenResonse, ClientCredential = tenant.Credentials, Expiration = DateTime.UtcNow.AddSeconds(tokenResonse.ExpiresIn - 300) // give a 5 minute skew. }; return(tokenResonse); }
public async Task <IResult> CreateTokenFromValueAsync(string tokenValue) { if (string.IsNullOrWhiteSpace(tokenValue)) { return(Result.Error("TOKEN_EMPTY", "Token cannot be empty")); } var tokenRecord = new TokenRecord { Id = Guid.NewGuid(), LastChangeDateTimeUtc = DateTime.UtcNow, Value = tokenValue }; try { await _semaphore.WaitAsync(); await _tokenRepository.InsertOneAsync(tokenRecord); return(Result.Ok); } catch (Exception ex) { return(Result.Error("EXCEPTION", ex.Message)); } finally { _semaphore.Release(); } }
public new static void LexicalAnalysis(List <TokenRecord> TokenList, string Code, ref int Index) { int intIndexCurrent = Index; //指向后一个字符 bool blnContinue = true; char chrTemp; string strTempWord; while (blnContinue && intIndexCurrent < Code.Length) { chrTemp = Code[intIndexCurrent]; if (char.IsDigit(chrTemp) || chrTemp.Equals('.')) { intIndexCurrent += 1; } else { blnContinue = false; } } //while strTempWord = Code.Substring(Index, intIndexCurrent - Index); //取得临时字符串 TokenRecord Token = ProduceToken(strTempWord, Index); TokenList.Add(Token); Index = intIndexCurrent - 1; //指针移到当前指针的前一位,然后赋值给循环指针 }
public new static void LexicalAnalysis(List <TokenRecord> TokenList, string Code, ref int Index) { string strTempWord; strTempWord = Code.Substring(Index, 1); TokenRecord Token = ProduceToken(strTempWord, Index); TokenList.Add(Token); }
public async Task CollectingGameService_WhenPlayersOrFursuitsHaveSameCollectionCount_ThenWhoeverAchievedItFirstRanksHigher() { var players = new RegSysIdentityRecord[3]; var tokens = new TokenRecord[3]; var fursuitBadges = new FursuitBadgeRecord[3]; // 3 players, each with suit for (int i = 0; i < 3; i++) { players[i] = await CreateRegSysIdentityAsync(); tokens[i] = await CreateTokenAsync(); fursuitBadges[i] = await CreateFursuitBadgeAsync(players[i].Uid); await _collectingGameService.RegisterTokenForFursuitBadgeForOwnerAsync( players[i].Uid, fursuitBadges[i].Id, tokens[i].Value); } // Each catches everyone else. for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (j == i) { continue; } var result = await _collectingGameService.CollectTokenForPlayerAsync( players[i].Uid, tokens[j].Value); Assert.True(result.IsSuccessful); } } var playerScoreboard = await _collectingGameService.GetPlayerScoreboardEntriesAsync(5); var fursuitScoreboard = await _collectingGameService.GetFursuitScoreboardEntriesAsync(5); // 1 catches first, then 2, then 3 Assert.Equal(3, playerScoreboard.Value.Length); Assert.True(playerScoreboard.Value.All(a => a.CollectionCount == 2)); Assert.Equal(players[0].Username, playerScoreboard.Value[0].Name); Assert.Equal(players[1].Username, playerScoreboard.Value[1].Name); Assert.Equal(players[2].Username, playerScoreboard.Value[2].Name); // 3 gets the 2 catches first (by 1 + 2), then 1 (by 2 + 3), then 2 Assert.Equal(3, fursuitScoreboard.Value.Length); Assert.True(fursuitScoreboard.Value.All(a => a.CollectionCount == 2)); Assert.Equal(fursuitBadges[2].Id, fursuitScoreboard.Value[0].BadgeId); Assert.Equal(fursuitBadges[0].Id, fursuitScoreboard.Value[1].BadgeId); Assert.Equal(fursuitBadges[1].Id, fursuitScoreboard.Value[2].BadgeId); }
private static void PopulateTokenRecord(TokenRecord record, int nameId) { record.InUse = true; record.NameId = nameId; record.SetCreated(); DynamicRecord dynamicRecord = new DynamicRecord(nameId); dynamicRecord.InUse = true; dynamicRecord.Data = new sbyte[10]; dynamicRecord.SetCreated(); record.AddNameRecord(dynamicRecord); }
public TokenRecord AddToken(string token, string tokenType, string state) { var result = new TokenRecord { Id = _nextId++, Token = token, TokenType = tokenType, TokenState = state }; _tokens.Add(result); return(result); }
private async Task <TokenRecord> CreateTokenAsync() { var id = Guid.NewGuid(); var record = new TokenRecord() { Id = id, Value = id.ToString() }; await _tokenRepository.InsertOneAsync(record); return(record); }
/// <summary> /// 分析语句并返回记号记录对象 /// </summary> /// <param name="Code">运算表达式</param> /// <returns>顶级TokenRecord对象</returns> public TokenRecord Analyse(string Code) { if (Code.Trim().Equals(string.Empty)) { return(null); } List <TokenRecord> ListToken = new List <TokenRecord>(); //TokenRecord列表 int intIndex = 0; //词法分析,将代码转换为TokenRecord列表 ComputeFieldTokenFactory.LexicalAnalysis(ListToken, Code, ref intIndex); //语法树分析,将Token列表按优先级转换为树 TokenRecord TokenTop = SyntaxTreeAnalyse.SyntaxTreeGetTopTokenAnalyse(ListToken, 0, ListToken.Count - 1); return(TokenTop); }
public async Task <TokenResponse> GetAccessTokenAsync(string tenant) { var nowUtc = DateTime.UtcNow; TokenRecord tokenRecord = null; if (TokenRecords.TryGetValue(tenant, out tokenRecord)) { var remaining = (tokenRecord.Expiration - nowUtc).TotalSeconds; if (remaining <= 0) { tokenRecord = null; } else { return(tokenRecord.TokenResponse); } } return(await RefreshAccessTokenAsync(tenant)); }
public async Task <TokenResponse> GetAccessTokenAsync() { lock (_accessLock) { var nowUtc = DateTime.UtcNow; if (CurrentTokenRecord != null) { var remaining = (CurrentTokenRecord.Expiration - nowUtc).TotalSeconds; if (remaining <= 0) { CurrentTokenRecord = null; } else { return(CurrentTokenRecord.TokenResponse); } } } return(await RefreshAccessTokenAsync()); }
public async Task <TokenResponse> RefreshAccessTokenAsync() { var document = await _discoveryCache.GetAsync(); var tokenClient = _httpClientFactory.CreateClient("tokenClient"); var tokenResonse = await tokenClient.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest() { Address = document.TokenEndpoint, ClientId = _tenant.Credentials.ClientId, ClientSecret = _tenant.Credentials.ClientSecret, }); lock (_accessLock) { CurrentTokenRecord = new TokenRecord { TokenResponse = tokenResonse, ClientCredential = _tenant.Credentials, Expiration = DateTime.UtcNow.AddSeconds(tokenResonse.ExpiresIn - 300) // give a 5 minute skew. }; return(tokenResonse); } }
internal TokenRecord FillProperties(TokenRecord record) { FillCommonProperties(record); record.Circulation = Receipt.NewTotalSupply; return(record); }
public TerminalNode(TokenRecord tokenRecord) { Lexeme = tokenRecord.Lexeme; Token = tokenRecord.Token; }