added login logic excl refresh call
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user