Scala SDK Samples - Attachment Operations
package com.zoho.crm.sample.attachments
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.APIException
import com.zoho.crm.api.attachments.ActionHandler
import com.zoho.crm.api.attachments.ActionResponse
import com.zoho.crm.api.attachments.ActionWrapper
import com.zoho.crm.api.attachments.AttachmentsOperations
import com.zoho.crm.api.attachments.AttachmentsOperations.{DeleteAttachmentsParam, GetAttachmentsParam, UploadLinkAttachmentParam}
import com.zoho.crm.api.attachments.FileBodyWrapper
import com.zoho.crm.api.attachments.ResponseHandler
import com.zoho.crm.api.attachments.ResponseWrapper
import com.zoho.crm.api.attachments.SuccessResponse
import com.zoho.crm.api.record.Info
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
@SuppressWarnings(Array("unused")) object Attachments {
/**
* Get Attachments
* This method is used to get a single record's attachments' details with ID and print the response.
*
* @throws Exception
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to get attachments
*/
@throws[Exception]
def getAttachments(moduleAPIName: String, recordId: Long): Unit = { //example
//String moduleAPIName = "Leads"
//Long recordId = 34770615177002l
//Get instance of AttachmentsOperations Class that takes recordId and moduleAPIName as parameter
val attachmentsOperations = new AttachmentsOperations(moduleAPIName,recordId)
//Call getAttachments method
val paramInstance = new ParameterMap
paramInstance.add(new GetAttachmentsParam().page,1)
val responseOption = attachmentsOperations.getAttachments(Option(paramInstance))
if (responseOption.isDefined) { //check response
var response= responseOption.get
println("Status Code: " + response.getStatusCode)
if (util.Arrays.asList(204, 304).contains(response.getStatusCode)) {
println(if (response.getStatusCode == 204) "No Content"
else "Not Modified")
return
}
//Check if expected response is received
if (response.isExpected) { //Get object from response
val responseHandler = response.getObject
if (responseHandler.isInstanceOf[ResponseWrapper]) { //Get the received ResponseWrapper instance
val responseWrapper = responseHandler.asInstanceOf[ResponseWrapper]
//Get the list of obtained Attachment instances
val attachments = responseWrapper.getData
for (attachment <- attachments) { //Get the owner User instance of each attachment
val ownerOption = attachment.getOwner
//Check if owner is not null
if (ownerOption.isDefined) { //Get the Name of the Owner
val owner = ownerOption.get
println("Attachment Owner User-Name: " + owner.getName)
//Get the ID of the Owner
println("Attachment Owner User-ID: " + owner.getId)
//Get the Email of the Owner
println("Attachment Owner User-Email: " + owner.getEmail)
}
//Get the modified time of each attachment
println("Attachment Modified Time: " + attachment.getModifiedTime.toString)
//Get the name of the File
println("Attachment File Name: " + attachment.getFileName)
//Get the created time of each attachment
println("Attachment Created Time: " + attachment.getCreatedTime.toString)
//Get the Attachment file size
println("Attachment File Size: " + attachment.getSize.toString)
//Get the parentId Record instance of each attachment
val parentIdOption = attachment.getParentId
//Check if parentId is not null
if (parentIdOption.isDefined) { //Get the parent record Name of each attachment
val parentId = parentIdOption.get
println("Attachment parent record Name: " + parentId.getKeyValue("name"))
//Get the parent record ID of each attachment
println("Attachment parent record ID: " + parentId.getId)
}
//Get the attachment is Editable
println("Attachment is Editable: " + attachment.geteditable.toString)
//Get the file ID of each attachment
println("Attachment File ID: " + attachment.getfileId())
//Get the type of each attachment
println("Attachment File Type: " + attachment.gettype)
//Get the seModule of each attachment
println("Attachment seModule: " + attachment.getseModule())
//Get the modifiedBy User instance of each attachment
val modifiedByOption = attachment.getModifiedBy
//Check if modifiedBy is not null
if (modifiedByOption.isDefined) { //Get the Name of the modifiedBy User
val modifiedBy = modifiedByOption.get
println("Attachment Modified By User-Name: " + modifiedBy.getName)
//Get the ID of the modifiedBy User
println("Attachment Modified By User-ID: " + modifiedBy.getId)
//Get the Email of the modifiedBy User
println("Attachment Modified By User-Email: " + modifiedBy.getEmail)
}
//Get the state of each attachment
println("Attachment State: " + attachment.getstate)
//Get the ID of each attachment
println("Attachment ID: " + attachment.getId)
//Get the createdBy User instance of each attachment
val createdByOption = attachment.getCreatedBy
//Check if createdBy is not null
if (createdByOption.isDefined) { //Get the name of the createdBy User
val createdBy = createdByOption.get
println("Attachment Created By User-Name: " + createdBy.getName)
//Get the ID of the createdBy User
println("Attachment Created By User-ID: " + createdBy.getId)
//Get the Email of the createdBy User
println("Attachment Created By User-Email: " + createdBy.getEmail)
}
//Get the linkUrl of each attachment
println("Attachment LinkUrl: " + attachment.getlinkUrl())
}
//Get the Object obtained Info instance
val infoOption = responseWrapper.getInfo
//Check if info is not null
if (infoOption.isDefined) {
val info = infoOption.get
if (info.getPerPage.isDefined) { //Get the PerPage of the Info
println("Record Info PerPage: " + info.getPerPage.toString)
}
if (info.getCount.isDefined) { //Get the Count of the Info
println("Record Info Count: " + info.getCount.toString)
}
if (info.getPage.isDefined) { //Get the Page of the Info
println("Record Info Page: " + info.getPage.toString)
}
if (info.getMoreRecords.isDefined) { //Get the MoreRecords of the Info
println("Record Info MoreRecords: " + info.getMoreRecords.toString)
}
}
}
else { //Check if the request returned an exception
if (responseHandler.isInstanceOf[APIException]) { //Get the received APIException instance
val exception = responseHandler.asInstanceOf[APIException]
//Get the Status
println("Status: " + exception.getStatus.getValue)
//Get the Code
println("Code: " + exception.getCode.getValue)
println("Details: ")
//Get the details map
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
//Get the Message
println("Message: " + exception.getMessage.getValue)
}
}
}
else { //If response is not as expected
//Get model object from response
val responseObject = response.getModel
//Get the response object's class
val clas = responseObject.getClass
//Get all declared fields of the response class
val fields = clas.getDeclaredFields
for (field <- fields) { //Get each value
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}
package com.zoho.crm.sample.attachments
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.APIException
import com.zoho.crm.api.attachments.ActionHandler
import com.zoho.crm.api.attachments.ActionResponse
import com.zoho.crm.api.attachments.ActionWrapper
import com.zoho.crm.api.attachments.AttachmentsOperations
import com.zoho.crm.api.attachments.AttachmentsOperations.{DeleteAttachmentsParam, GetAttachmentsParam, UploadLinkAttachmentParam}
import com.zoho.crm.api.attachments.FileBodyWrapper
import com.zoho.crm.api.attachments.ResponseHandler
import com.zoho.crm.api.attachments.ResponseWrapper
import com.zoho.crm.api.attachments.SuccessResponse
import com.zoho.crm.api.record.Info
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
@SuppressWarnings(Array("unused")) object Attachments {
/**
* Upload Attachments
* This method is used to upload an attachment to a single record of a module with ID and print the response.
*
* @throws Exception
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to upload attachment
* @param absoluteFilePath The absolute file path of the file to be attached
*/
@throws[Exception]
def uploadAttachments(moduleAPIName: String, recordId: Long, absoluteFilePath: String): Unit = { // String moduleAPIName = "Leads"
// Long recordId = 34770615177002l
// String absoluteFilePath = "/Users/use_name/Desktop/image.png"
val attachmentsOperations = new AttachmentsOperations(moduleAPIName,recordId)
//Get instance of FileBodyWrapper class that will contain the request file
val fileBodyWrapper = new FileBodyWrapper
//Get instance of StreamWrapper class that takes absolute path of the file to be attached as parameter
val streamWrapper = new StreamWrapper(absoluteFilePath)
//Set file to the FileBodyWrapper instance
fileBodyWrapper.setFile(Option(streamWrapper))
//Call uploadAttachment method that takes FileBodyWrapper instance as parameter
val responseOption = attachmentsOperations.uploadAttachment(fileBodyWrapper)
if (responseOption.isDefined) {
val response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) { //Get the received ActionWrapper instance
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
//Get the list of obtained action responses
val actionResponses = actionWrapper.getData
for (actionResponse <- actionResponses) { //Check if the request is successful
if (actionResponse.isInstanceOf[SuccessResponse]) { //Get the received SuccessResponse instance
val successResponse = actionResponse.asInstanceOf[SuccessResponse]
println("Status: " + successResponse.getStatus.getValue)
println("Code: " + successResponse.getCode.getValue)
println("Details: ")
if (successResponse.getDetails != null) {
successResponse.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
if (exception.getDetails != null) {
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
println("Message: " + exception.getMessage.getValue)
}
}
}
else if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
if (exception.getDetails != null) {
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field <- fields) {
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}
package com.zoho.crm.sample.attachments
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.APIException
import com.zoho.crm.api.attachments.ActionHandler
import com.zoho.crm.api.attachments.ActionResponse
import com.zoho.crm.api.attachments.ActionWrapper
import com.zoho.crm.api.attachments.AttachmentsOperations
import com.zoho.crm.api.attachments.AttachmentsOperations.{DeleteAttachmentsParam, GetAttachmentsParam, UploadLinkAttachmentParam}
import com.zoho.crm.api.attachments.FileBodyWrapper
import com.zoho.crm.api.attachments.ResponseHandler
import com.zoho.crm.api.attachments.ResponseWrapper
import com.zoho.crm.api.attachments.SuccessResponse
import com.zoho.crm.api.record.Info
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
@SuppressWarnings(Array("unused")) object Attachments {
/**
* Delete Attachments
* This method is used to Delete attachments to a single record of a module with ID and print the response.
*
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to delete attachment
* @param attachmentIds The List of attachment IDs to be deleted
*/
@throws[Exception]
def deleteAttachments(moduleAPIName: String, recordId: Long, attachmentIds: ArrayBuffer[Long]): Unit = { // List<Long> attachmentIds = new ArrayList<Long>(Arrays.asList(34770615979001l, 34770615968003, 34770615961010l))
//Get instance of RecordOperations Class that takes recordId and moduleAPIName as parameter
val attachmentOperations = new AttachmentsOperations(moduleAPIName,recordId)
//Get instance of ParameterMap Class
val paramInstance = new ParameterMap
for (attachmentId <- attachmentIds) {
paramInstance.add(new DeleteAttachmentsParam().ids, attachmentId)
}
//Call deleteAttachments method that takes paramInstance as parameter
val responseOption = attachmentOperations.deleteAttachments(Option(paramInstance))
if (responseOption.isDefined) {
val response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) {
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
//Get the list of obtained Attachment Record instances
val actionResponses = actionWrapper.getData
for (actionResponse <- actionResponses) {
if (actionResponse.isInstanceOf[SuccessResponse]) {
val successResponse = actionResponse.asInstanceOf[SuccessResponse]
println("Status: " + successResponse.getStatus.getValue)
println("Code: " + successResponse.getCode.getValue)
println("Details: ")
if (successResponse.getDetails != null) {
successResponse.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
}
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
}
else if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field <- fields) {
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}
package com.zoho.crm.sample.attachments
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.APIException
import com.zoho.crm.api.attachments.ActionHandler
import com.zoho.crm.api.attachments.ActionResponse
import com.zoho.crm.api.attachments.ActionWrapper
import com.zoho.crm.api.attachments.AttachmentsOperations
import com.zoho.crm.api.attachments.AttachmentsOperations.{DeleteAttachmentsParam, GetAttachmentsParam, UploadLinkAttachmentParam}
import com.zoho.crm.api.attachments.FileBodyWrapper
import com.zoho.crm.api.attachments.ResponseHandler
import com.zoho.crm.api.attachments.ResponseWrapper
import com.zoho.crm.api.attachments.SuccessResponse
import com.zoho.crm.api.record.Info
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
@SuppressWarnings(Array("unused")) object Attachments {
/**
* Delete Attachment
* This method is used to delete an attachment to a single record of a module with ID and print the response.
*
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to delete attachment
* @param attachmentId The ID of the attachment to be deleted
*/
@throws[Exception]
def deleteAttachment(moduleAPIName: String, recordId: Long, attachmentId: Long): Unit = { // Long recordId = 3477065177002
// Long attachmentId = "3477061177002"
val attachmentsOperations = new AttachmentsOperations(moduleAPIName,recordId)
//Call deleteAttachment method that takes attachmentId as parameter
val responseOption = attachmentsOperations.deleteAttachment(attachmentId)
if (responseOption.isDefined) {
val response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) {
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
//Get the list of obtained Action Response instances
val actionResponses = actionWrapper.getData
for (actionResponse <- actionResponses) {
if (actionResponse.isInstanceOf[SuccessResponse]) {
val successResponse = actionResponse.asInstanceOf[SuccessResponse]
println("Status: " + successResponse.getStatus.getValue)
println("Code: " + successResponse.getCode.getValue)
println("Details: ")
successResponse.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
}
else if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field <- fields) {
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}
package com.zoho.crm.sample.attachments
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
import java.io.OutputStream
import java.util
import com.zoho.crm.api.ParameterMap
import com.zoho.crm.api.attachments.APIException
import com.zoho.crm.api.attachments.ActionHandler
import com.zoho.crm.api.attachments.ActionResponse
import com.zoho.crm.api.attachments.ActionWrapper
import com.zoho.crm.api.attachments.AttachmentsOperations
import com.zoho.crm.api.attachments.AttachmentsOperations.{DeleteAttachmentsParam, GetAttachmentsParam, UploadLinkAttachmentParam}
import com.zoho.crm.api.attachments.FileBodyWrapper
import com.zoho.crm.api.attachments.ResponseHandler
import com.zoho.crm.api.attachments.ResponseWrapper
import com.zoho.crm.api.attachments.SuccessResponse
import com.zoho.crm.api.record.Info
import com.zoho.crm.api.record.Record
import com.zoho.crm.api.util.APIResponse
import com.zoho.crm.api.util.Model
import com.zoho.crm.api.util.StreamWrapper
import scala.collection.mutable.ArrayBuffer
@SuppressWarnings(Array("unused")) object Attachments {
/**
* Upload Link Attachments
* This method is used to upload link attachment to a single record of a module with ID and print the response.
*
* @param moduleAPIName The API Name of the record's module
* @param recordId The ID of the record to upload Link attachment
* @param attachmentURL The attachmentURL of the doc or image link to be attached
*/
@throws[Exception]
def uploadLinkAttachments(moduleAPIName: String, recordId: Long, attachmentURL: String): Unit = {
val attachmentsOperations = new AttachmentsOperations(moduleAPIName,recordId)
val paramInstance = new ParameterMap
paramInstance.add(new UploadLinkAttachmentParam().attachmentUrl, attachmentURL)
//Call uploadLinkAttachment method that takes paramInstance as parameter
val responseOption = attachmentsOperations.uploadLinkAttachment(Option(paramInstance))
if (responseOption.isDefined) {
val response = responseOption.get
println("Status Code: " + response.getStatusCode)
if (response.isExpected) {
val actionHandler = response.getObject
if (actionHandler.isInstanceOf[ActionWrapper]) {
val actionWrapper = actionHandler.asInstanceOf[ActionWrapper]
val actionResponses = actionWrapper.getData
for (actionResponse <- actionResponses) {
if (actionResponse.isInstanceOf[SuccessResponse]) {
val successResponse = actionResponse.asInstanceOf[SuccessResponse]
println("Status: " + successResponse.getStatus.getValue)
println("Code: " + successResponse.getCode.getValue)
println("Details: ")
successResponse.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + successResponse.getMessage.getValue)
}
else if (actionResponse.isInstanceOf[APIException]) {
val exception = actionResponse.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
}
else if (actionHandler.isInstanceOf[APIException]) {
val exception = actionHandler.asInstanceOf[APIException]
println("Status: " + exception.getStatus.getValue)
println("Code: " + exception.getCode.getValue)
println("Details: ")
exception.getDetails.foreach(entry=>{
println(entry._1 + ": " + entry._2)
})
println("Message: " + exception.getMessage.getValue)
}
}
else {
val responseObject = response.getModel
val clas = responseObject.getClass
val fields = clas.getDeclaredFields
for (field <- fields) {
println(field.getName + ":" + field.get(responseObject))
}
}
}
}
}