mirror of
https://github.com/google/nomulus.git
synced 2025-07-23 19:20:44 +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
|
@ -29,6 +29,7 @@ import com.google.common.collect.Iterables;
|
|||
import com.google.common.primitives.Booleans;
|
||||
import com.google.domain.registry.model.domain.DomainResource;
|
||||
import com.google.domain.registry.model.host.HostResource;
|
||||
import com.google.domain.registry.rdap.RdapJsonFormatter.BoilerplateType;
|
||||
import com.google.domain.registry.request.Action;
|
||||
import com.google.domain.registry.request.HttpException;
|
||||
import com.google.domain.registry.request.HttpException.BadRequestException;
|
||||
|
@ -82,8 +83,8 @@ public class RdapDomainSearchAction extends RdapActionBase {
|
|||
|
||||
/** Parses the parameters and calls the appropriate search function. */
|
||||
@Override
|
||||
public ImmutableMap<String, Object>
|
||||
getJsonObjectForResource(final String pathSearchString) throws HttpException {
|
||||
public ImmutableMap<String, Object> getJsonObjectForResource(
|
||||
String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException {
|
||||
DateTime now = clock.nowUtc();
|
||||
// RDAP syntax example: /rdap/domains?name=exam*.com.
|
||||
// The pathSearchString is not used by search commands.
|
||||
|
@ -122,7 +123,10 @@ public class RdapDomainSearchAction extends RdapActionBase {
|
|||
if (results.isEmpty()) {
|
||||
throw new NotFoundException("No domains found");
|
||||
}
|
||||
return ImmutableMap.<String, Object>of("domainSearchResults", results);
|
||||
ImmutableMap.Builder<String, Object> builder = new ImmutableMap.Builder<>();
|
||||
builder.put("domainSearchResults", results);
|
||||
RdapJsonFormatter.addTopLevelEntries(builder, BoilerplateType.DOMAIN, null, rdapLinkBase);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/** Searches for domains by domain name, returning a JSON array of domain info maps. */
|
||||
|
@ -136,7 +140,8 @@ public class RdapDomainSearchAction extends RdapActionBase {
|
|||
return ImmutableList.of();
|
||||
}
|
||||
return ImmutableList.of(
|
||||
RdapJsonFormatter.makeRdapJsonForDomain(domainResource, rdapLinkBase, rdapWhoisServer));
|
||||
RdapJsonFormatter.makeRdapJsonForDomain(
|
||||
domainResource, false, rdapLinkBase, rdapWhoisServer));
|
||||
// Handle queries with a wildcard.
|
||||
} else {
|
||||
Query<DomainResource> query = ofy().load()
|
||||
|
@ -153,7 +158,7 @@ public class RdapDomainSearchAction extends RdapActionBase {
|
|||
if (domainResource.getDeletionTime().isAfter(now)) {
|
||||
builder.add(
|
||||
RdapJsonFormatter.makeRdapJsonForDomain(
|
||||
domainResource, rdapLinkBase, rdapWhoisServer));
|
||||
domainResource, false, rdapLinkBase, rdapWhoisServer));
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
|
@ -262,7 +267,8 @@ public class RdapDomainSearchAction extends RdapActionBase {
|
|||
.limit(1000);
|
||||
for (DomainResource domainResource : query) {
|
||||
builder.add(
|
||||
RdapJsonFormatter.makeRdapJsonForDomain(domainResource, rdapLinkBase, rdapWhoisServer));
|
||||
RdapJsonFormatter.makeRdapJsonForDomain(
|
||||
domainResource, false, rdapLinkBase, rdapWhoisServer));
|
||||
}
|
||||
}
|
||||
return builder.build();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue