package de.micromata.borgbutler.server.rest;
|
|
import de.micromata.borgbutler.server.RunningMode;
|
import de.micromata.borgbutler.server.user.UserData;
|
import de.micromata.borgbutler.server.user.UserUtils;
|
import org.slf4j.Logger;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.ws.rs.core.Response;
|
import java.util.Locale;
|
|
public class RestUtils {
|
/**
|
* @return null, if the local app (JavaFX) is running and the request is from localhost. Otherwise message, why local
|
* service isn't available.
|
*/
|
public static String checkLocalDesktopAvailable(HttpServletRequest requestContext) {
|
if (RunningMode.getServerType() != RunningMode.ServerType.DESKTOP) {
|
return "Service unavailable. No desktop app on localhost available.";
|
}
|
String remoteAddr = requestContext.getRemoteAddr();
|
if (remoteAddr == null || !remoteAddr.equals("127.0.0.1")) {
|
return "Service not available. Can't call this service remote. Run this service on localhost of the running desktop app.";
|
}
|
return null;
|
}
|
|
/**
|
* @return Returns the user put by the UserFilter.
|
* @see UserUtils#getUser()
|
* @see de.micromata.borgbutler.server.user.UserFilter
|
*/
|
static UserData getUser() {
|
UserData user = UserUtils.getUser();
|
if (user == null) {
|
throw new IllegalStateException("No user given in rest call.");
|
}
|
return UserUtils.getUser();
|
}
|
|
static Locale getUserLocale(HttpServletRequest requestContext) {
|
UserData user = RestUtils.getUser();
|
Locale locale = user.getLocale();
|
if (locale == null) {
|
locale = requestContext.getLocale();
|
}
|
return locale;
|
}
|
|
static Response get404Response(Logger log, String errorMessage) {
|
log.error(errorMessage);
|
Response response = Response.status(404).
|
entity(errorMessage).
|
type("text/plain").
|
build();
|
return response;
|
}
|
}
|