package org.molgenis.genetics.diag.genenetwork;
import org.molgenis.ui.MolgenisPluginController;
import org.molgenis.ui.menu.MenuReaderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import static org.molgenis.genetics.diag.genenetwork.AppController.URI;
import static org.molgenis.security.core.utils.SecurityUtils.getCurrentUsername;
@Controller
@RequestMapping(URI + "/**")
public class AppController extends MolgenisPluginController
{
public static final String GN_APP = "genetics-diag-app";
public static final String URI = PLUGIN_URI_PREFIX + GN_APP;
private static final String API_URI = "/api/";
private final MenuReaderService menuReaderService;
@Autowired
public AppController(MenuReaderService menuReaderService)
{
super(URI);
this.menuReaderService = menuReaderService;
}
private static String getApiUrl(HttpServletRequest request)
{
String apiUrl;
if (StringUtils.isEmpty(request.getHeader("X-Forwarded-Host")))
{
apiUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getLocalPort() + API_URI;
}
else
{
apiUrl = request.getScheme() + "://" + request.getHeader("X-Forwarded-Host") + API_URI;
}
return apiUrl;
}
private String getBaseUrl()
{
return menuReaderService.getMenu().findMenuItemPath(AppController.GN_APP);
}
@RequestMapping(method = RequestMethod.GET)
public String init(HttpServletRequest request, Model model)
{
model.addAttribute("username", getCurrentUsername());
model.addAttribute("apiUrl", getApiUrl(request));
model.addAttribute("baseUrl", getBaseUrl());
return "view-gn-app";
}
}