package org.syncany.plugins.transfer.oauth; import java.io.InputStream; import org.apache.commons.io.IOUtils; import io.undertow.util.StatusCodes; /** * Factory class to generate some common {@link OAuthWebResponse}s. It uses html sites residing in the ressource folder, * but provides plain text fallbacks if a specific site cannot be read. * * @author Christian Roth <christian.roth@port17.de> */ public abstract class OAuthWebResponses { public static final String RESOURCE_DIR = "/org/syncany/plugins/oauth/"; /** * This {@link OAuthWebResponse} is used when a token was succesfully extracted. It uses <tt>ValidWebResponse.html</tt> which should be placed in * {@value #RESOURCE_DIR}. * * @return Either the parsed html file or a fallback string. */ public static OAuthWebResponse createValidResponse() { return new OAuthWebResponse(StatusCodes.OK, loadHtml("ValidWebResponse.html", "Token successfully extracted.")); } /** * This {@link OAuthWebResponse} is used when there was an error during the OAuth process. It uses <tt>BadRequestWebResponse.html</tt> which * should be placed in {@value #RESOURCE_DIR}. * * @return Either the parsed html file or a fallback string. */ public static OAuthWebResponse createBadResponse() { return new OAuthWebResponse(StatusCodes.BAD_REQUEST, loadHtml("BadRequestWebResponse.html", "Error while acquiring token.")); } private static String loadHtml(String fileName, String fallbackString) { String html = fallbackString; try (InputStream resource = OAuthWebResponses.class.getResourceAsStream(RESOURCE_DIR + fileName)) { html = IOUtils.toString(resource); } catch (Exception e) { // use fallback plain string } return html; } }