Ruby SDK Samples - Bulk Write Operations
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.upload_file(org_id, absolute_file_path)
# """
# This method is used to upload a CSV file in ZIP format for bulk write API. The response contains the file_id.
# :param org_id: The unique ID (zgid) of your organization obtained through the Organization API.
# :param absolute_file_path: The absoluteFilePath of the zip file you want to upload.
# """
# """
# example
# org_id = "680387586"
# absolute_file_path = "/Users/user_name/Documents/Leads.zip"
# """
# Get instance of BulkWriteOperations Class
bwo = BulkWrite::BulkWriteOperations.new
# Get instance of FileBodyWrapper class that will contain the request file
file_body_wrapper = BulkWrite::FileBodyWrapper.new
# """
# StreamWrapper can be initialized in any of the following ways
# * param 1 -> fileName
# * param 2 -> Read Stream.
# * param 3 -> Absolute File Path of the file to be attached
# """
# stream_wrapper = StreamWrapper.new(name,stream,absolutefilepath)
sw = Util::StreamWrapper.new(nil, nil, '/Users/user_name/RUBYWS/zohocrm-rubysdk-sample-application/3524033000005787003.zip')
# Set file to the FileBodyWrapper instance
file_body_wrapper.file = sw
# Get instance of HeaderMap Class
header_instance = HeaderMap.new
# Possible headers for upload_file operation
header_instance.add(BulkWrite::BulkWriteOperations::UploadFileHeader.feature, 'bulk-write')
header_instance.add(BulkWrite::BulkWriteOperations::UploadFileHeader.X_crm_org, org_id)
# Call upload_file method that takes FileBodyWrapper instance and header_instance as parameter
response = bwo.upload_file(file_body_wrapper, header_instance)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
# Check if expected instance is received.
if response.is_expected
# Get object from response
action_response = response.data_object
# Check if expected SuccessResponse instance is received
if action_response.is_a? BulkWrite::SuccessResponse
success_response = action_response
# Get the Code
print 'code:'
print success_response.code.value
# Get the Status
print "\n status:"
print success_response.status.value
# Get the Message
print "\n message:"
print success_response.message.value
# Get the details map
success_response.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
# Check if the request returned an exception
elsif action_response.is_a? BulkWrite::APIException
api_exception = action_response
# Get the Code
print 'code:'
print api_exception.code.value
# Get the Status
print "\n status:"
print api_exception.status.value
# Get the Message
print "\n message:"
print api_exception.message.value
# Get the ErrorMessage
if api_exception.error_message.nil?
print "\n ErrorMessage:"
print api_exception.error_message.value
end
# Get the ErrorCode
if api_exception.error_code.nil?
print "\n ErrorCode:"
print api_exception.error_code
end
# Get the XError
if api_exception.x_error.nil?
print "\n XError:"
print api_exception.x_error.value
end
# Get the Info
if api_exception.info.nil?
print "\n Infi:"
print api_exception.info.value
end
# Get the XInfo
if api_exception.x_info.nil?
print "\n XInfo:"
print api_exception.x_info.value
end
print "\n HttpStatus:"
print api_exception.http_status
# Get the details map
api_exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
print "\n"
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.get_bulk_write_job_details(job_id)
# """
# This method is used to get the details of a bulk write job performed previously.
# :param job_id: The unique ID of the bulk write job.
# """
# """
# example
# job_id = "3477061000005615003"
# """
# Get instance of BulkWriteOperations Class
bwo = BulkWrite::BulkWriteOperations.new
# Call get_bulk_write_job_details method that takes job_id as parameter
response = bwo.get_bulk_write_job_details(job_id)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
if [204, 304].include? status_code
print(status_code == 204 ? 'No Content' : 'Not Modified')
return
end
#Check if expected instance is received
if response.is_expected
response_wrapper = response.data_object
# Check if expected BulkWriteResponse instance is received
if response_wrapper.is_a? BulkWrite::BulkWriteResponse
bulk_write_response = response_wrapper
# Get the Job Status of the bulkWriteResponse
print "\n Bulk write Job Status: "
print bulk_write_response.status
# Get the CharacterEncoding of the bulkWriteResponse
print "\n Bulk write CharacterEncoding: "
print bulk_write_response.character_encoding
resources = bulk_write_response.resource
# Get the Status of each Resource
# Get the Type of each Resource
# Get the Module of each Resource
# Get the APIName of each FieldMapping
# Get the Index of each FieldMapping
# Get the Format of each FieldMapping
# Get the FindBy of each FieldMapping
# Get the file
# Get the Status of the File
# Get the Name of the File
# Get the AddedCount of the File
# Get the SkippedCount of the File
# Get the UpdatedCount of the File
# Get the TotalCount of the File
resources&.each do |resource|
# Get the Status of each Resource
print "\n Bulk write Resource Status: "
print resource.status.value
# Get the Type of each Resource
print "\n Bulk write Resource Type: "
print resource.type.value
# Get the Module of each Resource
print "\n Bulk write Resource Module: "
print resource.module
field_mappings = resource.field_mappings
# Get the APIName of each FieldMapping
# Get the Index of each FieldMapping
# Get the Format of each FieldMapping
# Get the FindBy of each FieldMapping
field_mappings&.each do |field_mapping|
# Get the APIName of each FieldMapping
print "\n Bulk write Resource FieldMapping Module: "
print field_mapping.api_name
unless field_mapping.index.nil?
# Get the Index of each FieldMapping
print "\n Bulk write Resource FieldMapping Index: "
print field_mapping.index
end
unless field_mapping.format.nil?
# Get the Format of each FieldMapping
print "\n Bulk write Resource FieldMapping Format: "
print field_mapping.format
end
unless field_mapping.find_by.nil?
# Get the FindBy of each FieldMapping
print "\n Bulk write Resource FieldMapping FindBy: "
print field_mapping.find_by
end
field_mapping.default_value&.each do |k, v|
print "\n "
print k
print v
print "\n"
end
end
# Get the file
file = resource.file
unless file.nil?
# Get the Status of the File
print "\n Bulk write Resource File Status: "
# Get the Name of the File
print file.status.value
print "\n Bulk write Resource File Name: "
print file.name
# Get the AddedCount of the File
print "\n Bulk write Resource AddedCount: "
print file.added_count
# Get the SkippedCount of the File
print "\n Bulk write Resource SkippedCount: "
print file.skipped_count
# Get the UpdatedCount of the File
print "\n Bulk write Resource UpdatedCount: "
print file.updated_count
# Get the TotalCount of the File
print "\n Bulk write Resource TotalCount: "
print file.total_count
end
end
# Get the BulkWrite ID
print "\n Bulk write ID: "
print bulk_write_response.id.to_s
callback = bulk_write_response.callback
if callback.nil?
# Get the CallBack Url
print "\n Bulk write CallBack Url: "
print callback.url
# Get the CallBack Method
print "\n Bulk write CallBack Method: "
print callback.method.value
end
result = bulk_write_response.result
unless result.nil?
# Get the DownloadUrl of the Result
print "\n Bulk write DownloadUrl: "
print result.download_url
end
# Get the CreatedBy User instance of the BulkWriteResponse
created_by = bulk_write_response.created_by
# Check if created_by is not None
unless created_by.nil?
# Get the Name of the created_by User
print "\n Bulk write Created By User-ID: "
print created_by.id.to_s
# Get the ID of the created_by User
print "\n Bulk write Created By user-Name:"
print created_by.name
end
# Get the Operation of the BulkWriteResponse
print "\n Bulk write Operation: "
print bulk_write_response.operation
# Get the CreatedTime of the BulkWriteResponse
print "\n Bulk write File CreatedTime: "
print bulk_write_response.created_time
elsif response_wrapper.is_a? BulkWrite::APIException
exception = response_wrapper
# Get the Code
print 'code:'
print exception.code.value
# Get the Status
print "\n status:"
print exception.status.value
# Get the Message
print "\n message:"
print exception.message.value
# Get the Details map
exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
print "\n"
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.download_bulk_write_result(download_url, destination_folder)
# """
# This method is used to download the result of bulk write job.
# :param download_url: The URL present in the download_url key in the response of Get Bulk Write Job Details.
# :param destination_folder: The absolute path where downloaded file has to be stored.
# """
# """
# example
# download_url = "https://download-accl.zoho.com/v2/crm/6735/bulk-write/347706122009/347706122009.zip"
# destination_folder = "/Users/user_name/Documents"
# """
# Get instance of BulkWriteOperations Class
bwo = BulkWrite::BulkWriteOperations.new
# Call download_bulk_write_result method that takes download_url as parameter
response = bwo.download_bulk_write_result(download_url)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
if [204, 304].include? status_code
print(status_code == 204 ? 'No Content' : 'Not Modified')
return
end
# Check if expected instance is received.
if response.is_expected
# Get object from response
response_handler = response.data_object
# Check if expected FileBodyWrapper instance is received.
if response_handler.is_a? BulkWrite::FileBodyWrapper
file_body_wrapper = response_handler
# Get StreamWrapper instance from the returned FileBodyWrapper instance
stream_wrapper = file_body_wrapper.file
# Open the destination file where the file needs to be written in 'w' mode
File.open(stream_wrapper.name, 'w') do |f|
f.write(stream_wrapper.stream)
end
# Check if the request returned an exception
elsif response_handler.is_a? BulkWrite::APIException
exception = response_handler
# Get the Code
print "\n code:"
print exception.code.value
# Get the Status
print "\n status:"
print exception.status.value
# Get the Message
print "\n message:"
print exception.message.value
# Get the details map
exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end