Skip to content

Commit c9ddecc

Browse files
Add support for domain research endpoint (#237)
1 parent 3a20c08 commit c9ddecc

File tree

3 files changed

+142
-1
lines changed

3 files changed

+142
-1
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.dnsimple.data;
2+
3+
import java.util.List;
4+
5+
/**
6+
* Domain research status result.
7+
*
8+
* @see <a href="https://developer.dnsimple.com/v2/domains/research/#getDomainsResearchStatus">Get Domains Research Status</a>
9+
*/
10+
public class DomainResearchStatus {
11+
private final String requestId;
12+
private final String domain;
13+
private final String availability;
14+
private final List<String> errors;
15+
16+
public DomainResearchStatus(String requestId, String domain, String availability, List<String> errors) {
17+
this.requestId = requestId;
18+
this.domain = domain;
19+
this.availability = availability;
20+
this.errors = errors;
21+
}
22+
23+
/**
24+
* UUID identifier for this research request.
25+
*/
26+
public String getRequestId() {
27+
return requestId;
28+
}
29+
30+
/**
31+
* The domain name that was researched.
32+
*/
33+
public String getDomain() {
34+
return domain;
35+
}
36+
37+
/**
38+
* The availability status (e.g. "available", "unavailable").
39+
*
40+
* @see <a href="https://developer.dnsimple.com/v2/domains/research/#getDomainsResearchStatus">API documentation</a>
41+
*/
42+
public String getAvailability() {
43+
return availability;
44+
}
45+
46+
/**
47+
* Array of error messages if the domain cannot be researched.
48+
*/
49+
public List<String> getErrors() {
50+
return errors;
51+
}
52+
}

src/main/java/com/dnsimple/endpoints/Domains.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package com.dnsimple.endpoints;
22

3-
import com.dnsimple.data.*;
3+
import com.dnsimple.data.DelegationSignerRecord;
4+
import com.dnsimple.data.Domain;
5+
import com.dnsimple.data.DomainPush;
6+
import com.dnsimple.data.DomainResearchStatus;
7+
import com.dnsimple.data.Dnssec;
8+
import com.dnsimple.data.EmailForward;
49
import com.dnsimple.http.HttpEndpointClient;
510
import com.dnsimple.request.DSRecordOptions;
611
import com.dnsimple.request.ListOptions;
@@ -320,4 +325,25 @@ public EmptyResponse acceptPush(Number account, Number push, Number contactId) {
320325
public EmptyResponse rejectPush(Number account, Number push) {
321326
return client.empty(DELETE, account + "/pushes/" + push, ListOptions.empty(), null);
322327
}
328+
329+
/**
330+
* Research a domain name for availability and registration status information.
331+
*
332+
* This endpoint provides information about a domain's availability status, including whether it's
333+
* available for registration, already registered, or has other restrictions.
334+
*
335+
* @param account The account ID
336+
* @param domainName The domain name to research
337+
* @return The domain research status response
338+
* @see <a href="https://developer.dnsimple.com/v2/domains/research/#getDomainsResearchStatus">https://developer.dnsimple.com/v2/domains/research/#getDomainsResearchStatus</a>
339+
*/
340+
public SimpleResponse<DomainResearchStatus> getDomainResearchStatus(Number account, String domainName) {
341+
return client.simple(
342+
GET,
343+
account + "/domains/research/status",
344+
ListOptions.empty().setOtherOption("domain", domainName),
345+
null,
346+
DomainResearchStatus.class
347+
);
348+
}
323349
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.dnsimple.endpoints;
2+
3+
import com.dnsimple.data.DomainResearchStatus;
4+
import com.dnsimple.response.SimpleResponse;
5+
import com.dnsimple.tools.DnsimpleTestBase;
6+
import org.junit.Test;
7+
8+
import java.util.List;
9+
10+
import static com.dnsimple.http.HttpMethod.GET;
11+
import static org.hamcrest.MatcherAssert.assertThat;
12+
import static org.hamcrest.Matchers.*;
13+
14+
/**
15+
* Tests for the domain research status endpoint.
16+
*/
17+
public class DomainsResearchTest extends DnsimpleTestBase {
18+
19+
@Test
20+
public void testGetDomainResearchStatusBuildsCorrectRequest() {
21+
server.stubFixtureAt("getDomainsResearchStatus/success-unavailable.http");
22+
client.domains.getDomainResearchStatus(1010, "taken.com");
23+
24+
assertThat(server.getRecordedRequest().getMethod(), is(GET));
25+
assertThat(server.getRecordedRequest().getPath(), is("/v2/1010/domains/research/status?domain=taken.com"));
26+
}
27+
28+
@Test
29+
public void testGetDomainResearchStatusReturnsDomainResearchStatus() {
30+
server.stubFixtureAt("getDomainsResearchStatus/success-unavailable.http");
31+
32+
SimpleResponse<DomainResearchStatus> response = client.domains.getDomainResearchStatus(1010, "taken.com");
33+
34+
assertThat(response, is(notNullValue()));
35+
DomainResearchStatus data = response.getData();
36+
assertThat(data, is(notNullValue()));
37+
assertThat(data.getRequestId(), is("25dd77cb-2f71-48b9-b6be-1dacd2881418"));
38+
assertThat(data.getDomain(), is("taken.com"));
39+
assertThat(data.getAvailability(), is("unavailable"));
40+
assertThat(data.getErrors(), is(empty()));
41+
}
42+
43+
@Test
44+
public void testGetDomainResearchStatusWithAvailableDomain() {
45+
server.stubFixtureAt("getDomainsResearchStatus/success-available.http");
46+
47+
SimpleResponse<DomainResearchStatus> response = client.domains.getDomainResearchStatus(1010, "available.com");
48+
49+
assertThat(response.getData(), is(notNullValue()));
50+
assertThat(response.getData().getAvailability(), is("available"));
51+
assertThat(response.getData().getDomain(), is("available.com"));
52+
}
53+
54+
@Test
55+
public void testGetDomainResearchStatusWithUnsupportedTld() {
56+
server.stubFixtureAt("getDomainsResearchStatus/success-unsupported-tld.http");
57+
58+
SimpleResponse<DomainResearchStatus> response = client.domains.getDomainResearchStatus(1010, "example.unsupported");
59+
60+
assertThat(response.getData(), is(notNullValue()));
61+
assertThat(response.getData().getErrors(), is(not(empty())));
62+
}
63+
}

0 commit comments

Comments
 (0)