44 lines
1.8 KiB
Java
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;
|
|
}
|
|
}
|