package com.github.scribejava.apis.service; import com.github.scribejava.apis.ImgurApi; import com.github.scribejava.core.builder.api.DefaultApi20; import com.github.scribejava.core.model.OAuth2AccessToken; import com.github.scribejava.core.model.OAuthConfig; import com.github.scribejava.core.model.OAuthConstants; import com.github.scribejava.core.model.OAuthRequest; import com.github.scribejava.core.oauth.OAuth20Service; public class ImgurOAuthServiceImpl extends OAuth20Service { public ImgurOAuthServiceImpl(DefaultApi20 api, OAuthConfig config) { super(api, config); } @Override protected OAuthRequest createAccessTokenRequest(String oauthVerifier) { final DefaultApi20 api = getApi(); final OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); final OAuthConfig config = getConfig(); request.addBodyParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addBodyParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); if (ImgurApi.isOob(config)) { request.addBodyParameter(OAuthConstants.GRANT_TYPE, "pin"); request.addBodyParameter("pin", oauthVerifier); } else { request.addBodyParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE); request.addBodyParameter(OAuthConstants.CODE, oauthVerifier); } return request; } @Override public void signRequest(OAuth2AccessToken accessToken, OAuthRequest request) { request.addHeader("Authorization", accessToken == null ? "Client-ID " + getConfig().getApiKey() : "Bearer " + accessToken.getAccessToken()); } }