
io.apimatic.examples.APIMATICCalculatorClient Maven / Gradle / Ivy
/*
* APIMATICCalculatorLib
*
* This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
*/
package io.apimatic.examples;
import io.apimatic.core.GlobalConfiguration;
import io.apimatic.coreinterfaces.authentication.Authentication;
import io.apimatic.coreinterfaces.compatibility.CompatibilityFactory;
import io.apimatic.coreinterfaces.http.HttpClient;
import io.apimatic.examples.controllers.SimpleCalculatorController;
import io.apimatic.examples.http.client.HttpCallback;
import io.apimatic.examples.http.client.HttpClientConfiguration;
import io.apimatic.examples.http.client.ReadonlyHttpClientConfiguration;
import io.apimatic.okhttpclient.adapter.OkClient;
import java.util.AbstractMap.SimpleEntry;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
/**
* Gateway class for the library.
* This class acts as a factory for Controllers.
* It holds the state of the SDK.
*/
public final class APIMATICCalculatorClient implements Configuration {
/**
* Private store for controllers.
*/
private SimpleCalculatorController simpleCalculator;
private static final CompatibilityFactory compatibilityFactory = new CompatibilityFactoryImpl();
private static String userAgent = "APIMATIC 3.0";
/**
* Current API environment.
*/
private final Environment environment;
/**
* The HTTP Client instance to use for making HTTP requests.
*/
private final HttpClient httpClient;
/**
* Http Client Configuration instance.
*/
private final ReadonlyHttpClientConfiguration httpClientConfig;
/**
* Map of authentication Managers.
*/
private Map authentications;
/**
* Callback to be called before and after the HTTP call for an endpoint is made.
*/
private final HttpCallback httpCallback;
private APIMATICCalculatorClient(Environment environment, HttpClient httpClient,
ReadonlyHttpClientConfiguration httpClientConfig,
Map authentications, HttpCallback httpCallback) {
this.environment = environment;
this.httpClient = httpClient;
this.httpClientConfig = httpClientConfig;
this.httpCallback = httpCallback;
this.authentications =
(authentications == null) ? new HashMap<>() : new HashMap<>(authentications);
GlobalConfiguration globalConfig = new GlobalConfiguration.Builder()
.authentication(this.authentications).compatibilityFactory(compatibilityFactory)
.httpClient(httpClient).baseUri(server -> getBaseUri(server))
.callback(httpCallback)
.userAgent(userAgent)
.build();
simpleCalculator = new SimpleCalculatorController(globalConfig);
}
/**
* Shutdown the underlying HttpClient instance.
*/
public static void shutdown() {
OkClient.shutdown();
}
/**
* Get the instance of SimpleCalculatorController.
* @return simpleCalculator
*/
public SimpleCalculatorController getSimpleCalculatorController() {
return simpleCalculator;
}
/**
* Current API environment.
* @return environment
*/
public Environment getEnvironment() {
return environment;
}
/**
* The HTTP Client instance to use for making HTTP requests.
* @return httpClient
*/
private HttpClient getHttpClient() {
return httpClient;
}
/**
* Http Client Configuration instance.
* @return httpClientConfig
*/
public ReadonlyHttpClientConfiguration getHttpClientConfig() {
return httpClientConfig;
}
/**
* The timeout to use for making HTTP requests.
* @deprecated This method will be removed in a future version. Use
* {@link #getHttpClientConfig()} instead.
*
* @return timeout
*/
@Deprecated
public long timeout() {
return httpClientConfig.getTimeout();
}
/**
* Get base URI by current environment.
* @param server Server for which to get the base URI
* @return Processed base URI
*/
public String getBaseUri(Server server) {
Map> parameters = new HashMap<>();
StringBuilder baseUrl = new StringBuilder(environmentMapper(environment, server));
ApiHelper.appendUrlWithTemplateParameters(baseUrl, parameters);
return baseUrl.toString();
}
/**
* Get base URI by current environment.
* @return Processed base URI
*/
public String getBaseUri() {
return getBaseUri(Server.CALCULATOR);
}
/**
* Get base URI by current environment.
*
* @param server string for which to get the base URI
* @return Processed base URI
*/
public String getBaseUri(String server) {
return getBaseUri(Server.fromString(server));
}
/**
* Base URLs by environment and server aliases.
* @param environment Environment for which to get the base URI
* @param server Server for which to get the base URI
* @return base URL
*/
private static String environmentMapper(Environment environment, Server server) {
if (environment.equals(Environment.PRODUCTION)) {
if (server.equals(Server.CALCULATOR)) {
return "https://examples.apimatic.io/apps/calculator";
}
}
return "https://examples.apimatic.io/apps/calculator";
}
/**
* Converts this APIMATICCalculatorClient into string format.
* @return String representation of this class
*/
@Override
public String toString() {
return "APIMATICCalculatorClient [" + "environment=" + environment + ", httpClientConfig="
+ httpClientConfig + ", authentications=" + authentications + "]";
}
/**
* Builds a new {@link APIMATICCalculatorClient.Builder} object.
* Creates the instance with the state of the current client.
* @return a new {@link APIMATICCalculatorClient.Builder} object
*/
public Builder newBuilder() {
Builder builder = new Builder();
builder.environment = getEnvironment();
builder.httpClient = getHttpClient();
builder.authentications = authentications;
builder.httpCallback = httpCallback;
builder.httpClientConfig(configBldr -> configBldr =
((HttpClientConfiguration) httpClientConfig).newBuilder());
return builder;
}
/**
* Class to build instances of {@link APIMATICCalculatorClient}.
*/
public static class Builder {
private Environment environment = Environment.PRODUCTION;
private HttpClient httpClient;
private Map authentications = null;
private HttpCallback httpCallback = null;
private HttpClientConfiguration.Builder httpClientConfigBuilder =
new HttpClientConfiguration.Builder();
/**
* Current API environment.
* @param environment The environment for client.
* @return Builder
*/
public Builder environment(Environment environment) {
this.environment = environment;
return this;
}
/**
* The timeout to use for making HTTP requests.
* @deprecated This method will be removed in a future version. Use
* {@link #httpClientConfig(Consumer) httpClientConfig} instead.
* @param timeout must be greater then 0.
* @return Builder
*/
@Deprecated
public Builder timeout(long timeout) {
this.httpClientConfigBuilder.timeout(timeout);
return this;
}
/**
* HttpCallback.
* @param httpCallback Callback to be called before and after the HTTP call.
* @return Builder
*/
public Builder httpCallback(HttpCallback httpCallback) {
this.httpCallback = httpCallback;
return this;
}
/**
* Setter for the Builder of httpClientConfiguration, takes in an operation to be performed
* on the builder instance of HTTP client configuration.
*
* @param action Consumer for the builder of httpClientConfiguration.
* @return Builder
*/
public Builder httpClientConfig(Consumer action) {
action.accept(httpClientConfigBuilder);
return this;
}
/**
* Builds a new APIMATICCalculatorClient object using the set fields.
* @return APIMATICCalculatorClient
*/
public APIMATICCalculatorClient build() {
HttpClientConfiguration httpClientConfig = httpClientConfigBuilder.build();
httpClient = new OkClient(httpClientConfig.getConfiguration(), compatibilityFactory);
return new APIMATICCalculatorClient(environment, httpClient, httpClientConfig,
authentications, httpCallback);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy