mobile download
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user