Skip to content

Commit cce44ac

Browse files
author
jeromebridge
committed
Bindings for all Domain Zone functions of ClouDNS.
1 parent 886f3a9 commit cce44ac

File tree

5 files changed

+134
-16
lines changed

5 files changed

+134
-16
lines changed

src/main/java/com/pennassurancesoftware/cloudns/ClouDns.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.pennassurancesoftware.cloudns.dto.DomainZone;
66
import com.pennassurancesoftware.cloudns.dto.DomainZoneStats;
77
import com.pennassurancesoftware.cloudns.dto.NameServer;
8+
import com.pennassurancesoftware.cloudns.dto.NameServerUpdateStatus;
89
import com.pennassurancesoftware.cloudns.type.ZoneType;
910

1011
/**
@@ -61,4 +62,23 @@ public interface ClouDns {
6162
* @return Statistics about account with ClouDNS
6263
*/
6364
DomainZoneStats getDomainZoneStats();
65+
66+
/**
67+
*
68+
* <a href="https://www.cloudns.net/api-help/dns/domain-update-status/">Domain Zone Update Status Documentation</a>
69+
*
70+
*
71+
* @param domainName Domain Zone to get the list of update statuses for
72+
* @return List of Name Servers and their corresponding update status
73+
*/
74+
List<NameServerUpdateStatus> getDomainZoneUpdateStatus( String domainName );
75+
76+
/**
77+
*
78+
* <a href="https://www.cloudns.net/api-help/dns/domain-is-updated/">Domain Zone Is Updated Documentation</a>
79+
*
80+
* @param domainName Domain Zone to check if updates have been fully applied
81+
* @return Flag that indicates the zone is updated
82+
*/
83+
boolean isDomainZoneUpdated( String domainName );
6484
}

src/main/java/com/pennassurancesoftware/cloudns/client/ApiAction.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.pennassurancesoftware.cloudns.dto.DomainZone;
2424
import com.pennassurancesoftware.cloudns.dto.DomainZoneStats;
2525
import com.pennassurancesoftware.cloudns.dto.NameServer;
26+
import com.pennassurancesoftware.cloudns.dto.NameServerUpdateStatus;
2627
import com.pennassurancesoftware.cloudns.dto.Response;
2728

2829
/**
@@ -36,6 +37,8 @@ public enum ApiAction {
3637
GET_DOMAIN_ZONES("/list-zones.json?page=%s&rows-per-page=%s", RequestMethod.GET, DomainZone[].class),
3738
GET_DOMAIN_ZONES_PAGE_COUNT("/get-pages-count.json?&rows-per-page=%s", RequestMethod.GET, Integer.class),
3839
GET_DOMAIN_ZONE_STATS("/get-zones-stats.json", RequestMethod.GET, DomainZoneStats.class),
40+
GET_DOMAIN_ZONE_UPDATE_STATUS("/update-status.json?domain-name=%s", RequestMethod.GET, NameServerUpdateStatus[].class),
41+
GET_DOMAIN_ZONE_IS_UPDATED("/is-updated.json?domain-name=%s", RequestMethod.GET, Boolean.class),
3942

4043
// GET_ACTION("/action/%s", RequestMethod.GET, Action.class),
4144
// PROVIDERS("/provider", RequestMethod.GET, Providers.class),

src/main/java/com/pennassurancesoftware/cloudns/client/ClouDnsClient.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.pennassurancesoftware.cloudns.dto.DomainZone;
4343
import com.pennassurancesoftware.cloudns.dto.DomainZoneStats;
4444
import com.pennassurancesoftware.cloudns.dto.NameServer;
45+
import com.pennassurancesoftware.cloudns.dto.NameServerUpdateStatus;
4546
import com.pennassurancesoftware.cloudns.dto.Response;
4647
import com.pennassurancesoftware.cloudns.exception.ClouDnsException;
4748
import com.pennassurancesoftware.cloudns.exception.RequestUnsuccessfulException;
@@ -111,6 +112,20 @@ public DomainZoneStats getDomainZoneStats() {
111112
return result;
112113
}
113114

115+
@Override
116+
public List<NameServerUpdateStatus> getDomainZoneUpdateStatus( String domainName ) {
117+
final Object[] params = { domainName };
118+
final NameServerUpdateStatus[] result = ( NameServerUpdateStatus[] )perform( new ApiRequest( ApiAction.GET_DOMAIN_ZONE_UPDATE_STATUS, params ) ).getData();
119+
return Arrays.asList( result );
120+
}
121+
122+
@Override
123+
public boolean isDomainZoneUpdated( String domainName ) {
124+
final Object[] params = { domainName };
125+
final Boolean result = ( Boolean )perform( new ApiRequest( ApiAction.GET_DOMAIN_ZONE_IS_UPDATED, params ) ).getData();
126+
return result;
127+
}
128+
114129
@Override
115130
public void registerDomainZone( String domainName, ZoneType type ) {
116131
final Object[] params = { domainName, type.value() };
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.pennassurancesoftware.cloudns.dto;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
/** Class that includes details of the update status of a Name Server for a Domain Zone */
6+
public class NameServerUpdateStatus {
7+
private String ip4;
8+
private String ip6;
9+
@SerializedName("server")
10+
private String name;
11+
private Boolean updated;
12+
13+
@Override
14+
public String toString() {
15+
return String.format( "%s: %s", name, updated ? "Updated" : "No Updated" );
16+
}
17+
18+
public String getIp4() {
19+
return ip4;
20+
}
21+
22+
public String getIp6() {
23+
return ip6;
24+
}
25+
26+
public String getName() {
27+
return name;
28+
}
29+
30+
public Boolean getUpdated() {
31+
return updated;
32+
}
33+
34+
public void setIp4( String ip4 ) {
35+
this.ip4 = ip4;
36+
}
37+
38+
public void setIp6( String ip6 ) {
39+
this.ip6 = ip6;
40+
}
41+
42+
public void setName( String name ) {
43+
this.name = name;
44+
}
45+
46+
public void setUpdated( Boolean updated ) {
47+
this.updated = updated;
48+
}
49+
50+
}

