added login logic excl refresh call

This commit is contained in:
2026-04-06 05:02:46 +02:00
parent 9c3e1469c7
commit 240a366ce8
13 changed files with 589 additions and 46 deletions
@@ -8,24 +8,40 @@ import org.springframework.stereotype.Service;
import com.vaessl.app.dto.ConnectionRequest;
import com.vaessl.app.dto.ConnectionResponse;
import com.vaessl.app.exception.ProviderNotFoundException;
@Service
public class ConnectionService {
private final Map<String, ConnectionProvider> providerRegistry;
public ConnectionService(List<ConnectionProvider> providers) {
private final ConnectionRepository cRepository;
public ConnectionService(List<ConnectionProvider> providers, ConnectionRepository cRepository) {
this.providerRegistry = providers.stream()
.collect(Collectors.toMap(ConnectionProvider::getServiceType, p -> p));
this.cRepository = cRepository;
}
public ConnectionResponse login(ConnectionRequest request) {
ConnectionProvider provider = providerRegistry.get(request.serviceType().toUpperCase());
ConnectionProvider provider = providerRegistry.get(request.serviceType());
if (provider == null) {
throw new IllegalArgumentException("Unknown provider: " + request.serviceType());
throw new ProviderNotFoundException();
}
return provider.authenticate(request);
ConnectionResponse response = provider.authenticate(request);
ConnectionEntity existing = cRepository.findByAppUrl(request.appUrl());
if (existing != null) {
provider.updateToRepository(existing, response);
} else {
ConnectionEntity newEntity = provider.connectionToEntity(request, response);
cRepository.save(newEntity);
}
return response;
}
}