diff --git a/src/main/java/codes/thischwa/cf/CfDnsClient.java b/src/main/java/codes/thischwa/cf/CfDnsClient.java index 13b480c..4a1490a 100644 --- a/src/main/java/codes/thischwa/cf/CfDnsClient.java +++ b/src/main/java/codes/thischwa/cf/CfDnsClient.java @@ -15,8 +15,10 @@ import codes.thischwa.cf.model.ZoneMultipleResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.Nullable; @@ -297,9 +299,9 @@ public class CfDnsClient extends CfBasicHttpClient { RecordSingleResponse resp = postRequest(endpoint, rec, RecordSingleResponse.class); checkResponse(resp); log.info("Record {} of type {} successful created.", rec.getSld(), rec.getType()); - RecordEntity record = resp.getResult(); - record.setZoneId(zone.getId()); - return record; + RecordEntity retRec = resp.getResult(); + retRec.setZoneId(zone.getId()); + return retRec; } /** @@ -433,7 +435,10 @@ public class CfDnsClient extends CfBasicHttpClient { throws CloudflareNotFoundException { List filtered; if (types != null && types.length > 0) { - filtered = recs.stream().filter(rec -> Arrays.asList(types).contains(RecordType.valueOf(rec.getType()))).collect(Collectors.toList()); + Set allowedTypes = new HashSet<>(Arrays.asList(types)); + filtered = recs.stream() + .filter(rec -> allowedTypes.contains(RecordType.valueOf(rec.getType()))) + .collect(Collectors.toList());; } else { filtered = new ArrayList<>(recs); } diff --git a/src/main/java/codes/thischwa/cf/ResponseValidator.java b/src/main/java/codes/thischwa/cf/ResponseValidator.java index e5d6700..ae5de03 100644 --- a/src/main/java/codes/thischwa/cf/ResponseValidator.java +++ b/src/main/java/codes/thischwa/cf/ResponseValidator.java @@ -46,17 +46,27 @@ class ResponseValidator { private void validateResultCount(AbstractResponse resp, boolean singleResultExpected) throws CloudflareApiException { if (resp instanceof RecordMultipleResponse respMulti) { - if (singleResultExpected && respMulti.getResultInfo().totalCount() > 1) { - throw new CloudflareApiException( - "Unexpected result count: " + respMulti.getResultInfo().totalCount()); - } - if (emptyResultThrowsException && respMulti.getResultInfo().totalCount() == 0) { - throw new CloudflareNotFoundException("No result found"); - } + validateMultipleResponse(respMulti, singleResultExpected); } else if (resp instanceof AbstractSingleResponse respSingle) { - if (emptyResultThrowsException && respSingle.getResult() == null) { - throw new CloudflareNotFoundException("No result found"); - } + validateSingleResponse(respSingle); + } + } + + private void validateMultipleResponse(RecordMultipleResponse response, boolean singleResultExpected) + throws CloudflareApiException { + int totalCount = response.getResultInfo().totalCount(); + if (singleResultExpected && totalCount > 1) { + throw new CloudflareApiException("Unexpected result count: " + totalCount); + } + if (emptyResultThrowsException && totalCount == 0) { + throw new CloudflareNotFoundException("No result found"); + } + } + + private void validateSingleResponse(AbstractSingleResponse response) + throws CloudflareNotFoundException { + if (emptyResultThrowsException && response.getResult() == null) { + throw new CloudflareNotFoundException("No result found"); } } diff --git a/src/main/java/codes/thischwa/cf/fluent/RecordOperationsImpl.java b/src/main/java/codes/thischwa/cf/fluent/RecordOperationsImpl.java index a5b08d3..da9a5b7 100644 --- a/src/main/java/codes/thischwa/cf/fluent/RecordOperationsImpl.java +++ b/src/main/java/codes/thischwa/cf/fluent/RecordOperationsImpl.java @@ -45,16 +45,16 @@ public class RecordOperationsImpl implements RecordOperations { @Override public RecordEntity update(String newContent) throws CloudflareApiException { - List records = get(); - if (records.isEmpty()) { - throw new CloudflareApiException("No records found to update for subdomain: " + sld); + List recs = get(); + if (recs.isEmpty()) { + throw new CloudflareApiException("No recs found to update for subdomain: " + sld); } - if (records.size() > 1) { - throw new CloudflareApiException("Multiple records found. Please use recordUpdate() directly for precise control."); + if (recs.size() > 1) { + throw new CloudflareApiException("Multiple recs found. Please use recordUpdate() directly for precise control."); } - RecordEntity record = records.get(0); - record.setContent(newContent); - return client.recordUpdate(zone, record); + RecordEntity rec = recs.get(0); + rec.setContent(newContent); + return client.recordUpdate(zone, rec); } @Override