Configuration

Before you get started with creating your Scala application, you need to register your client and authenticate the app with Zoho.

Mandatory KeysOptional Keys
userlogger
environmentstore
tokensdk_config
 proxy
 resource_path

Follow the below steps to configure the SDK.

  1. 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
    
  2. 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")
    
  3. 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
    
  4. 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()
    
  5. 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()
    
  6. 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
    
  7. 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"
    
  8. 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()
    
  9. Initialize the SDK and make API calls.