Configuration
Before you get started with creating your Scala application, you need to register your client and authenticate the app with Zoho.
Mandatory Keys | Optional Keys |
---|---|
user | logger |
environment | store |
token | sdk_config |
proxy | |
resource_path |
Follow the below steps to configure the SDK.
Create an instance of Logger Class to log exception and API information.
import com.zoho.api.logger.Logger import com.zoho.api.logger.Logger.Levels /* * Create an instance of Logger Class that takes two parameters * level -> Level of the log messages to be logged. Can be configured by typing Levels "." and choose any level from the list displayed. * filePath -> Absolute file path, where messages need to be logged. */ var logger = new Logger.Builder() .level(Logger.Levels.ALL) .filePath("/Users/user_name/Documents/scala_sdk_log.log") .build
Create an instance of UserSignature that identifies the current user.
import com.zoho.crm.api.UserSignature //Create an UserSignature instance that takes user Email as parameter var user = new UserSignature("abc@zoho.com")
Configure the API environment which decides the domain and the URL to make API calls.
/* * Configure the environment * which is of the pattern Domain.Environment * Available Domains: USDataCenter, EUDataCenter, INDataCenter, CNDataCenter, AUDataCenter * Available Environments: PRODUCTION, DEVELOPER, SANDBOX */ val env = USDataCenter.PRODUCTION
Create an instance of OAuthToken with the information that you get after registering your Zoho client.
/* * Create a Token instance that requires the following * clientId -> OAuth client id. * clientSecret -> OAuth client secret. * refreshToken -> REFRESH token. * accessToken -> Access token. * grantToken -> GRANT token. * id -> User unique id. * redirectURL -> OAuth redirect URL. */ //Create a Token instance // if refresh token is available // The SDK throws an exception, if the given id is invalid. var token = new OAuthToken.Builder() .id("id") .build() // if grant token is available var token = new OAuthToken.Builder() .clientID("clientId") .clientSecret("clientSecret") .grantToken("grantToken") .redirectURL("redirectURL") .build() // if ID (obtained from persistence) is available var token = new OAuthToken.Builder() .clientID("clientId") .clientSecret("clientSecret") .refreshToken("refreshToken") .redirectURL("redirectURL") .build() // if access token is available var token = new OAuthToken.Builder() .accessToken("accessToken") .build()
Create an instance of TokenStore to persist tokens used for authenticating all the requests.
/* * Create an instance of DBStore that requires the following * host -> DataBase host name. Default value "localhost" * databaseName -> DataBase name. Default value "zohooauth" * userName -> DataBase user name. Default value "root" * password -> DataBase password. Default value "" * portNumber -> DataBase port number. Default value "3306" * tabletName -> DataBase table name. Default value "oauthtoken" */ //var tokenstore = new DBStore.Builder().build var tokenstore = new DBStore.Builder() .host("hostName") .databaseName("databaseName") .tableName("tableName") .userName("userName") .password("password") .portNumber("portNumber") .build //var tokenstore = new FileStore("/Users/user_name/Documents/scala_sdk_token.txt") //var tokenStore = new CustomStore()
Create an instance of SDKConfig containing the SDK configuration.
/* * autoRefreshFields * if true - all the modules' fields will be auto-refreshed in the background, every hour. * if false - the fields will not be auto-refreshed in the background. The user can manually delete the file(s) or refresh the fields using methods from ModuleFieldsHandler(com.zoho.crm.api.util.ModuleFieldsHandler) * * pickListValidation * A boolean field that validates user input for a pick list field and allows or disallows the addition of a new value to the list. * True - the SDK validates the input. If the value does not exist in the pick list, the SDK throws an error. * False - the SDK does not validate the input and makes the API request with the user’s input to the pick list * * connectionTimeout * A Integer field to set connection timeout * * requestTimeout * A Integer field to set request timeout * * socketTimeout * A Integer field to set socket timeout */ var sdkConfig = new SDKConfig.Builder().pickListValidation(false).autoRefreshFields(false).connectionTimeout(1000).requestTimeout(1000).socketTimeout(1000).build
The path containing the absolute directory path to store user-specific files containing module fields information. By default, the SDK stores the user-specific files within a folder in the current working directory.
var resourcePath = "/Users/user_name/Documents/scalasdk-application"
Create an instance of RequestProxy containing the proxy properties of the user.
/* * Create an instance of RequestProxy * host -> proxyHost * port -> proxyPort * user -> proxyUser * password -> password * userDomain -> userDomain */ var requestProxy = new RequestProxy.Builder() .host("proxyHost") .port(80) .user("proxyUser") .password("password") .userDomain("userDomain") .build()
Initialize the SDK and make API calls.