86 lines
3.4 KiB
Java
86 lines
3.4 KiB
Java
package codes.thischwa.cf;
|
|
|
|
import lombok.Getter;
|
|
|
|
/**
|
|
* Enum CfRequest encapsulates various API endpoint paths for managing DNS zones and records in a
|
|
* cohesive and reusable manner. Each enum constant represents a specific API request path.
|
|
*/
|
|
@Getter
|
|
public enum CfRequest {
|
|
|
|
/**
|
|
* Represents the API endpoint path for retrieving the list of DNS zones.
|
|
*/
|
|
ZONE_LIST("/zones"),
|
|
/**
|
|
* Represents the API endpoint path for retrieving information about a specific DNS zone by its
|
|
* name. The endpoint path supports a placeholder for the zone name, which needs to be provided to
|
|
* construct the complete path.
|
|
*/
|
|
ZONE_INFO("/zones?name=%s"),
|
|
|
|
/**
|
|
* Represents the API endpoint path for retrieving information about DNS records within a
|
|
* specific DNS zone. The endpoint path includes a placeholder for the zone identifier, which
|
|
* needs to be provided to construct the complete path.
|
|
*/
|
|
RECORD_LIST("/zones/%s/dns_records"),
|
|
/**
|
|
* Represents the API endpoint path for retrieving information about a DNS getRecord within a
|
|
* specific DNS zone by its name. The endpoint path includes placeholders for the zone identifier
|
|
* and the getRecord name, which need to be provided to construct the complete path.
|
|
*/
|
|
RECORD_LIST_NAME("/zones/%s/dns_records?name=%s"),
|
|
/**
|
|
* Represents the API endpoint path for creating a new DNS getRecord within a specific DNS zone. The
|
|
* endpoint path includes a placeholder for the zone identifier, which needs to be provided to
|
|
* construct the complete path.
|
|
*/
|
|
RECORD_CREATE("/zones/%s/dns_records"),
|
|
/**
|
|
* Represents the API endpoint path for updating an existing DNS getRecord within a specific DNS
|
|
* zone. The endpoint path includes placeholders for the zone identifier and the getRecord
|
|
* identifier, which need to be provided to construct the complete path.
|
|
*/
|
|
RECORD_UPDATE("/zones/%s/dns_records/%s"),
|
|
/**
|
|
* Represents the API endpoint path for performing batch operations on DNS records within a specific zone.
|
|
* The placeholder "%s" in the path is intended to be replaced by a zone identifier.
|
|
* This constant is used to construct the URL for interacting with the batch DNS records API.
|
|
*/
|
|
RECORD_BATCH("/zones/%s/dns_records/batch"),
|
|
/**
|
|
* Represents the API endpoint path for deleting an existing DNS getRecord within a specific DNS
|
|
* zone. The endpoint path includes placeholders for the zone identifier and the getRecord
|
|
* identifier, which need to be provided to construct the complete path.
|
|
*/
|
|
RECORD_DELETE("/zones/%s/dns_records/%s");
|
|
|
|
private static final char VAR_IDENTIFICATION = '%';
|
|
private final String path;
|
|
|
|
CfRequest(String path) {
|
|
this.path = path;
|
|
}
|
|
|
|
/**
|
|
* Constructs the complete API endpoint path by formatting the base path with the provided
|
|
* arguments.
|
|
*
|
|
* @param vars the arguments to format the path string with; these are typically specific
|
|
* identifiers or parameters required by the API endpoint.
|
|
* @return the fully constructed API endpoint path as a string.
|
|
*/
|
|
String buildPath(Object... vars) {
|
|
long varCount = path.chars().filter(c -> c == VAR_IDENTIFICATION).count();
|
|
if (varCount != vars.length) {
|
|
throw new IllegalArgumentException(
|
|
String.format(
|
|
"The number of variables (%d) does not match the number of parameters (%d) in the path string: %s",
|
|
vars.length, varCount, path));
|
|
}
|
|
return String.format(path, vars);
|
|
}
|
|
}
|