## Description - db integration Co-authored-by: hitanshu310 <hitanshu98@gmail.com> Co-authored-by: = <=> Co-authored-by: Kruti Shah <kruti@logiqids.com> Reviewed-on: #96 Co-authored-by: Kruti Shah <krutis0201@gmail.com> Co-committed-by: Kruti Shah <krutis0201@gmail.com> Reviewed-on: #98 Reviewed-by: hitanshu <hitanshu98@gmail.com> Co-authored-by: Kruti Shah <krutis0201@gmail.com> Co-committed-by: Kruti Shah <krutis0201@gmail.com>
72 lines
2.5 KiB
Java
72 lines
2.5 KiB
Java
package com.hithomelabs.CFTunnels.Services;
|
|
|
|
import com.hithomelabs.CFTunnels.Entity.Mapping;
|
|
import com.hithomelabs.CFTunnels.Entity.Request;
|
|
import com.hithomelabs.CFTunnels.Entity.Tunnel;
|
|
import com.hithomelabs.CFTunnels.Entity.User;
|
|
import com.hithomelabs.CFTunnels.Models.Ingress;
|
|
import com.hithomelabs.CFTunnels.Repositories.MappingRepository;
|
|
import com.hithomelabs.CFTunnels.Repositories.RequestRepository;
|
|
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
|
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
@Service
|
|
public class MappingRequestService {
|
|
|
|
@Autowired
|
|
UserRepository userRepository;
|
|
|
|
@Autowired
|
|
MappingRepository mappingRepository;
|
|
|
|
@Autowired
|
|
RequestRepository requestRepository;
|
|
|
|
@Autowired
|
|
TunnelRepository tunnelRepository;
|
|
|
|
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
|
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
|
Mapping mapping = createMappingFromTunnelIngress(tunnel, ingress);
|
|
return mappingRepository.save(mapping);
|
|
}
|
|
|
|
public Request createRequest(Mapping mapping, User user){
|
|
Request request = new Request();
|
|
request.setMapping(mapping);
|
|
request.setCreatedBy(user);
|
|
request.setStatus(Request.RequestStatus.PENDING);
|
|
return requestRepository.save(request);
|
|
}
|
|
|
|
public Request createMappingRequest(String tunnelId, Ingress ingress, OidcUser oidcUser){
|
|
User user = userRepository.findByEmail(oidcUser.getEmail()).orElseGet(()-> mapUser(oidcUser));
|
|
Mapping mapping = createMapping(UUID.fromString(tunnelId), ingress);
|
|
return createRequest(mapping, user);
|
|
}
|
|
|
|
public User mapUser(OidcUser oidcUser){
|
|
String email = oidcUser.getEmail();
|
|
String name = oidcUser.getNickName();
|
|
User user = new User();
|
|
user.setEmail(email);
|
|
user.setName(name);
|
|
userRepository.save(user);
|
|
return user;
|
|
}
|
|
|
|
public Mapping createMappingFromTunnelIngress(Tunnel tunnel, Ingress ingress){
|
|
Mapping mapping = new Mapping();
|
|
mapping.setTunnel(tunnel);
|
|
mapping.setPort(Integer.parseInt(ingress.getService().split(":")[2]));
|
|
mapping.setSubdomain(ingress.getHostname().split("\\.")[0]);
|
|
return mapping;
|
|
}
|
|
}
|