mirror of
https://github.com/google/nomulus
synced 2026-01-07 22:15:30 +00:00
Add extra logic for all relevant flows
This CL enhances various domain flows (check, create, delete, renew, restore, transfer, update) so that they invoke the appropriate methods on the object implementing the TLD's RegistryExtraFlowLogic (if any). TldSpecificLogicProxy is also updated to invoke RegistryExtraFlowLogic proxy (if any) to fetch the appropriate price. The tests use a made-up extra flow logic object which can be attached to a test TLD to make sure that the proper routines are being invoked. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=132486734
This commit is contained in:
@@ -61,6 +61,7 @@ import google.registry.model.domain.DomainCommand.CreateOrUpdate;
|
||||
import google.registry.model.domain.DomainCommand.InvalidReferencesException;
|
||||
import google.registry.model.domain.DomainResource;
|
||||
import google.registry.model.domain.Period;
|
||||
import google.registry.model.domain.fee.Credit;
|
||||
import google.registry.model.domain.fee.Fee;
|
||||
import google.registry.model.domain.fee.FeeCheckCommandExtensionItem;
|
||||
import google.registry.model.domain.fee.FeeCheckResponseExtensionItem;
|
||||
@@ -71,6 +72,7 @@ import google.registry.model.domain.launch.LaunchExtension;
|
||||
import google.registry.model.domain.launch.LaunchPhase;
|
||||
import google.registry.model.domain.secdns.DelegationSignerData;
|
||||
import google.registry.model.eppcommon.StatusValue;
|
||||
import google.registry.model.eppinput.EppInput;
|
||||
import google.registry.model.eppinput.ResourceCommand.SingleResourceCommand;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.model.mark.Mark;
|
||||
@@ -86,7 +88,6 @@ import google.registry.model.smd.AbstractSignedMark;
|
||||
import google.registry.model.smd.EncodedSignedMark;
|
||||
import google.registry.model.smd.SignedMark;
|
||||
import google.registry.model.smd.SignedMarkRevocationList;
|
||||
import google.registry.pricing.TldSpecificLogicProxy;
|
||||
import google.registry.tmch.TmchXmlSignature;
|
||||
import google.registry.tmch.TmchXmlSignature.CertificateSignatureException;
|
||||
import google.registry.util.Idn;
|
||||
@@ -565,8 +566,10 @@ public class DomainFlowUtils {
|
||||
FeeQueryResponseExtensionItem.Builder builder,
|
||||
String domainName,
|
||||
String tld,
|
||||
String clientIdentifier,
|
||||
@Nullable CurrencyUnit topLevelCurrency,
|
||||
DateTime now) throws EppException {
|
||||
DateTime now,
|
||||
EppInput eppInput) throws EppException {
|
||||
InternetDomainName domain = InternetDomainName.from(domainName);
|
||||
Registry registry = Registry.get(tld);
|
||||
int years = verifyUnitIsYears(feeRequest.getPeriod()).getValue();
|
||||
@@ -589,8 +592,6 @@ public class DomainFlowUtils {
|
||||
.setClass(TldSpecificLogicProxy.getFeeClass(domainName, now).orNull());
|
||||
|
||||
switch (feeRequest.getCommandName()) {
|
||||
case UNKNOWN:
|
||||
throw new UnknownFeeCommandException(feeRequest.getUnparsedCommandName());
|
||||
case CREATE:
|
||||
if (isReserved(domain, isSunrise)) { // Don't return a create price for reserved names.
|
||||
builder.setClass("reserved"); // Override whatever class we've set above.
|
||||
@@ -598,24 +599,35 @@ public class DomainFlowUtils {
|
||||
builder.setReasonIfSupported("reserved");
|
||||
} else {
|
||||
builder.setAvailIfSupported(true);
|
||||
builder.setFees(
|
||||
TldSpecificLogicProxy.getCreatePrice(registry, domainName, now, years).getFees());
|
||||
builder.setFees(TldSpecificLogicProxy.getCreatePrice(
|
||||
registry, domainName, clientIdentifier, now, years, eppInput).getFees());
|
||||
}
|
||||
break;
|
||||
case RENEW:
|
||||
builder.setAvailIfSupported(true);
|
||||
builder.setFees(TldSpecificLogicProxy.getRenewPrice(
|
||||
registry, domainName, clientIdentifier, now, years, eppInput).getFees());
|
||||
break;
|
||||
case RESTORE:
|
||||
if (years != 1) {
|
||||
throw new RestoresAreAlwaysForOneYearException();
|
||||
}
|
||||
builder.setAvailIfSupported(true);
|
||||
builder.setFees(
|
||||
TldSpecificLogicProxy.getRestorePrice(registry, domainName, now, years).getFees());
|
||||
builder.setFees(TldSpecificLogicProxy.getRestorePrice(
|
||||
registry, domainName, clientIdentifier, now, eppInput).getFees());
|
||||
break;
|
||||
// TODO(mountford): handle UPDATE
|
||||
default:
|
||||
// Anything else (transfer|renew) will have a "renew" fee.
|
||||
case TRANSFER:
|
||||
builder.setAvailIfSupported(true);
|
||||
builder.setFees(
|
||||
TldSpecificLogicProxy.getRenewPrice(registry, domainName, now, years).getFees());
|
||||
builder.setFees(TldSpecificLogicProxy.getTransferPrice(
|
||||
registry, domainName, clientIdentifier, now, years, eppInput).getFees());
|
||||
break;
|
||||
case UPDATE:
|
||||
builder.setAvailIfSupported(true);
|
||||
builder.setFees(TldSpecificLogicProxy.getUpdatePrice(
|
||||
registry, domainName, clientIdentifier, now, eppInput).getFees());
|
||||
break;
|
||||
default:
|
||||
throw new UnknownFeeCommandException(feeRequest.getUnparsedCommandName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -646,6 +658,12 @@ public class DomainFlowUtils {
|
||||
}
|
||||
total = total.add(fee.getCost());
|
||||
}
|
||||
for (Credit credit : feeCommand.getCredits()) {
|
||||
if (!credit.hasDefaultAttributes()) {
|
||||
throw new UnsupportedFeeAttributeException();
|
||||
}
|
||||
total = total.add(credit.getCost());
|
||||
}
|
||||
|
||||
Money feeTotal = null;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user