All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.svws_nrw.api.client.APIAdminClient Maven / Gradle / Ivy

Go to download

Diese Bibliothek enthält die Java-Server-Definition der OpenApi-Schnittstelle für die Schulverwaltungssoftware in NRW

There is a newer version: 1.0.3
Show newest version
package de.svws_nrw.api.client;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import de.svws_nrw.api.ResourceFile;
import de.svws_nrw.api.ResourceFileManager;
import de.svws_nrw.db.utils.ApiOperationException;
import io.swagger.v3.oas.annotations.tags.Tag;

/**
 * Die Klasse spezifiziert die Schnittstelle für den Zugriff auf den SVWS-Admin-Client.
 */
@Path("/admin")
@Tag(name = "SVWSAdminClient")
public class APIAdminClient {


	/**
	 * Greift auf die einzelne Dateien aus dem Resource-Verzeichnis des SVWS-Admin-Clients zurück.
	 * Diese Resourcen wurden beim Start des SVWS-Server gecacht und stehen über die Klasse
	 * {@link ResourceFile} zur Verfügung.
	 *
	 * @param filename   der Name der zurückzugebenden Datei
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	private static Response getFile(final String filename) {
		try {
			final byte[] data = ResourceFileManager.admin().getData(filename);
			if ((data == null) || (data.length == 0))
				throw new ApiOperationException(Status.NOT_FOUND);
			return Response.ok(data).build();
		} catch (final ApiOperationException e) {
			return e.getResponse();
		}
	}


	/**
	 * Gibt die "index.html"-Datei für das angegebene Schema zurück.
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_HTML)
	@Path("/")
	public Response getClientRoot() {
		return getFile("index.html");
	}


	/**
	 * Gibt eine html-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".html"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_HTML)
	@Path("/{name}.html")
	public Response getClientHTML(@PathParam("name") final String name) {
		return getFile(name + ".html");
	}


	/**
	 * Gibt eine js-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/javascript")
	@Path("/{name}.js")
	public Response getClientfileJS(@PathParam("name") final String name) {
		return getFile(name + ".js");
	}


	/**
	 * Gibt eine js-Datei aus dem Ordner js zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/javascript")
	@Path("/js/{name}.js")
	public Response getClientFileJSSubdir(@PathParam("name") final String name) {
		return getFile("js/" + name + ".js");
	}


	/**
	 * Gibt eine js-Datei aus dem Ordner assets zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/javascript")
	@Path("/assets/{name}.js")
	public Response getClientFileAssetsSubdir(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".js");
	}


	/**
	 * Gibt eine js.map-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/{name}.js.map")
	public Response getClientFileJSMAP(@PathParam("name") final String name) {
		return getFile(name + ".js.map");
	}


	/**
	 * Gibt eine js.map-Datei aus dem Ordner js zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/js/{name}.js.map")
	public Response getClientFileJSMAPSubdir(@PathParam("name") final String name) {
		return getFile("js/" + name + ".js.map");
	}


	/**
	 * Gibt eine js.map-Datei aus dem Ordner assets zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".js.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/assets/{name}.js.map")
	public Response getClientFileAssetJSMAPSubdir(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".js.map");
	}


	/**
	 * Gibt eine css-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/css")
	@Path("/{name}.css")
	public Response getClientFileCSS(@PathParam("name") final String name) {
		return getFile(name + ".css");
	}


	/**
	 * Gibt eine css-Datei aus dem Ordner css zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/css")
	@Path("/css/{name}.css")
	public Response getClientFileCSSSubdir(@PathParam("name") final String name) {
		return getFile("css/" + name + ".css");
	}


	/**
	 * Gibt eine css-Datei aus dem Ordner assets zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/css")
	@Path("/assets/{name}.css")
	public Response getClientFileCSSAssetsSubdir(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".css");
	}


	/**
	 * Gibt eine css.map-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/{name}.css.map")
	public Response getClientFileCSSMAP(@PathParam("name") final String name) {
		return getFile(name + ".css.map");
	}


	/**
	 * Gibt eine css.map-Datei aus dem Ordner css zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/css/{name}.css.map")
	public Response getClientFileCSSMAPSubdir(@PathParam("name") final String name) {
		return getFile("css/" + name + ".css.map");
	}


	/**
	 * Gibt eine css.map-Datei aus dem Ordner assets zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css.map"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	@Path("/assets/{name}.css.map")
	public Response getClientFileAssetsCSSMAPSubdir(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".css.map");
	}


	/**
	 * Gibt eine css-Datei aus dem Ordner fonts zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".css"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("text/css")
	@Path("/fonts/{name}.css")
	public Response getClientFileFontsCSS(@PathParam("name") final String name) {
		return getFile("fonts/" + name + ".css");
	}


	/**
	 * Gibt eine woff2-Datei aus dem Ordner fonts zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".woff2"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("font/woff2")
	@Path("/fonts/{name}.woff2")
	public Response getClientFileFontsWoff2(@PathParam("name") final String name) {
		return getFile("fonts/" + name + ".woff2");
	}


	/**
	 * Gibt eine ico-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".ico"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/x-icon")
	@Path("/{name}.ico")
	public Response getClientFileICO(@PathParam("name") final String name) {
		return getFile(name + ".ico");
	}


	/**
	 * Gibt eine ico-Datei zurück, welche im Ordner assets in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".ico"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/x-icon")
	@Path("/assets/{name}.ico")
	public Response getClientFileAssetsICO(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".ico");
	}


	/**
	 * Gibt eine png-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".png"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/png")
	@Path("/{name}.png")
	public Response getClientFilePNG(@PathParam("name") final String name) {
		return getFile(name + ".png");
	}


	/**
	 * Gibt eine png-Datei aus dem Ordner "/img/icons" zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".png"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/png")
	@Path("/img/icons/{name}.png")
	public Response getClientFileImgIconsPNG(@PathParam("name") final String name) {
		return getFile("img/icons/" + name + ".png");
	}


	/**
	 * Gibt eine png-Datei aus dem Ordner "/assets" zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".png"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/png")
	@Path("/assets/{name}.png")
	public Response getClientFileAssetsPNG(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".png");
	}


	/**
	 * Gibt eine jpg-Datei aus dem Ordner "/assets" zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".jpg"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/jpeg")
	@Path("/assets/{name}.jpg")
	public Response getClientFileAssetsJPG(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".jpg");
	}


	/**
	 * Gibt eine svg-Datei zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".svg"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/svg+xml")
	@Path("/{name}.svg")
	public Response getClientFileSVG(@PathParam("name") final String name) {
		return getFile(name + ".svg");
	}


	/**
	 * Gibt eine svg-Datei aus dem Ordner "/assets" zurück, welche in den Ressourcen des SVWS-Clients vorhanden ist.
	 *
	 * @param name   der Name der Datei ohne ".svg"
	 *
	 * @return die HTTP-Response mit der Datei oder {@link Status#NOT_FOUND}, falls die Datei
	 *         nicht gefunden wurde
	 */
	@GET
	@Produces("image/svg+xml")
	@Path("/assets/{name}.svg")
	public Response getClientFileAssetsSVG(@PathParam("name") final String name) {
		return getFile("assets/" + name + ".svg");
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy