Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.alipay.v3.util.GenericExecuteApi Maven / Gradle / Ivy
/**
* Alipay.com Inc.
* Copyright (c) 2004-2022 All Rights Reserved.
*/
package com.alipay.v3.util;
import com.alipay.v3.*;
import com.alipay.v3.util.model.CustomizedParams;
import com.alipay.v3.util.model.OpenApiGenericRequest;
import com.google.common.base.Strings;
import com.google.gson.reflect.TypeToken;
import okhttp3.Request;
import java.lang.reflect.Type;
import java.util.*;
/**
* @author jishupei.jsp
* @version : GenericExecuteApi, v0.1 2022年09月22日 11:15 上午 jishupei.jsp Exp $
*/
public class GenericExecuteApi {
private ApiClient localVarApiClient;
private String localCustomBaseUrl;
private boolean loadTest = false;
public GenericExecuteApi() {
this(Configuration.getDefaultApiClient());
}
public GenericExecuteApi(ApiClient apiClient) {
this.localVarApiClient = apiClient;
}
/**
* Getter method for property localVarApiClient .
*
* @return property value of localVarApiClient
*/
public ApiClient getLocalVarApiClient() {
return localVarApiClient;
}
/**
* Setter method for property localVarApiClient .
*
* @param localVarApiClient value to be assigned to property localVarApiClient
*/
public void setLocalVarApiClient(ApiClient localVarApiClient) {
this.localVarApiClient = localVarApiClient;
}
/**
* Getter method for property localCustomBaseUrl .
*
* @return property value of localCustomBaseUrl
*/
public String getLocalCustomBaseUrl() {
return localCustomBaseUrl;
}
/**
* Setter method for property localCustomBaseUrl .
*
* @param localCustomBaseUrl value to be assigned to property localCustomBaseUrl
*/
public void setLocalCustomBaseUrl(String localCustomBaseUrl) {
this.localCustomBaseUrl = localCustomBaseUrl;
}
/**
* Getter method for property loadTest .
*
* @return property value of loadTest
*/
public boolean isLoadTest() {
return loadTest;
}
/**
* Setter method for property loadTest .
*
* @param loadTest value to be assigned to property loadTest
*/
public void setLoadTest(boolean loadTest) {
this.loadTest = loadTest;
}
/**
* 通用方法
*
* @param path The sub-path of the HTTP URL
* @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE"
* @param openApiGenericRequest openApiGenericRequest
* @return
* @throws ApiException
*/
public ApiResponse execute(String path, String method, OpenApiGenericRequest openApiGenericRequest) throws ApiException {
Request request = buildRequest(path, method, openApiGenericRequest);
okhttp3.Call localVarCall = localVarApiClient.buildCall(request);
Type localVarReturnType = new TypeToken() {}.getType();
return localVarApiClient.execute(localVarCall, localVarReturnType);
}
/**
* @param path The sub-path of the HTTP URL
* @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE"
* @param openApiGenericRequest 通用入参
* @param type TypeToken, e.g. new TypeToken>() {}
* @param The return type corresponding to (same with) type
* @return
* @throws ApiException
*/
public ApiResponse execute(String path, String method, OpenApiGenericRequest openApiGenericRequest, TypeToken type) throws ApiException {
Request request = buildRequest(path, method, openApiGenericRequest);
okhttp3.Call localVarCall = localVarApiClient.buildCall(request);
return localVarApiClient.execute(localVarCall, type.getType());
}
/**
* @param method 方法名
* @param httpMethod GET/POST
* @param bizParams bizContent
* @return
*/
public String pageExecute(String method, String httpMethod, Map bizParams) throws ApiException {
return pageExecute(method, httpMethod, bizParams, null, null, null);
}
/**
* @param method 方法名
* @param httpMethod GET/POST
* @param bizParams bizContent
* @param authToken 用户授权凭证
* @param appAuthToken 系统服务商的第三方应用代商家的应用或小程序模板调用支付宝OpenAPI时所传入的授权凭证
* @param customizedParams 额外参数
* @return
* @throws ApiException
*/
public String pageExecute(String method, String httpMethod, Map bizParams, String authToken, String appAuthToken, CustomizedParams customizedParams) throws ApiException {
Map appParams = new HashMap<>();
Map systemParams = new HashMap<>();
handleParams(appParams, systemParams, bizParams, authToken, appAuthToken, customizedParams);
Map sortedMap = localVarApiClient.getSortedMap(method, appParams, systemParams);
if (loadTest && systemParams.containsKey("app_id")) {
String appId = systemParams.get("app_id") + "_TEST_1A";
systemParams.put("app_id", appId);
sortedMap.put("app_id", appId);
}
if ("GET".equalsIgnoreCase(httpMethod)) {
return getRedirectUrl(sortedMap, true);
} else {
return getRequestUrl(appParams, systemParams);
}
}
/**
* @param method 方法名
* @param bizParams bizContent
* @return
* @throws ApiException
*/
public String sdkExecute(String method, Map bizParams) throws ApiException {
return sdkExecute(method, bizParams, null, null, null);
}
/**
* @param method 方法名
* @param bizParams bizContent
* @param authToken 用户授权凭证
* @param appAuthToken 系统服务商的第三方应用代商家的应用或小程序模板调用支付宝OpenAPI时所传入的授权凭证
* @param customizedParams 额外参数
* @return
* @throws ApiException
*/
public String sdkExecute(String method, Map bizParams, String authToken, String appAuthToken, CustomizedParams customizedParams) throws ApiException {
Map appParams = new HashMap<>();
Map systemParams = new HashMap<>();
handleParams(appParams, systemParams, bizParams, authToken, appAuthToken, customizedParams);
Map sortedMap = localVarApiClient.getSortedMap(method, appParams, systemParams);
if (loadTest && sortedMap.containsKey("app_id")) {
String appId = sortedMap.get("app_id") + "_TEST_1A";
sortedMap.put("app_id", appId);
}
return getRedirectUrl(sortedMap, false);
}
/**
* 流式调用(SSE)
* @param path The sub-path of the HTTP URL
* @param method The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE"
* @param openApiGenericRequest 通用入参
* @param callback 回调函数
* @param The return type corresponding to (same with) type
* @throws ApiException
*/
public void streamExecute(String path, String method, OpenApiGenericRequest openApiGenericRequest, StreamCallback callback) throws ApiException {
Request request = buildRequest(path, method, openApiGenericRequest);
localVarApiClient.streamCall(request, callback);
}
private Request buildRequest(String path, String method, OpenApiGenericRequest openApiGenericRequest) throws ApiException {
boolean isFileUpload = (openApiGenericRequest.getFileParams() != null && openApiGenericRequest.getFileParams().size() > 0)
|| (openApiGenericRequest.getByteStreamParams() != null && openApiGenericRequest.getByteStreamParams().size() > 0);
if (openApiGenericRequest.getBodyParams() == null) {
openApiGenericRequest.setBodyParams(openApiGenericRequest.getBizParams());
}
Object localVarPostBody = isFileUpload || "GET".equalsIgnoreCase(method) || "HEAD".equalsIgnoreCase(method)
? null : openApiGenericRequest.getBodyParams();
String localVarPath = path;
if (openApiGenericRequest.getPathParams() != null && openApiGenericRequest.getPathParams().size() > 0) {
for (Map.Entry entry : openApiGenericRequest.getPathParams().entrySet()) {
localVarPath = localVarPath.replaceAll("\\{" + entry.getKey() + "\\}", localVarApiClient.escapeString(entry.getValue().toString()));
}
}
List localVarQueryParams = new ArrayList<>();
List localVarCollectionQueryParams = new ArrayList<>();
Map localVarHeaderParams = new HashMap<>();
Map localVarCookieParams = new HashMap<>();
Map localVarFormParams = new HashMap<>();
//query参数
if (openApiGenericRequest.getQueryParams() != null && openApiGenericRequest.getQueryParams().size() > 0) {
for (Map.Entry entry : openApiGenericRequest.getQueryParams().entrySet()) {
localVarQueryParams.addAll(localVarApiClient.parameterToPair(entry.getKey(), entry.getValue()));
}
}
if (isFileUpload) {
if (openApiGenericRequest.getBodyParams() != null) {
localVarFormParams.put("data", openApiGenericRequest.getBodyParams());
}
if (openApiGenericRequest.getFileParams() != null) {
localVarFormParams.putAll(openApiGenericRequest.getFileParams());
}
if (openApiGenericRequest.getByteStreamParams() != null) {
localVarFormParams.putAll(openApiGenericRequest.getByteStreamParams());
}
}
final String[] localVarAccepts = {
"application/json"
};
final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
if (localVarAccept != null) {
localVarHeaderParams.put("Accept", localVarAccept);
}
final String[] localVarContentTypes = {
isFileUpload ? "multipart/form-data" : "application/json"
};
final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
if (localVarContentType != null) {
localVarHeaderParams.put("Content-Type", localVarContentType);
}
if (!Strings.isNullOrEmpty(openApiGenericRequest.getAppAuthToken())) {
localVarHeaderParams.put("alipay-app-auth-token", openApiGenericRequest.getAppAuthToken());
}
//额外非全局header参数
if (openApiGenericRequest.getHeaderParams() != null && openApiGenericRequest.getHeaderParams().size() > 0) {
localVarHeaderParams.putAll(openApiGenericRequest.getHeaderParams());
}
String[] localVarAuthNames = new String[]{};
return localVarApiClient.buildRequest(localCustomBaseUrl, localVarPath, method.toUpperCase(), localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, null);
}
private void handleParams(Map appParams, Map systemParams, Map bizParams, String authToken, String appAuthToken, CustomizedParams customizedParams) {
if (customizedParams != null && !Strings.isNullOrEmpty(customizedParams.getBodyContent())) {
appParams.put("biz_content", customizedParams.getBodyContent());
} else if (bizParams != null && bizParams.containsKey("biz_content")) {
appParams.put("biz_content", JSON.serialize(bizParams.get("biz_content")));
}
if (bizParams != null) {
for (Map.Entry pair : bizParams.entrySet()) {
if (!"biz_content".equals(pair.getKey())) {
appParams.put(pair.getKey(), localVarApiClient.parameterToString(pair.getValue()));
}
}
}
if (customizedParams != null) {
if (!Strings.isNullOrEmpty(customizedParams.getAppAuthToken())) {
appParams.put("app_auth_token", customizedParams.getAppAuthToken());
}
if (customizedParams.getQueryParams() != null) {
systemParams.putAll(customizedParams.getQueryParams());
}
}
if (!Strings.isNullOrEmpty(appAuthToken)) {
appParams.put("app_auth_token", appAuthToken);
}
if (!Strings.isNullOrEmpty(authToken)) {
systemParams.put("auth_token", authToken);
}
}
/**
* GET模式下获取跳转链接
*
* @param sortedMap
* @return
*/
private String getRedirectUrl(Map sortedMap, boolean isNeedUrl) {
return localVarApiClient.buildQuery(sortedMap, localCustomBaseUrl, isNeedUrl);
}
/**
* 获取POST请求的base url
*
* @param systemParams
* @return
*/
private String getRequestUrl(Map appParams, Map systemParams) {
String baseUrl = localVarApiClient.buildQuery(systemParams, localCustomBaseUrl, true);
return buildForm(baseUrl, appParams);
}
private String buildForm(String baseUrl, Map parameters) {
StringBuilder sb = new StringBuilder();
sb.append("\n");
sb.append("");
return sb.toString();
}
private String buildHiddenFields(Map parameters) {
if (parameters == null || parameters.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
Set keys = parameters.keySet();
for (String key : keys) {
String value = parameters.get(key);
// 除去参数中的空值
if (Strings.isNullOrEmpty(key) || Strings.isNullOrEmpty(value)) {
continue;
}
sb.append(buildHiddenField(key, value));
}
return sb.toString();
}
private String buildHiddenField(String key, String value) {
StringBuilder sb = new StringBuilder();
sb.append(" \n");
return sb.toString();
}
}