src/test/java/com/pennassurancesoftware/cloudns/TestClouDns.java

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.pennassurancesoftware.cloudns.dto.DomainZone;
1010
import com.pennassurancesoftware.cloudns.dto.DomainZoneStats;
1111
import com.pennassurancesoftware.cloudns.dto.NameServer;
12+
import com.pennassurancesoftware.cloudns.dto.NameServerUpdateStatus;
1213
import com.pennassurancesoftware.cloudns.type.ZoneType;
1314

1415
public class TestClouDns {
@@ -17,9 +18,18 @@ public class TestClouDns {
1718

1819
private ClouDns client = new ClouDnsClient( AUTH_ID, AUTH_PASSWORD );
1920

21+
@Test(groups = { "integration" }, enabled = true, dependsOnGroups = "get-domain")
22+
public void testDeleteDomainZone() throws Exception {
23+
// Fixture
24+
final String domainName = "domain.com";
25+
26+
// Call
27+
client.deleteDomainZone( domainName );
28+
}
29+
2030
@Test(groups = { "integration" }, enabled = true)
2131
public void testGetAvailableNameServers() throws Exception {
22-
// https://api.cloudns.net/dns/login.json?auth-id=445&auth-password=temp1010
32+
// https://api.cloudns.net/dns/login.json?auth-id=445&auth-password=temp1010
2333

2434
// Call
2535
final List<NameServer> result = client.getAvailableNameServers();
@@ -30,8 +40,19 @@ public void testGetAvailableNameServers() throws Exception {
3040
System.out.println( result );
3141
}
3242

33-
@Test(groups = { "integration" }, enabled = true)
34-
public void testGetDomainZoneStatus() throws Exception {
43+
@Test(groups = { "integration", "get-domain" }, enabled = true, dependsOnGroups = "create-domain")
44+
public void testGetDomainZones() throws Exception {
45+
// Fixture
46+
47+
// Call
48+
final List<DomainZone> result = client.getDomainZones();
49+
50+
// Assert
51+
System.out.println( result );
52+
}
53+
54+
@Test(groups = { "integration", "get-domain" }, enabled = true, dependsOnGroups = "create-domain")
55+
public void testGetDomainZoneStats() throws Exception {
3556
// Call
3657
final DomainZoneStats result = client.getDomainZoneStats();
3758

@@ -40,33 +61,42 @@ public void testGetDomainZoneStatus() throws Exception {
4061
System.out.println( result );
4162
}
4263

43-
@Test(groups = { "integration" }, enabled = true)
44-
public void testRegisterDomainZone() throws Exception {
64+
@Test(groups = { "integration", "get-domain" }, enabled = true, dependsOnGroups = "create-domain")
65+
public void testGetDomainZoneUpdateStatus() throws Exception {
4566
// Fixture
4667
final String domainName = "domain.com";
47-
final ZoneType type = ZoneType.Master;
4868

4969
// Call
50-
client.registerDomainZone( domainName, type );
70+
final List<NameServerUpdateStatus> result = client.getDomainZoneUpdateStatus( domainName );
71+
72+
// Assert
73+
System.out.println( result );
5174
}
5275

53-
@Test(groups = { "integration" }, enabled = true, dependsOnMethods = "testRegisterDomainZone")
54-
public void testDeleteDomainZone() throws Exception {
76+
@Test(groups = { "integration", "get-domain" }, enabled = true, dependsOnGroups = "create-domain")
77+
public void testGetDomainZoneIsUpdated() throws Exception {
5578
// Fixture
5679
final String domainName = "domain.com";
5780

5881
// Call
59-
client.deleteDomainZone( domainName );
82+
boolean result = client.isDomainZoneUpdated( domainName );
83+
// while( !result ) {
84+
// System.out.println( "Domain Updated: " + result );
85+
// Thread.sleep( 3000 );
86+
// result = client.isDomainZoneUpdated( domainName );
87+
// }
88+
89+
// Assert
90+
System.out.println( "Domain Updated: " + result );
6091
}
6192

62-
@Test(groups = { "integration" }, enabled = true, dependsOnMethods = "testRegisterDomainZone")
63-
public void testGetDomainZones() throws Exception {
93+
@Test(groups = { "integration", "create-domain" }, enabled = true)
94+
public void testRegisterDomainZone() throws Exception {
6495
// Fixture
96+
final String domainName = "domain.com";
97+
final ZoneType type = ZoneType.Master;
6598

6699
// Call
67-
final List<DomainZone> result = client.getDomainZones();
68-
69-
// Assert
70-
System.out.println( result );
100+
client.registerDomainZone( domainName, type );
71101
}
72102
}

0 commit comments

Comments
 (0)