From d1d7587f4ed7766ac915402480d05c74a89f2474 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Thu, 18 Jul 2019 21:55:23 +0800 Subject: [PATCH] :twisted_rightwards_arrows: merge --- .../oauth/request/AuthPinterestRequest.java | 16 +++---- .../zhyd/oauth/request/AuthRenrenRequest.java | 13 ++--- .../request/AuthStackOverflowRequest.java | 16 +++---- .../oauth/url/AuthPinterestUrlBuilder.java | 48 ------------------- .../url/AuthStackOverflowUrlBuilder.java | 48 ------------------- .../java/me/zhyd/oauth/utils/UrlBuilder.java | 10 ++-- 6 files changed, 26 insertions(+), 125 deletions(-) delete mode 100644 src/main/java/me/zhyd/oauth/url/AuthPinterestUrlBuilder.java delete mode 100644 src/main/java/me/zhyd/oauth/url/AuthStackOverflowUrlBuilder.java diff --git a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java index f6bdcb7..ce00122 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthPinterestRequest.java @@ -9,8 +9,7 @@ import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; -import me.zhyd.oauth.url.AuthPinterestUrlBuilder; -import me.zhyd.oauth.url.entity.AuthUserInfoEntity; +import me.zhyd.oauth.utils.UrlBuilder; import java.util.Objects; @@ -26,13 +25,12 @@ import static me.zhyd.oauth.config.AuthSource.PINTEREST; public class AuthPinterestRequest extends AuthDefaultRequest { public AuthPinterestRequest(AuthConfig config) { - super(config, PINTEREST, new AuthPinterestUrlBuilder()); + super(config, PINTEREST); } @Override protected AuthToken getAccessToken(AuthCallback authCallback) { - String accessTokenUrl = this.urlBuilder.getAccessTokenUrl(authCallback.getCode()); - HttpResponse response = HttpRequest.post(accessTokenUrl).execute(); + HttpResponse response = doPostAuthorizationCode(authCallback.getCode()); JSONObject accessTokenObject = JSONObject.parseObject(response.body()); if (!response.isOk()) { throw new AuthException("Unable to get token from Pinterest using code [" + authCallback.getCode() + "]: " + accessTokenObject); @@ -46,10 +44,10 @@ public class AuthPinterestRequest extends AuthDefaultRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { - String accessToken = authToken.getAccessToken(); - HttpResponse response = HttpRequest.get(this.urlBuilder.getUserInfoUrl(AuthUserInfoEntity.builder() - .accessToken(accessToken) - .build())).execute(); + String userinfoUrl = UrlBuilder.fromBaseUrl(userInfoUrl(authToken)) + .queryParam("fields", "id,username,first_name,last_name,bio,image") + .build(); + HttpResponse response = HttpRequest.post(userinfoUrl).execute(); JSONObject userObj = JSONObject.parseObject(response.body()).getJSONObject("data"); return AuthUser.builder() diff --git a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java index 616b786..eb541cc 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthRenrenRequest.java @@ -1,15 +1,12 @@ package me.zhyd.oauth.request; +import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthCallback; -import me.zhyd.oauth.model.AuthResponse; -import me.zhyd.oauth.model.AuthToken; -import me.zhyd.oauth.model.AuthUser; -import me.zhyd.oauth.model.AuthUserGender; +import me.zhyd.oauth.model.*; import me.zhyd.oauth.utils.UrlBuilder; import java.util.Objects; @@ -32,14 +29,12 @@ public class AuthRenrenRequest extends AuthDefaultRequest { @Override protected AuthToken getAccessToken(AuthCallback authCallback) { - return getToken(this.urlBuilder.getAccessTokenUrl(authCallback.getCode())); + return this.getToken(accessTokenUrl(authCallback.getCode())); } @Override protected AuthUser getUserInfo(AuthToken authToken) { - HttpResponse response = doGetUserInfo(authToken); - JSONObject userObj = JSONObject.parseObject(response.body()).getJSONObject("response"); return AuthUser.builder() @@ -57,7 +52,7 @@ public class AuthRenrenRequest extends AuthDefaultRequest { public AuthResponse refresh(AuthToken authToken) { return AuthResponse.builder() .code(SUCCESS.getCode()) - .data(getToken(this.urlBuilder.getRefreshUrl(authToken.getRefreshToken()))) + .data(getToken(this.refreshTokenUrl(authToken.getRefreshToken()))) .build(); } diff --git a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java index be5c186..db9b3d7 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthStackOverflowRequest.java @@ -9,8 +9,7 @@ import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthToken; import me.zhyd.oauth.model.AuthUser; import me.zhyd.oauth.model.AuthUserGender; -import me.zhyd.oauth.url.AuthStackOverflowUrlBuilder; -import me.zhyd.oauth.url.entity.AuthUserInfoEntity; +import me.zhyd.oauth.utils.UrlBuilder; import static me.zhyd.oauth.config.AuthSource.STACK_OVERFLOW; import static me.zhyd.oauth.utils.GlobalAuthUtil.parseQueryToMap; @@ -25,12 +24,12 @@ import static me.zhyd.oauth.utils.GlobalAuthUtil.parseQueryToMap; public class AuthStackOverflowRequest extends AuthDefaultRequest { public AuthStackOverflowRequest(AuthConfig config) { - super(config, STACK_OVERFLOW, new AuthStackOverflowUrlBuilder()); + super(config, STACK_OVERFLOW); } @Override protected AuthToken getAccessToken(AuthCallback authCallback) { - String accessTokenUrl = this.urlBuilder.getAccessTokenUrl(authCallback.getCode()); + String accessTokenUrl = accessTokenUrl(authCallback.getCode()); HttpResponse response = HttpRequest.post(accessTokenUrl) .contentType("application/x-www-form-urlencoded") .form(parseQueryToMap(accessTokenUrl)) @@ -48,10 +47,11 @@ public class AuthStackOverflowRequest extends AuthDefaultRequest { @Override protected AuthUser getUserInfo(AuthToken authToken) { - String accessToken = authToken.getAccessToken(); - HttpResponse response = HttpRequest.get(this.urlBuilder.getUserInfoUrl(AuthUserInfoEntity.builder() - .accessToken(accessToken) - .build())).execute(); + String userInfoUrl = UrlBuilder.fromBaseUrl(userInfoUrl(authToken)) + .queryParam("site", "stackoverflow") + .queryParam("key", this.config.getStackOverflowKey()) + .build(); + HttpResponse response = HttpRequest.get(userInfoUrl).execute(); JSONObject userObj = JSONObject.parseObject(response.body()).getJSONArray("items").getJSONObject(0); return AuthUser.builder() diff --git a/src/main/java/me/zhyd/oauth/url/AuthPinterestUrlBuilder.java b/src/main/java/me/zhyd/oauth/url/AuthPinterestUrlBuilder.java deleted file mode 100644 index c321479..0000000 --- a/src/main/java/me/zhyd/oauth/url/AuthPinterestUrlBuilder.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.zhyd.oauth.url; - -import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponseStatus; -import me.zhyd.oauth.url.entity.AuthUserInfoEntity; - -import java.text.MessageFormat; - -import static me.zhyd.oauth.config.AuthSource.PINTEREST; - -/** - * Pinterest相关的URL构建类 - * - * @author hongwei.peng (pengisgood(at)gmail(dot)com) - * @version 1.9.0 - * @since 1.9.0 - */ -public class AuthPinterestUrlBuilder extends AuthDefaultUrlBuilder { - - private static final String PINTEREST_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&grant_type=authorization_code&code={3}"; - private static final String PINTEREST_USER_INFO_PATTERN = "{0}?access_token={1}&fields=id,username,first_name,last_name,bio,image"; - private static final String PINTEREST_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&state={3}&scope=read_public"; - - @Override - public String getAccessTokenUrl(String code) { - return MessageFormat.format(PINTEREST_ACCESS_TOKEN_PATTERN, PINTEREST.accessToken(), config.getClientId(), config.getClientSecret(), code); - } - - @Override - public String getUserInfoUrl(AuthUserInfoEntity userInfoEntity) { - return MessageFormat.format(PINTEREST_USER_INFO_PATTERN, PINTEREST.userInfo(), userInfoEntity.getAccessToken()); - } - - @Override - public String getAuthorizeUrl() { - return MessageFormat.format(PINTEREST_AUTHORIZE_PATTERN, PINTEREST.authorize(), config.getClientId(), config.getRedirectUri(), this.getRealState(config.getState())); - } - - @Override - public String getRefreshUrl(String refreshToken) { - throw new AuthException(AuthResponseStatus.UNSUPPORTED); - } - - @Override - public String getRevokeUrl(String accessToken) { - throw new AuthException(AuthResponseStatus.UNSUPPORTED); - } -} diff --git a/src/main/java/me/zhyd/oauth/url/AuthStackOverflowUrlBuilder.java b/src/main/java/me/zhyd/oauth/url/AuthStackOverflowUrlBuilder.java deleted file mode 100644 index 1498e98..0000000 --- a/src/main/java/me/zhyd/oauth/url/AuthStackOverflowUrlBuilder.java +++ /dev/null @@ -1,48 +0,0 @@ -package me.zhyd.oauth.url; - -import me.zhyd.oauth.exception.AuthException; -import me.zhyd.oauth.model.AuthResponseStatus; -import me.zhyd.oauth.url.entity.AuthUserInfoEntity; - -import java.text.MessageFormat; - -import static me.zhyd.oauth.config.AuthSource.STACK_OVERFLOW; - -/** - * Stack Overflow相关的URL构建类 - * - * @author hongwei.peng (pengisgood(at)gmail(dot)com) - * @version 1.9.0 - * @since 1.9.0 - */ -public class AuthStackOverflowUrlBuilder extends AuthDefaultUrlBuilder { - - private static final String SO_ACCESS_TOKEN_PATTERN = "{0}?client_id={1}&client_secret={2}&redirect_uri={3}&code={4}"; - private static final String SO_USER_INFO_PATTERN = "{0}?access_token={1}&site=stackoverflow&key={2}"; - private static final String SO_AUTHORIZE_PATTERN = "{0}?client_id={1}&response_type=code&redirect_uri={2}&state={3}"; - - @Override - public String getAccessTokenUrl(String code) { - return MessageFormat.format(SO_ACCESS_TOKEN_PATTERN, STACK_OVERFLOW.accessToken(), config.getClientId(), config.getClientSecret(), config.getRedirectUri(), code); - } - - @Override - public String getUserInfoUrl(AuthUserInfoEntity userInfoEntity) { - return MessageFormat.format(SO_USER_INFO_PATTERN, STACK_OVERFLOW.userInfo(), userInfoEntity.getAccessToken(), config.getStackOverflowKey()); - } - - @Override - public String getAuthorizeUrl() { - return MessageFormat.format(SO_AUTHORIZE_PATTERN, STACK_OVERFLOW.authorize(), config.getClientId(), config.getRedirectUri(), this.getRealState(config.getState())); - } - - @Override - public String getRefreshUrl(String refreshToken) { - throw new AuthException(AuthResponseStatus.UNSUPPORTED); - } - - @Override - public String getRevokeUrl(String accessToken) { - throw new AuthException(AuthResponseStatus.UNSUPPORTED); - } -} diff --git a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java index 34a48bd..11fb1c4 100644 --- a/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java +++ b/src/main/java/me/zhyd/oauth/utils/UrlBuilder.java @@ -3,7 +3,7 @@ package me.zhyd.oauth.utils; import cn.hutool.core.lang.Assert; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; -import lombok.Data; +import lombok.Setter; import java.util.LinkedHashMap; import java.util.Map; @@ -16,11 +16,15 @@ import java.util.Map; * @author yangkai.shen (https://xkcoding.com) * @date Created in 2019-07-18 15:47 */ -@Data +@Setter public class UrlBuilder { - private String baseUrl; private final Map params = new LinkedHashMap<>(4); + private String baseUrl; + + private UrlBuilder() { + + } /** * @param baseUrl 基础路径 -- GitLab