private async Task RefreshTokens(CancellationToken cancellationToken) { _log.LogInformation("Refreshing Tokens"); var mappings = await _mappingStorage.GetAllMappings(cancellationToken); foreach (var mapping in mappings) { try { var externalToken = await RenewExternalToken(mapping, cancellationToken); if (!mapping.PEXExternalAPIToken.Equals(externalToken, StringComparison.InvariantCultureIgnoreCase)) { mapping.PEXExternalAPIToken = externalToken; mapping.LastRenewedUtc = DateTime.UtcNow; await _mappingStorage.UpdateAsync(mapping, cancellationToken); } if (!_inUseExternalApiTokens.Contains(mapping.PEXExternalAPIToken)) { _inUseExternalApiTokens.Add(mapping.PEXExternalAPIToken); } } catch (Exception ex) { _log.LogError(ex, $"Exception during renew external token for business {mapping.PEXBusinessAcctId}. {ex}"); } } }
public async Task <ActionResult> CreateAplosToken(string sessionId, [FromBody] AplosTokenRequestModel model, CancellationToken cancellationToken) { if (!Guid.TryParse(sessionId, out var sessionGuid)) { return(BadRequest()); } PexOAuthSessionModel session = await _pexOAuthSessionStorage.GetBySessionGuidAsync(sessionGuid, cancellationToken); if (session == null) { return(Unauthorized()); } Pex2AplosMappingModel mapping = await _pex2AplosMappingStorage.GetByBusinessAcctIdAsync(session.PEXBusinessAcctId, cancellationToken); if (!string.IsNullOrWhiteSpace(model.AplosClientId)) { mapping.AplosClientId = model.AplosClientId; } if (!string.IsNullOrWhiteSpace(model.AplosPrivateKey)) { mapping.AplosPrivateKey = model.AplosPrivateKey; } bool result = await _aplosIntegrationService.ValidateAplosApiCredentials(mapping, cancellationToken); if (!result) { return(BadRequest()); } await _pex2AplosMappingStorage.UpdateAsync(mapping, cancellationToken); return(Ok()); }
public async Task <IActionResult> SaveSettings(string sessionId, [FromBody] MappingSettingsModel settings, CancellationToken cancellationToken) { if (!Guid.TryParse(sessionId, out var sessionGuid)) { return(BadRequest()); } var session = await _pexOAuthSessionStorage.GetBySessionGuidAsync(sessionGuid, cancellationToken); if (session == null) { return(Unauthorized()); } var pexAcctId = session.PEXBusinessAcctId; var mapping = await _pex2AplosMappingStorage.GetByBusinessAcctIdAsync(pexAcctId, cancellationToken); mapping.UpdateFromSettings(settings); await _pex2AplosMappingStorage.UpdateAsync(mapping, cancellationToken); return(Ok()); }