/// <summary> /// Read all lists from mailchimp /// </summary> /// <param name="options">The options to filter the lists result</param> /// <returns></returns> public MailChimpWrapperResponse <ListReadAllResponseModel> ReadAll(ListReadAllOptions options = null) { try { // Adds the resource var request = new RestRequest(ResourcesEndpoints.ListReadAll(), Method.GET); // Check if options was passed if (options != null) { SetReadAllOptions(ref request, options); } // Execute the request var response = restClient.Execute(request); // If the request return ok, then return MailChimpWrapperResponse with deserialized object if (response.StatusCode == System.Net.HttpStatusCode.OK) { return new MailChimpWrapperResponse <ListReadAllResponseModel> { objectRespose = JsonConvert.DeserializeObject <ListReadAllResponseModel>(response.Content) } } ; // If an error occurs, encapsulates the error in MailChimpWrapperResponse var errorContent = JsonConvert.DeserializeObject <ErrorModel>(response.Content); return(new MailChimpWrapperResponse <ListReadAllResponseModel> { hasErrors = true, error = errorContent }); } catch (Exception ex) { return(ErrorResponse <ListReadAllResponseModel>(ex)); } }
/// <summary> /// Set on the request all the filters from ListReadAllOptions /// </summary> /// <param name="request">Request that will be used to call the API</param> /// <param name="options">Object with the options of filter for mailchimp call</param> private void SetReadAllOptions(ref RestRequest request, ListReadAllOptions options) { if (options.fields != null && options.fields.Count > 0) { var fieldsString = ""; for (var i = 0; i < options.fields.Count; i++) { if (i < options.fields.Count - 1) { fieldsString += options.fields[i] + ","; } else { fieldsString += options.fields[i]; } } request.AddQueryParameter("fields", fieldsString); } if (options.exclude_fields != null && options.exclude_fields.Count > 0) { var excludeFieldsString = ""; for (var i = 0; i < options.exclude_fields.Count; i++) { if (i < options.fields.Count - 1) { excludeFieldsString += options.exclude_fields[i] + ","; } else { excludeFieldsString += options.exclude_fields[i]; } } request.AddQueryParameter("exclude_fields", excludeFieldsString); } if (options.count != null) { request.AddQueryParameter("count", ((int)options.count).ToString()); } if (options.offset != null) { request.AddQueryParameter("offset", ((int)options.offset).ToString()); } if (!string.IsNullOrEmpty(options.before_date_created)) { request.AddQueryParameter("before_date_created", options.before_date_created); } if (!string.IsNullOrEmpty(options.since_date_created)) { request.AddQueryParameter("since_date_created", options.since_date_created); } if (!string.IsNullOrEmpty(options.before_campaign_last_sent)) { request.AddQueryParameter("before_campaign_last_sent", options.before_campaign_last_sent); } if (!string.IsNullOrEmpty(options.since_campaign_last_sent)) { request.AddQueryParameter("since_campaign_last_sent", options.since_campaign_last_sent); } }