package controllers;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import models.FastSubject;
import models.User;
import models.Document;
import play.Logger;
import play.Play;
import play.mvc.Result;
import play.mvc.Security;
import uk.bl.db.DataImport;
import views.html.status.status;
import com.thesecretserver.PasswordManager;
@Security.Authenticated(SecuredController.class)
public class StatusController extends AbstractController {
public static Result status() {
return ok(status.render(User.findByEmail(request().username())));
}
public static Result addFastDefaultSubjects() {
DataImport.importFastSubjects();
return redirect(routes.StatusController.status());
}
public static boolean areThereFastSubjects() {
return FastSubject.find.findRowCount() > 0;
}
public static boolean isPdf2htmlEXAvailable() {
return isSiteResponding(getPdf2HtmlEndpoint());
}
public static boolean isWaybackResponding() {
return isSiteResponding(getWaybackEndpoint());
}
public static boolean isPiiResponding() {
return isSiteResponding(getPIIEndpoint());
}
public static boolean isOfficalPiiInstance() {
String arkRequest = getPIIEndpoint();
if(arkRequest != null){
String statusRequest = arkRequest.substring(0, arkRequest.lastIndexOf('/') + 1) + "status";
return isSiteResponding(statusRequest);
}else
return false;
}
public static String secretServerVersion() {
try {
return PasswordManager.versionGet();
} catch (Exception e) {
return null;
}
}
public static String getWaybackEndpoint() {
return WaybackController.getWaybackEndpoint();
}
public static String getPIIEndpoint() {
return Play.application().configuration().getString("pii_url");
}
public static String getSecretServerEndpoint() {
URL url = PasswordManager.getSecretServerEndpoint();
if( url == null ) return "";
return url.toString();
}
public static String getPdf2HtmlEndpoint() {
String url = Document.getPdf2HtmlEndpoint();
url = url.replace("convert?url=", "");
return url;
}
private static boolean isSiteResponding(String url) {
try {
URL obj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
connection.setRequestMethod("HEAD");
connection.setConnectTimeout(10*1000);
connection.setReadTimeout(10*1000);
return connection.getResponseCode() == 200;
} catch (IOException e) {
return false;
}
}
}