mirror of
https://github.com/google/nomulus.git
synced 2025-05-31 17:54:08 +02:00
RDAP: Add boilerplate entries required by ICANN RDAP Profile
The ICANN RDAP Profile (dated 3 December 2015) requires certain boilerplate entries at the top level of the JSON object. Specifically: 1.4.4. The terms of service of the RDAP service MUST be specified in the notices object in the topmost JSON object of the response. The notices object MUST contain a links object [RFC7483]. The links object MUST contain an URL of the contracted party providing the RDAP service. 1.4.10. An RDAP response MUST contain a remarks member with a description containing the string “This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0”. 1.5.18. A domain name RDAP response MUST contain a remarks member with a title “EPP Status Codes”, a description containing the string “For more information on domain status codes, please visit https://icann.org/epp” and a links member with the https://icann.org/epp URL. 1.5.20. A domain name RDAP response MUST contain a remarks member with a title “Whois Inaccuracy Complaint Form”, a description containing the string “URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf” and a links member with the https://www.icann.org/wicf URL. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=116389950
This commit is contained in:
parent
363c812d10
commit
ab26b288c1
29 changed files with 804 additions and 90 deletions
|
@ -19,6 +19,7 @@ import static com.google.domain.registry.request.Action.Method.HEAD;
|
|||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.domain.registry.rdap.RdapJsonFormatter.BoilerplateType;
|
||||
import com.google.domain.registry.rdap.RdapJsonFormatter.MakeRdapJsonNoticeParameters;
|
||||
import com.google.domain.registry.request.Action;
|
||||
import com.google.domain.registry.request.HttpException;
|
||||
|
@ -36,6 +37,16 @@ public class RdapHelpAction extends RdapActionBase {
|
|||
|
||||
public static final String PATH = "/rdap/help";
|
||||
|
||||
/**
|
||||
* Path for the terms of service. The terms of service are also used to create the required
|
||||
* boilerplate notice, so we make it a publicly visible that we can use elsewhere to reference it.
|
||||
*/
|
||||
public static final String TERMS_OF_SERVICE_PATH = "/tos";
|
||||
|
||||
/**
|
||||
* Map from a relative path underneath the RDAP root path to the appropriate
|
||||
* {@link MakeRdapJsonNoticeParameters} object.
|
||||
*/
|
||||
private static final ImmutableMap<String, MakeRdapJsonNoticeParameters> HELP_MAP =
|
||||
ImmutableMap.of(
|
||||
"/",
|
||||
|
@ -76,7 +87,7 @@ public class RdapHelpAction extends RdapActionBase {
|
|||
.linkValueSuffix("help/syntax")
|
||||
.linkHrefUrlString("https://www.registry.google/about/rdap/syntax.html")
|
||||
.build(),
|
||||
"/tos",
|
||||
TERMS_OF_SERVICE_PATH,
|
||||
MakeRdapJsonNoticeParameters.builder()
|
||||
.title("RDAP Terms of Service")
|
||||
.description(ImmutableList.of(
|
||||
|
@ -119,8 +130,21 @@ public class RdapHelpAction extends RdapActionBase {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ImmutableMap<String, Object> getJsonObjectForResource(String pathSearchString)
|
||||
throws HttpException {
|
||||
public ImmutableMap<String, Object> getJsonObjectForResource(
|
||||
String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException {
|
||||
// We rely on addTopLevelEntries to notice if we are sending the TOS notice, and not add a
|
||||
// duplicate boilerplate entry.
|
||||
ImmutableMap.Builder<String, Object> builder = new ImmutableMap.Builder<>();
|
||||
RdapJsonFormatter.addTopLevelEntries(
|
||||
builder,
|
||||
BoilerplateType.OTHER,
|
||||
ImmutableList.of(getJsonHelpNotice(pathSearchString, rdapLinkBase)),
|
||||
rdapLinkBase);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
static ImmutableMap<String, Object> getJsonHelpNotice(
|
||||
String pathSearchString, String rdapLinkBase) {
|
||||
if (pathSearchString.isEmpty()) {
|
||||
pathSearchString = "/";
|
||||
}
|
||||
|
@ -128,10 +152,8 @@ public class RdapHelpAction extends RdapActionBase {
|
|||
throw new NotFoundException("no help found for " + pathSearchString);
|
||||
}
|
||||
try {
|
||||
return ImmutableMap.of(
|
||||
"notices",
|
||||
(Object) ImmutableList.of(RdapJsonFormatter.makeRdapJsonNotice(
|
||||
HELP_MAP.get(pathSearchString), rdapLinkBase)));
|
||||
return RdapJsonFormatter.makeRdapJsonNotice(
|
||||
HELP_MAP.get(pathSearchString), rdapLinkBase);
|
||||
} catch (Exception e) {
|
||||
throw new InternalServerErrorException("unable to read help for " + pathSearchString);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue