Files
goldenChart/backend/src/main/java/com/goldenchart/controller/MobileAppReleaseController.java
T
2026-05-28 14:44:19 +09:00

44 lines
1.8 KiB
Java

package com.goldenchart.controller;
import com.goldenchart.dto.MobileAppReleaseInfoDto;
import com.goldenchart.service.MobileAppReleaseService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/mobile-app")
@RequiredArgsConstructor
public class MobileAppReleaseController {
private final MobileAppReleaseService releaseService;
@GetMapping("/info")
public MobileAppReleaseInfoDto info(HttpServletRequest request) {
return releaseService.getInfo(resolvePublicBaseUrl(request));
}
@GetMapping("/download/android")
public ResponseEntity<Resource> downloadAndroid() {
return releaseService.downloadAndroid();
}
private static String resolvePublicBaseUrl(HttpServletRequest request) {
String forwardedProto = request.getHeader("X-Forwarded-Proto");
String forwardedHost = request.getHeader("X-Forwarded-Host");
if (forwardedHost != null && !forwardedHost.isBlank()) {
String scheme = forwardedProto != null && !forwardedProto.isBlank() ? forwardedProto : "https";
return scheme + "://" + forwardedHost.split(",")[0].trim();
}
String scheme = request.getScheme();
int port = request.getServerPort();
String host = request.getServerName();
boolean defaultPort = ("http".equals(scheme) && port == 80) || ("https".equals(scheme) && port == 443);
return defaultPort ? scheme + "://" + host : scheme + "://" + host + ":" + port;
}
}