
com.kintone.client.InternalClientImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kintone-java-client Show documentation
Show all versions of kintone-java-client Show documentation
API client library for Kintone REST APIs on Java.
package com.kintone.client;
import com.kintone.client.api.KintoneRequest;
import com.kintone.client.api.KintoneResponse;
import com.kintone.client.api.KintoneResponseBody;
import com.kintone.client.api.common.BulkRequestsRequest;
import com.kintone.client.api.common.BulkRequestsResponseBody;
import com.kintone.client.api.common.DownloadFileRequest;
import com.kintone.client.api.common.DownloadFileResponseBody;
import com.kintone.client.api.common.UploadFileResponseBody;
import com.kintone.client.exception.KintoneRuntimeException;
import com.kintone.client.model.Auth;
import com.kintone.client.model.BasicAuth;
import com.kintone.client.model.BulkRequestContent;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import javax.net.ssl.SSLContext;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
class InternalClientImpl extends InternalClient {
private final CloseableHttpClient httpClient;
private final String baseUrl;
private final Auth auth;
private final BasicAuth basicAuth;
private final Long guestId;
private final String userAgent;
private final JsonMapper mapper;
InternalClientImpl(
String baseUrl,
Auth auth,
BasicAuth basicAuth,
URI proxyHost,
SSLContext sslContext,
Long guestId,
String appendixUserAgent,
int connectionTimeout,
int socketTimeout,
int connectionRequestTimeout) {
this.baseUrl = baseUrl;
this.auth = auth;
this.basicAuth = basicAuth;
this.guestId = guestId;
this.userAgent = getUserAgent(appendixUserAgent);
this.mapper = new JsonMapper();
this.httpClient =
createHttpClient(
sslContext, proxyHost, connectionTimeout, socketTimeout, connectionRequestTimeout);
}
private static CloseableHttpClient createHttpClient(
SSLContext sslContext,
URI proxyHost,
int connTimeout,
int socketTimeout,
int connRequestTimeout) {
RequestConfig.Builder configBuilder = RequestConfig.custom();
configBuilder.setConnectTimeout(connTimeout);
configBuilder.setSocketTimeout(socketTimeout);
configBuilder.setConnectionRequestTimeout(connRequestTimeout);
if (proxyHost != null) {
HttpHost proxy =
new HttpHost(proxyHost.getHost(), proxyHost.getPort(), proxyHost.getScheme());
configBuilder.setProxy(proxy);
}
HttpClientBuilder clientBuilder = HttpClients.custom();
clientBuilder.setDefaultRequestConfig(configBuilder.build());
clientBuilder.setSSLContext(sslContext);
clientBuilder.disableRedirectHandling();
return clientBuilder.build();
}
@Override
T call(
KintoneApi api, KintoneRequest body, List handlers) {
String path = getApiPath(api);
@SuppressWarnings("unchecked")
Class clazz = (Class) api.getResponseClass();
return call(api.getMethod(), path, body, clazz, handlers);
}
@Override
T call(
KintoneHttpMethod method,
String path,
KintoneRequest body,
Class clazz,
List handlers) {
HttpUriRequest request = createJsonRequest(method, path, body);
try (CloseableHttpResponse response = httpClient.execute(request)) {
KintoneResponse result = parseJsonResponse(response, clazz);
applyHandlers(result, handlers);
return result.getBody();
} catch (IOException e) {
throw new KintoneRuntimeException("Failed to request", e);
}
}
private Map headersToMap(Header[] headers) {
Map result = new HashMap<>();
for (Header header : headers) {
result.put(header.getName(), header.getValue());
}
return Collections.unmodifiableMap(result);
}
private Map createBulkRequestBody(BulkRequestsRequest req) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy