mirror of
https://github.com/google/nomulus.git
synced 2025-06-26 22:34:55 +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
|
@ -80,9 +80,20 @@ public abstract class RdapActionBase implements Runnable {
|
|||
/** Returns the servlet action path; used to extract the search string from the incoming path. */
|
||||
abstract String getActionPath();
|
||||
|
||||
/** Does the actual search and returns an RDAP JSON object. */
|
||||
abstract ImmutableMap<String, Object> getJsonObjectForResource(String searchString)
|
||||
throws HttpException;
|
||||
/**
|
||||
* Does the actual search and returns an RDAP JSON object.
|
||||
*
|
||||
* @param pathSearchString the search string in the URL path
|
||||
* @param isHeadRequest whether the returned map will actually be used. HTTP HEAD requests don't
|
||||
* actually return anything. However, we usually still want to go through the process of
|
||||
* building a map, to make sure that the request would return a 500 status if it were
|
||||
* invoked using GET. So this field should usually be ignored, unless there's some
|
||||
* expensive task required to create the map which will never result in a request failure.
|
||||
* @param linkBase the base URL for RDAP link structures
|
||||
* @return A map (probably containing nested maps and lists) with the final JSON response data.
|
||||
*/
|
||||
abstract ImmutableMap<String, Object> getJsonObjectForResource(
|
||||
String pathSearchString, boolean isHeadRequest, String linkBase) throws HttpException;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -98,11 +109,13 @@ public abstract class RdapActionBase implements Runnable {
|
|||
pathProper.startsWith(getActionPath()),
|
||||
"%s doesn't start with %s", pathProper, getActionPath());
|
||||
ImmutableMap<String, Object> rdapJson =
|
||||
getJsonObjectForResource(pathProper.substring(getActionPath().length()));
|
||||
getJsonObjectForResource(
|
||||
pathProper.substring(getActionPath().length()),
|
||||
requestMethod == Action.Method.HEAD,
|
||||
rdapLinkBase);
|
||||
response.setStatus(SC_OK);
|
||||
if (requestMethod != Action.Method.HEAD) {
|
||||
response.setPayload(
|
||||
JSONValue.toJSONString(RdapJsonFormatter.makeFinalRdapJson(rdapJson)));
|
||||
response.setPayload(JSONValue.toJSONString(rdapJson));
|
||||
}
|
||||
response.setContentType(MediaType.create("application", "rdap+json"));
|
||||
} catch (HttpException e) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue