/// <summary> /// This method is used to download the bulk read job as a CSV or an ICS file (only for the Events module). /// </summary> /// <param name="jobId">The unique ID of the bulk read job.</param> /// <param name="destinationFolder">The absolute path where downloaded file has to be stored.</param> public static void DownloadResult(long jobId, string destinationFolder) { //example //long jobId = 34770615177002; //string destinationFolder = "/Users/user_name/Documents"; //Get instance of BulkReadOperations Class BulkReadOperations bulkReadOperations = new BulkReadOperations(); //Call DownloadResult method that takes jobId as parameters APIResponse <API.BulkRead.ResponseHandler> response = bulkReadOperations.DownloadResult(jobId); if (response != null) { //Get the status code from response Console.WriteLine("Status Code: " + response.StatusCode); if (new List <int>() { 204, 304 }.Contains(response.StatusCode)) { Console.WriteLine(response.StatusCode == 204 ? "No Content" : "Not Modified"); return; } //Check if expected response is received if (response.IsExpected) { //Get object from response API.BulkRead.ResponseHandler responseHandler = response.Object; if (responseHandler is FileBodyWrapper) { //Get the received FileBodyWrapper instance FileBodyWrapper fileBodyWrapper = (FileBodyWrapper)responseHandler; //Get StreamWrapper instance from the returned FileBodyWrapper instance StreamWrapper streamWrapper = fileBodyWrapper.File; Stream file = streamWrapper.Stream; string fullFilePath = Path.Combine(destinationFolder, streamWrapper.Name); using (FileStream outputFileStream = new FileStream(fullFilePath, FileMode.Create)) { file.CopyTo(outputFileStream); } } //Check if the request returned an exception else if (responseHandler is API.BulkRead.APIException) { //Get the received APIException instance API.BulkRead.APIException exception = (APIException)responseHandler; //Get the Status Console.WriteLine("Status: " + exception.Status.Value); //Get the Code Console.WriteLine("Code: " + exception.Code.Value); Console.WriteLine("Details: "); //Get the details map foreach (KeyValuePair <string, object> entry in exception.Details) { //Get each value in the map Console.WriteLine(entry.Key + ": " + JsonConvert.SerializeObject(entry.Value)); } //Get the Message Console.WriteLine("Message: " + exception.Message.Value); } } else { //If response is not as expected //Get model object from response Model responseObject = response.Model; //Get the response object's class Type type = responseObject.GetType(); //Get all declared fields of the response class Console.WriteLine("Type is: {0}", type.Name); PropertyInfo[] props = type.GetProperties(); Console.WriteLine("Properties (N = {0}):", props.Length); foreach (var prop in props) { if (prop.GetIndexParameters().Length == 0) { Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject)); } else { Console.WriteLine("{0} ({1}) : <Indexed>", prop.Name, prop.PropertyType.Name); } } } } }
/// <summary> /// This method is used to get the details of a bulk read job performed previously. /// </summary> /// <param name="jobId">The unique ID of the bulk read job.</param> public static void GetBulkReadJobDetails(long jobId) { //example //long jobId = 34770615177002; //Get instance of BulkReadOperations Class BulkReadOperations bulkReadOperations = new BulkReadOperations(); //Call GetBulkReadJobDetails method that takes jobId as parameter APIResponse <ResponseHandler> response = bulkReadOperations.GetBulkReadJobDetails(jobId); if (response != null) { //Get the status code from response Console.WriteLine("Status Code: " + response.StatusCode); if (new List <int>() { 204, 304 }.Contains(response.StatusCode)) { Console.WriteLine(response.StatusCode == 204 ? "No Content" : "Not Modified"); return; } //Check if expected response is received if (response.IsExpected) { //Get object from response API.BulkRead.ResponseHandler responseHandler = response.Object; if (responseHandler is ResponseWrapper) { //Get the received ResponseWrapper instance ResponseWrapper responseWrapper = (API.BulkRead.ResponseWrapper)responseHandler; //Get the list of obtained jobDetail instances List <JobDetail> jobDetails = responseWrapper.Data; foreach (JobDetail jobDetail in jobDetails) { //Get the Job ID of each jobDetail Console.WriteLine("Bulk read Job ID: " + jobDetail.Id); //Get the Operation of each jobDetail Console.WriteLine("Bulk read Operation: " + jobDetail.Operation); //Get the Operation of each jobDetail Console.WriteLine("Bulk read State: " + jobDetail.State.Value); //Get the Result instance of each jobDetail Result result = jobDetail.Result; //Check if Result is not null if (result != null) { //Get the Page of the Result Console.WriteLine("Bulkread Result Page: " + result.Page); //Get the Count of the Result Console.WriteLine("Bulkread Result Count: " + result.Count); //Get the Download URL of the Result Console.WriteLine("Bulkread Result Download URL: " + result.DownloadUrl); //Get the Per_Page of the Result Console.WriteLine("Bulkread Result Per_Page: " + result.PerPage); //Get the MoreRecords of the Result Console.WriteLine("Bulkread Result MoreRecords: " + result.MoreRecords); } // Get the Query instance of each jobDetail API.BulkRead.Query query = jobDetail.Query; if (query != null) { //Get the Module Name of the Query Console.WriteLine("Bulk read Query Module: " + query.Module); //Get the Page of the Query Console.WriteLine("Bulk read Query Page: " + query.Page); //Get the cvid of the Query Console.WriteLine("Bulk read Query cvid: " + query.Cvid); //Get the fields List of each Query List <string> fields = query.Fields; //Check if fields is not null if (fields != null) { foreach (object fieldName in fields) { //Get the Field Name of the Query Console.WriteLine("Bulk read Query Fields: " + fieldName); } } // Get the Criteria instance of each Query Criteria criteria = query.Criteria; //Check if criteria is not null if (criteria != null) { PrintCriteria(criteria); } } //Get the CreatedBy User instance of each jobDetail User createdBy = jobDetail.CreatedBy; //Check if createdBy is not null if (createdBy != null) { //Get the ID of the CreatedBy User Console.WriteLine("Bulkread Created By User-ID: " + createdBy.Id); //Get the Name of the CreatedBy User Console.WriteLine("Bulkread Created By user-Name: " + createdBy.Name); } //Get the CreatedTime of each jobDetail Console.WriteLine("Bulkread CreatedTime: " + jobDetail.CreatedTime); //Get the ID of each jobDetail Console.WriteLine("Bulkread File Type: " + jobDetail.FileType); } } //Check if the request returned an exception else if (responseHandler is API.BulkRead.APIException) { //Get the received APIException instance API.BulkRead.APIException exception = (API.BulkRead.APIException)responseHandler; //Get the Status Console.WriteLine("Status: " + exception.Status.Value); //Get the Code Console.WriteLine("Code: " + exception.Code.Value); Console.WriteLine("Details: "); //Get the details map foreach (KeyValuePair <string, object> entry in exception.Details) { //Get each value in the map Console.WriteLine(entry.Key + ": " + JsonConvert.SerializeObject(entry.Value)); } //Get the Message Console.WriteLine("Message: " + exception.Message.Value); } } else { //If response is not as expected //Get model object from response Model responseObject = response.Model; //Get the response object's class Type type = responseObject.GetType(); //Get all declared fields of the response class Console.WriteLine("Type is: {0}", type.Name); PropertyInfo[] props = type.GetProperties(); Console.WriteLine("Properties (N = {0}):", props.Length); foreach (var prop in props) { if (prop.GetIndexParameters().Length == 0) { Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject)); } else { Console.WriteLine("{0} ({1}) : <Indexed>", prop.Name, prop.PropertyType.Name); } } } } }