/// <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, MembersReadAllOptions 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.email_type)) { request.AddQueryParameter("email_type", options.email_type); } if (!string.IsNullOrEmpty(options.status)) { request.AddQueryParameter("status", options.status); } if (!string.IsNullOrEmpty(options.since_timestamp_opt)) { request.AddQueryParameter("since_timestamp_opt", options.since_timestamp_opt); } if (!string.IsNullOrEmpty(options.before_timestamp_opt)) { request.AddQueryParameter("before_timestamp_opt", options.before_timestamp_opt); } if (!string.IsNullOrEmpty(options.since_last_changed)) { request.AddQueryParameter("since_last_changed", options.since_last_changed); } if (!string.IsNullOrEmpty(options.before_last_changed)) { request.AddQueryParameter("before_last_changed", options.before_last_changed); } }
/// <summary> /// Read all members from a list on mailchimp. /// </summary> /// <param name="listId">The listId to get the merge fields from.</param> /// <param name="options">The options to filter the lists result.</param> /// <returns></returns> public MailChimpWrapperResponse <MembersReadAllResponseModel> ReadAll(string listId, MembersReadAllOptions options = null) { try { // Adds the resource var request = new RestRequest(ResourcesEndpoints.MembersReadAll(listId), Method.GET); request.JsonSerializer = new CustomNewtonsoftSerializer(new JsonSerializer() { NullValueHandling = NullValueHandling.Ignore, }); // 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 <MembersReadAllResponseModel> { objectRespose = JsonConvert.DeserializeObject <MembersReadAllResponseModel>(response.Content) } } ; // If an error occurs, encapsulates the error in MailChimpWrapperResponse var errorContent = JsonConvert.DeserializeObject <ErrorModel>(response.Content); return(new MailChimpWrapperResponse <MembersReadAllResponseModel> { hasErrors = true, error = errorContent }); } catch (Exception ex) { return(ErrorResponse <MembersReadAllResponseModel>(ex)); } }