CFTunnels/src/main/java/com/hithomelabs/CFTunnels/Services/MappingRequestService.java
Kruti Shah 742bcef858
Some checks failed
Promote image with tag test to prod / tag (push) Successful in 6s
Promote image with tag test to prod / build_tag_push (push) Successful in 13s
Daily cloudflare API integration test / cloudflare-api-test (push) Failing after 1m25s
ISSUE-33 (#96) (#98)
## 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>
2026-01-14 17:37:15 +00:00

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;
}
}