Skip to content

Commit ecba914

Browse files
Added NameServer object and using NameServer collections for domain:ns properties
1 parent 83f152d commit ecba914

6 files changed

Lines changed: 56 additions & 12 deletions

File tree

‎EppLib/Entities/Domain/DomainBase.cs‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,27 @@ protected DomainBase()
2525
{
2626
}
2727

28-
protected XmlNode CreateNameServerElement(XmlDocument doc, IEnumerable<string> nameServers)
28+
protected XmlNode CreateNameServerElement(XmlDocument doc, IEnumerable<NameServer> nameServers, bool useHostAttr = false)
2929
{
3030
var nameServerElement = doc.CreateElement("domain:ns", namespaceUri);
3131

3232
foreach (var serverName in nameServers)
3333
{
34-
AddXmlElement(doc, nameServerElement, "domain:hostObj", serverName,namespaceUri);
34+
if (useHostAttr)
35+
{
36+
var hostAttr = AddXmlElement(doc, nameServerElement, "domain:hostAttr", "", namespaceUri);
37+
38+
AddXmlElement(doc, nameServerElement, "domain:hostName", serverName.HostName, namespaceUri);
39+
40+
foreach (var address in serverName.HostAddresses)
41+
{
42+
var hostAddr = AddXmlElement(doc, hostAttr, "domain:hostAddr", address.IPAddress, namespaceUri);
43+
44+
hostAddr.SetAttribute("ip", address.IPVersion);
45+
}
46+
}
47+
else
48+
AddXmlElement(doc, nameServerElement, "domain:hostObj", serverName.HostName, namespaceUri);
3549
}
3650

3751
return nameServerElement;

‎EppLib/Entities/Domain/DomainCreate.cs‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace EppLib.Entities
1919
{
2020
public class DomainCreate : DomainBase<DomainCreateResponse>
2121
{
22-
private readonly IList<string> nameServers = new List<string>();
22+
private readonly IList<NameServer> nameServers = new List<NameServer>();
2323

2424
private readonly IList<DomainContact> domainContacts = new List<DomainContact>();
2525

@@ -29,7 +29,7 @@ public class DomainCreate : DomainBase<DomainCreateResponse>
2929

3030
public string RegistrantContactId { get; set; }
3131

32-
public IList<string> NameServers
32+
public IList<NameServer> NameServers
3333
{
3434
get { return nameServers; }
3535
}
@@ -58,9 +58,11 @@ protected override XmlElement BuildCommandElement(XmlDocument doc, XmlElement co
5858
period.SetAttribute("unit", Period.Unit);
5959
}
6060

61-
if (NameServers != null && NameServers.Count>0)
61+
if (NameServers != null && NameServers.Count > 0)
6262
{
63-
domainCreate.AppendChild(CreateNameServerElement(doc, NameServers));
63+
//TODO: Add option for hostObj way
64+
//domainCreate.AppendChild(CreateNameServerElement(doc, NameServers));
65+
domainCreate.AppendChild(CreateNameServerElement(doc, NameServers, true));
6466
}
6567

6668
if (RegistrantContactId != null)
@@ -70,7 +72,7 @@ protected override XmlElement BuildCommandElement(XmlDocument doc, XmlElement co
7072

7173
foreach (var contact in DomainContacts)
7274
{
73-
var contact_element = AddXmlElement(doc, domainCreate, "domain:contact", contact.Id,namespaceUri);
75+
var contact_element = AddXmlElement(doc, domainCreate, "domain:contact", contact.Id, namespaceUri);
7476

7577
contact_element.SetAttribute("type", contact.Type);
7678
}

‎EppLib/Entities/Domain/DomainUpdate.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ protected override XmlElement BuildCommandElement(XmlDocument doc, XmlElement co
5454
if (DomainChange.RegistrantContactId != null)
5555
{
5656
AddXmlElement(doc, change_element, "domain:registrant", DomainChange.RegistrantContactId, namespaceUri);
57-
}
58-
59-
if (DomainChange.AuthInfo != null) {
60-
var authInfoElement = AddXmlElement (doc, change_element, "domain:authInfo", null, namespaceUri);
57+
}
58+
59+
if (DomainChange.AuthInfo != null) {
60+
var authInfoElement = AddXmlElement (doc, change_element, "domain:authInfo", null, namespaceUri);
6161
AddXmlElement (doc, authInfoElement, "domain:pw", DomainChange.AuthInfo, namespaceUri);
6262
}
6363
else if (DomainChange.NullAuthInfo)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
3+
namespace EppLib.Entities
4+
{
5+
public class NameServer
6+
{
7+
public string HostName { get; set; }
8+
9+
public IList<HostAddress> HostAddresses { get; }
10+
11+
public NameServer()
12+
{
13+
HostAddresses = new List<HostAddress>();
14+
}
15+
16+
public NameServer(string hostname) : this()
17+
{
18+
HostName = hostname;
19+
}
20+
21+
public NameServer(string hostname, HostAddress hostAddress) : this()
22+
{
23+
HostName = hostname;
24+
HostAddresses.Add(hostAddress);
25+
}
26+
}
27+
}

‎EppLib/Entities/EppDomainUpdateAddRemove.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace EppLib.Entities
1717
{
1818
public class EppDomainUpdateAddRemove
1919
{
20-
public IList<string> NameServers = new List<string>();
20+
public IList<NameServer> NameServers = new List<NameServer>();
2121
public IList<DomainContact> DomainContacts = new List<DomainContact>();
2222
public IList<Status> Status = new List<Status>();
2323
}

‎EppLib/EppLib.csproj‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<Compile Include="Entities\Contact\ContactCheckResult.cs" />
1313
<Compile Include="Entities\Domain\DomainReleaseResponse.cs" />
1414
<Compile Include="Entities\Domain\DomainRelease.cs" />
15+
<Compile Include="Entities\Domain\NameServer.cs" />
1516
<Compile Include="Extensions\Fury\FuryContactCreateExtension.cs" />
1617
<Compile Include="Extensions\Fury\FuryContactUpdateExtension .cs" />
1718
<Compile Include="Extensions\Fury\FuryDomainCreateExtension.cs" />

0 commit comments

Comments
 (0)