Class ApiClient
java.lang.Object
de.iip_ecosphere.platform.support.semanticId.eclass.handler.ApiClient
- Direct Known Subclasses:
AuthApiClient
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map<String, Authentication> private Stringprivate DateFormatprivate intprivate DateFormatprivate booleanprivate com.squareup.okhttp.OkHttpClientprivate JSONprivate KeyManager[]private booleanprivate com.squareup.okhttp.logging.HttpLoggingInterceptorprivate InputStreamprivate Stringprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddDefaultHeader(String key, String value) Add a default header.private voidApply SSL related settings to httpClient according to the current values of verifyingSsl and sslCaCert.com.squareup.okhttp.CallbuildCall(String path, String method, List<Pair> queryParams, List<Pair> collectionQueryParams, Object body, Map<String, String> headerParams, Map<String, Object> formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) Build HTTP call with the given options.com.squareup.okhttp.RequestbuildRequest(String path, String method, List<Pair> queryParams, List<Pair> collectionQueryParams, Object body, Map<String, String> headerParams, Map<String, Object> formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) Build an HTTP request with the given options.com.squareup.okhttp.RequestBodybuildRequestBodyFormEncoding(Map<String, Object> formParams) Build a form-encoding request body with the given form parameters.com.squareup.okhttp.RequestBodybuildRequestBodyMultipart(Map<String, Object> formParams) Build a multipart (file uploading) request body with the given form parameters, which could contain text fields and file fields.Build full URL by concatenating base path, the given sub path and query parameters.<T> Tdeserialize(com.squareup.okhttp.Response response, Type returnType) Deserialize response body to Java object, according to the return type and the Content-Type response header.downloadFileFromResponse(com.squareup.okhttp.Response response) Download file from the given response.escapeString(String str) Escape the given string to be used as URL query value.<T> ApiResponse<T> execute(com.squareup.okhttp.Call call) <T> ApiResponse<T> Execute HTTP call and deserialize the HTTP response body into the given return type.<T> voidexecuteAsync(com.squareup.okhttp.Call call, ApiCallback<T> callback) <T> voidexecuteAsync(com.squareup.okhttp.Call call, Type returnType, ApiCallback<T> callback) Execute HTTP call asynchronously.getAuthentication(String authName) Get authentication for the given name.Get authentications (key: authentication name, value: authentication).Get base pathintGet connection timeout (in milliseconds).com.squareup.okhttp.OkHttpClientGet HTTP clientgetJSON()Get JSONintGet read timeout (in milliseconds).Get SSL CA cert.The path of temporary folder used to store downloaded files from endpoints with file response.intGet write timeout (in milliseconds).guessContentTypeFromFile(File file) Guess Content-Type header from the given file (defaults to "application/octet-stream").<T> ThandleResponse(com.squareup.okhttp.Response response, Type returnType) Handle the given response, return the deserialized object when the response is successful.booleanCheck that whether debugging is enabled for this API client.booleanisJsonMime(String mime) Check if the given MIME is a JSON MIME.booleanTrue if isVerifyingSsl flag is onprivate KeyStorenewEmptyKeyStore(char[] password) parameterToPair(String name, Object value) Formats the specified query parameter to a list containing a singlePairobject.parameterToPairs(String collectionFormat, String name, Collection value) Formats the specified collection query parameters to a list ofPairobjects.parameterToString(Object param) Format the given parameter object into string.prepareDownloadFile(com.squareup.okhttp.Response response) Prepare file for downloadvoidprocessHeaderParams(Map<String, String> headerParams, com.squareup.okhttp.Request.Builder reqBuilder) Set header parameters to the request builder, including default headers.sanitizeFilename(String filename) Sanitize filename by removing path.selectHeaderAccept(String[] accepts) Select the Accept header's value from the given accepts array: if JSON exists in the given array, use it; otherwise use all of them (joining into a string)selectHeaderContentType(String[] contentTypes) Select the Content-Type header's value from the given array: if JSON exists in the given array, use it; otherwise use the first one of the array.com.squareup.okhttp.RequestBodySerialize the given Java object into request body according to the object's class and the request Content-Type.voidsetAccessToken(String accessToken) Helper method to set access token for the first OAuth2 authentication.voidHelper method to set API key value for the first API key authentication.voidsetApiKeyPrefix(String apiKeyPrefix) Helper method to set API key prefix for the first API key authentication.setBasePath(String basePath) Set base pathsetConnectTimeout(int connectionTimeout) Sets the connect timeout (in milliseconds).setDateFormat(DateFormat dateFormat) setDebugging(boolean debugging) Enable/disable debugging for this API client.setHttpClient(com.squareup.okhttp.OkHttpClient httpClient) Set HTTP clientSet JSONsetKeyManagers(KeyManager[] managers) Configure client keys to use for authorization in an SSL session.setLenientOnJson(boolean lenientOnJson) voidsetPassword(String password) Helper method to set password for the first HTTP basic authentication.setReadTimeout(int readTimeout) Sets the read timeout (in milliseconds).setSqlDateFormat(DateFormat dateFormat) setSslCaCert(InputStream sslCaCert) Configure the CA certificate to be trusted when making https requests.setTempFolderPath(String tempFolderPath) Set the temporary folder path (for downloading files)setUserAgent(String userAgent) Set the User-Agent header's value (by adding to the default header map).voidsetUsername(String username) Helper method to set username for the first HTTP basic authentication.setVerifyingSsl(boolean verifyingSsl) Configure whether to verify certificate and hostname when making https requests.setWriteTimeout(int writeTimeout) Sets the write timeout (in milliseconds).voidUpdate query and header parameters based on authentication settings.
-
Field Details
-
basePath
-
debugging
private boolean debugging -
defaultHeaderMap
-
tempFolderPath
-
authentications
-
dateFormat
-
datetimeFormat
-
lenientDatetimeFormat
private boolean lenientDatetimeFormat -
dateLength
private int dateLength -
sslCaCert
-
verifyingSsl
private boolean verifyingSsl -
keyManagers
-
httpClient
private com.squareup.okhttp.OkHttpClient httpClient -
json
-
loggingInterceptor
private com.squareup.okhttp.logging.HttpLoggingInterceptor loggingInterceptor
-
-
Constructor Details
-
ApiClient
public ApiClient()
-
-
Method Details
-
getBasePath
Get base path- Returns:
- Baes path
-
setBasePath
Set base path- Parameters:
basePath- Base path of the URL (e.g /- Returns:
- An instance of OkHttpClient
-
getHttpClient
public com.squareup.okhttp.OkHttpClient getHttpClient()Get HTTP client- Returns:
- An instance of OkHttpClient
-
setHttpClient
Set HTTP client- Parameters:
httpClient- An instance of OkHttpClient- Returns:
- Api Client
-
getJSON
Get JSON- Returns:
- JSON object
-
setJSON
Set JSON- Parameters:
json- JSON object- Returns:
- Api client
-
isVerifyingSsl
public boolean isVerifyingSsl()True if isVerifyingSsl flag is on- Returns:
- True if isVerifySsl flag is on
-
setVerifyingSsl
Configure whether to verify certificate and hostname when making https requests. Default to true. NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks.- Parameters:
verifyingSsl- True to verify TLS/SSL connection- Returns:
- ApiClient
-
getSslCaCert
Get SSL CA cert.- Returns:
- Input stream to the SSL CA cert
-
setSslCaCert
Configure the CA certificate to be trusted when making https requests. Use null to reset to default.- Parameters:
sslCaCert- input stream for SSL CA cert- Returns:
- ApiClient
-
getKeyManagers
-
setKeyManagers
Configure client keys to use for authorization in an SSL session. Use null to reset to default.- Parameters:
managers- The KeyManagers to use- Returns:
- ApiClient
-
getDateFormat
-
setDateFormat
-
setSqlDateFormat
-
setLenientOnJson
-
getAuthentications
Get authentications (key: authentication name, value: authentication).- Returns:
- Map of authentication objects
-
getAuthentication
Get authentication for the given name.- Parameters:
authName- The authentication name- Returns:
- The authentication, null if not found
-
setUsername
Helper method to set username for the first HTTP basic authentication.- Parameters:
username- Username
-
setPassword
Helper method to set password for the first HTTP basic authentication.- Parameters:
password- Password
-
setApiKey
Helper method to set API key value for the first API key authentication.- Parameters:
apiKey- API key
-
setApiKeyPrefix
Helper method to set API key prefix for the first API key authentication.- Parameters:
apiKeyPrefix- API key prefix
-
setAccessToken
Helper method to set access token for the first OAuth2 authentication.- Parameters:
accessToken- Access token
-
setUserAgent
Set the User-Agent header's value (by adding to the default header map).- Parameters:
userAgent- HTTP request's user agent- Returns:
- ApiClient
-
addDefaultHeader
Add a default header.- Parameters:
key- The header's keyvalue- The header's value- Returns:
- ApiClient
-
isDebugging
public boolean isDebugging()Check that whether debugging is enabled for this API client.- Returns:
- True if debugging is enabled, false otherwise.
-
setDebugging
Enable/disable debugging for this API client.- Parameters:
debugging- To enable (true) or disable (false) debugging- Returns:
- ApiClient
-
getTempFolderPath
The path of temporary folder used to store downloaded files from endpoints with file response. The default value isnull, i.e. using the system's default tempopary folder.- Returns:
- Temporary folder path
- See Also:
-
setTempFolderPath
Set the temporary folder path (for downloading files)- Parameters:
tempFolderPath- Temporary folder path- Returns:
- ApiClient
-
getConnectTimeout
public int getConnectTimeout()Get connection timeout (in milliseconds).- Returns:
- Timeout in milliseconds
-
setConnectTimeout
Sets the connect timeout (in milliseconds). A value of 0 means no timeout, otherwise values must be between 1 and- Parameters:
connectionTimeout- connection timeout in milliseconds- Returns:
- Api client
-
getReadTimeout
public int getReadTimeout()Get read timeout (in milliseconds).- Returns:
- Timeout in milliseconds
-
setReadTimeout
Sets the read timeout (in milliseconds). A value of 0 means no timeout, otherwise values must be between 1 andInteger.MAX_VALUE.- Parameters:
readTimeout- read timeout in milliseconds- Returns:
- Api client
-
getWriteTimeout
public int getWriteTimeout()Get write timeout (in milliseconds).- Returns:
- Timeout in milliseconds
-
setWriteTimeout
Sets the write timeout (in milliseconds). A value of 0 means no timeout, otherwise values must be between 1 andInteger.MAX_VALUE.- Parameters:
writeTimeout- connection timeout in milliseconds- Returns:
- Api client
-
parameterToString
Format the given parameter object into string.- Parameters:
param- Parameter- Returns:
- String representation of the parameter
-
parameterToPair
Formats the specified query parameter to a list containing a singlePairobject. Note thatvaluemust not be a collection.- Parameters:
name- The name of the parameter.value- The value of the parameter.- Returns:
- A list containing a single
Pairobject.
-
parameterToPairs
Formats the specified collection query parameters to a list ofPairobjects. Note that the values of each of the returned Pair objects are percent-encoded.- Parameters:
collectionFormat- The collection format of the parameter.name- The name of the parameter.value- The value of the parameter.- Returns:
- A list of
Pairobjects.
-
sanitizeFilename
Sanitize filename by removing path. e.g. ../../sun.gif becomes sun.gif- Parameters:
filename- The filename to be sanitized- Returns:
- The sanitized filename
-
isJsonMime
Check if the given MIME is a JSON MIME. JSON MIME examples: application/json application/json; charset=UTF8 APPLICATION/JSON application/vnd.company+json "* / *" is also default to JSON- Parameters:
mime- MIME (Multipurpose Internet Mail Extensions)- Returns:
- True if the given MIME is JSON, false otherwise.
-
selectHeaderAccept
Select the Accept header's value from the given accepts array: if JSON exists in the given array, use it; otherwise use all of them (joining into a string)- Parameters:
accepts- The accepts array to select from- Returns:
- The Accept header to use. If the given array is empty, null will be returned (not to set the Accept header explicitly).
-
selectHeaderContentType
Select the Content-Type header's value from the given array: if JSON exists in the given array, use it; otherwise use the first one of the array.- Parameters:
contentTypes- The Content-Type array to select from- Returns:
- The Content-Type header to use. If the given array is empty, or matches "any", JSON will be used.
-
escapeString
Escape the given string to be used as URL query value.- Parameters:
str- String to be escaped- Returns:
- Escaped string
-
deserialize
public <T> T deserialize(com.squareup.okhttp.Response response, Type returnType) throws ApiException Deserialize response body to Java object, according to the return type and the Content-Type response header.- Type Parameters:
T- Type- Parameters:
response- HTTP responsereturnType- The type of the Java object- Returns:
- The deserialized Java object
- Throws:
ApiException- If fail to deserialize response body, i.e. cannot read response body or the Content-Type of the response is not supported.
-
serialize
public com.squareup.okhttp.RequestBody serialize(Object obj, String contentType) throws ApiException Serialize the given Java object into request body according to the object's class and the request Content-Type.- Parameters:
obj- The Java objectcontentType- The request Content-Type- Returns:
- The serialized request body
- Throws:
ApiException- If fail to serialize the given object
-
downloadFileFromResponse
Download file from the given response.- Parameters:
response- An instance of the Response object- Returns:
- Downloaded file
- Throws:
ApiException- If fail to read file content from response and write to disk
-
prepareDownloadFile
Prepare file for download- Parameters:
response- An instance of the Response object- Returns:
- Prepared file for the download
- Throws:
IOException- If fail to prepare file for download
-
execute
- Type Parameters:
T- Type- Parameters:
call- An instance of the Call object- Returns:
- ApiResponse<T>
- Throws:
ApiException- If fail to execute the call
-
execute
public <T> ApiResponse<T> execute(com.squareup.okhttp.Call call, Type returnType) throws ApiException Execute HTTP call and deserialize the HTTP response body into the given return type.- Type Parameters:
T- The return type corresponding to (same with) returnType- Parameters:
call- CallreturnType- The return type used to deserialize HTTP response body- Returns:
- ApiResponse object containing response status, headers and data, which is a Java object deserialized from response body and would be null when returnType is null.
- Throws:
ApiException- If fail to execute the call
-
executeAsync
- Type Parameters:
T- Type- Parameters:
call- An instance of the Call objectcallback- ApiCallback<T>
-
executeAsync
public <T> void executeAsync(com.squareup.okhttp.Call call, Type returnType, ApiCallback<T> callback) Execute HTTP call asynchronously.- Type Parameters:
T- Type- Parameters:
call- The callback to be executed when the API call finishesreturnType- Return typecallback- ApiCallback- See Also:
-
handleResponse
public <T> T handleResponse(com.squareup.okhttp.Response response, Type returnType) throws ApiException Handle the given response, return the deserialized object when the response is successful.- Type Parameters:
T- Type- Parameters:
response- ResponsereturnType- Return type- Returns:
- Type
- Throws:
ApiException- If the response has a unsuccessful status code or fail to deserialize the response body
-
buildCall
public com.squareup.okhttp.Call buildCall(String path, String method, List<Pair> queryParams, List<Pair> collectionQueryParams, Object body, Map<String, String> headerParams, Map<String, throws ApiExceptionObject> formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) Build HTTP call with the given options.- Parameters:
path- The sub-path of the HTTP URLmethod- The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE"queryParams- The query parameterscollectionQueryParams- The collection query parametersbody- The request body objectheaderParams- The header parametersformParams- The form parametersauthNames- The authentications to applyprogressRequestListener- Progress request listener- Returns:
- The HTTP call
- Throws:
ApiException- If fail to serialize the request body object
-
buildRequest
public com.squareup.okhttp.Request buildRequest(String path, String method, List<Pair> queryParams, List<Pair> collectionQueryParams, Object body, Map<String, String> headerParams, Map<String, throws ApiExceptionObject> formParams, String[] authNames, ProgressRequestBody.ProgressRequestListener progressRequestListener) Build an HTTP request with the given options.- Parameters:
path- The sub-path of the HTTP URLmethod- The request method, one of "GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH" and "DELETE"queryParams- The query parameterscollectionQueryParams- The collection query parametersbody- The request body objectheaderParams- The header parametersformParams- The form parametersauthNames- The authentications to applyprogressRequestListener- Progress request listener- Returns:
- The HTTP request
- Throws:
ApiException- If fail to serialize the request body object
-
buildUrl
Build full URL by concatenating base path, the given sub path and query parameters.- Parameters:
path- The sub pathqueryParams- The query parameterscollectionQueryParams- The collection query parameters- Returns:
- The full URL
-
processHeaderParams
public void processHeaderParams(Map<String, String> headerParams, com.squareup.okhttp.Request.Builder reqBuilder) Set header parameters to the request builder, including default headers.- Parameters:
headerParams- Header parameters in the ofrm of MapreqBuilder- Reqeust.Builder
-
updateParamsForAuth
public void updateParamsForAuth(String[] authNames, List<Pair> queryParams, Map<String, String> headerParams) Update query and header parameters based on authentication settings.- Parameters:
authNames- The authentications to applyqueryParams- List of query parametersheaderParams- Map of header parameters
-
buildRequestBodyFormEncoding
Build a form-encoding request body with the given form parameters.- Parameters:
formParams- Form parameters in the form of Map- Returns:
- RequestBody
-
buildRequestBodyMultipart
Build a multipart (file uploading) request body with the given form parameters, which could contain text fields and file fields.- Parameters:
formParams- Form parameters in the form of Map- Returns:
- RequestBody
-
guessContentTypeFromFile
Guess Content-Type header from the given file (defaults to "application/octet-stream").- Parameters:
file- The given file- Returns:
- The guessed Content-Type
-
applySslSettings
private void applySslSettings()Apply SSL related settings to httpClient according to the current values of verifyingSsl and sslCaCert. -
newEmptyKeyStore
- Throws:
GeneralSecurityException
-