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

org.bitbucket.gkutiel.auth4j.App Maven / Gradle / Ivy

package org.bitbucket.gkutiel.auth4j;

import static com.mashape.unirest.http.Unirest.get;
import static com.mashape.unirest.http.Unirest.post;
import static org.apache.http.HttpHeaders.ACCEPT;
import static org.apache.http.entity.ContentType.APPLICATION_JSON;
import static org.slf4j.LoggerFactory.getLogger;
import org.bitbucket.gkutiel.auth4j.Fetch.AccessToken;
import org.slf4j.Logger;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.mashape.unirest.request.HttpRequest;

public interface App {
	Logger log = getLogger(App.class);
	Gson gson = new Gson();

	default HttpRequest accessToken(final String code) {
		//@formatter:off
		return
			post(accessTokenUrl())
			.header(ACCEPT, APPLICATION_JSON.getMimeType())
			.field("code", code)
			.field("client_id", appId())
			.field("client_secret", appSecret())
			.field("redirect_uri", redirectUrl())
			.field("grant_type", "authorization_code")
			.getHttpRequest()
			;
		//@formatter:on
	}

	String accessTokenUrl();
	String appId();
	String appSecret();

	default HttpRequest loginDialog() {
		//@formatter:off
		return
			get(loginBaseUrl())
			.queryString("client_id", appId())
			.queryString("redirect_uri", redirectUrl())
			.queryString("response_type", "code")
			.queryString("state", "of the art")
			;
		//@formatter:on
	}

	String loginBaseUrl();

	default AccessToken parseAccessToken(final String accessToken) {
		try {
			return gson.fromJson(accessToken, AccessToken.class);
		} catch (final JsonSyntaxException e) {
			log.error(e.getMessage(), e);
			return null;
		}
	}

	String redirectUrl();
	default HttpRequest updateLoginDialogReq(final HttpRequest req) {
		return req;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy