Handle LINKED correctly in RDAP

LINKED is a virtual status that needs to be computed on the fly
when creating an RDAP response.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=145583415
This commit is contained in:
cgoldfeder 2017-01-25 12:43:41 -08:00 committed by Ben McIlwain
parent 8071a1bdb5
commit 4a730e0c9e
25 changed files with 306 additions and 60 deletions

View file

@ -15,7 +15,9 @@
package google.registry.rdap;
import static com.google.common.base.Strings.nullToEmpty;
import static google.registry.model.EppResourceUtils.isLinked;
import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.util.CollectionUtils.union;
import static google.registry.util.DomainNameUtils.ACE_PREFIX;
import com.google.common.base.Function;
@ -551,7 +553,10 @@ public class RdapJsonFormatter {
if (hasUnicodeComponents(hostResource.getFullyQualifiedHostName())) {
jsonBuilder.put("unicodeName", Idn.toUnicode(hostResource.getFullyQualifiedHostName()));
}
jsonBuilder.put("status", makeStatusValueList(hostResource.getStatusValues()));
jsonBuilder.put("status", makeStatusValueList(
isLinked(Key.create(hostResource), now)
? union(hostResource.getStatusValues(), StatusValue.LINKED)
: hostResource.getStatusValues()));
jsonBuilder.put("links", ImmutableList.of(
makeLink("nameserver", hostResource.getFullyQualifiedHostName(), linkBase)));
List<ImmutableMap<String, Object>> remarks;
@ -630,7 +635,10 @@ public class RdapJsonFormatter {
ImmutableMap.Builder<String, Object> jsonBuilder = new ImmutableMap.Builder<>();
jsonBuilder.put("objectClassName", "entity");
jsonBuilder.put("handle", contactResource.getRepoId());
jsonBuilder.put("status", makeStatusValueList(contactResource.getStatusValues()));
jsonBuilder.put("status", makeStatusValueList(
isLinked(Key.create(contactResource), now)
? union(contactResource.getStatusValues(), StatusValue.LINKED)
: contactResource.getStatusValues()));
if (contactType.isPresent()) {
jsonBuilder.put("roles",
ImmutableList.of(convertContactTypeToRdapRole(contactType.get())));