diff --git a/.gitignore b/.gitignore
index 748683d..1a72032 100644
--- a/.gitignore
+++ b/.gitignore
@@ -122,6 +122,9 @@ publish/
*.[Pp]ublish.xml
*.azurePubxml
+# NuGet Packages
+*.nupkg
+
# NuGet Packages Directory
packages/
## TODO: If the tool you use requires repositories.config uncomment the next line
diff --git a/Contributing.md b/Contributing.md
new file mode 100644
index 0000000..12f4ea2
--- /dev/null
+++ b/Contributing.md
@@ -0,0 +1,7 @@
+Open TODO file, if there is one, and see if there is anywhere you can help. Otherwise, look at the issues.
+If you want to contribute, fork https://github.com/keithjjones/ArinWhois.NET and perform your modifications on the "devel" branch.
+If you send a pull request we will review the changes and merge them appropriately.
+
+The "master" branch is always the working code. The "devel" branch is working code, but it hasn't been accepted into "master" for the entire project.
+Any other branch consisting of new features typically starts with "devel-" and contains the feature's name. It may or may not be working depending on the contributor. These
+branches are branched from the "devel" branch.
\ No newline at end of file
diff --git a/LICENSE b/License.md
similarity index 95%
rename from LICENSE
rename to License.md
index a6ca106..b5b981b 100644
--- a/LICENSE
+++ b/License.md
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2014 MaxHorstmann
+Copyright (c) 2014 MaxHorstmann, 2016 Keith J. Jones
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index e3bb92d..69a2376 100644
--- a/README.md
+++ b/README.md
@@ -11,46 +11,64 @@ This is a simple .NET client to access the RESTful API programmatically with a s
Install
============
-Use the [NuGet](https://www.nuget.org/packages/ArinWhois) package, run the following command in the Package Manager Console:
+Use the [NuGet](https://www.nuget.org/packages/ArinWhois-VS2015) package, run the following command in the Package Manager Console:
- PM> Install-Package ArinWhois
+ PM> Install-Package ArinWhois-VS2015
Sample Usage
============
- var arinClient = new ArinClient();
-
- // Check single IP
- var ipResponse = await arinClient.QueryIpAsync(IPAddress.Parse("69.63.176.0"));
-
- Console.WriteLine(ipResponse.Network.Name);
- Console.WriteLine(ipResponse.Network.NetBlocks.NetBlock.Cidr);
-
- // Find out more about organization
- var orgResponse = await arinClient.QueryResourceAsync(ipResponse.Network.OrgRef.Handle,
+```csharp
+var arinClient = new ArinClient();
+
+// Check single IP
+var ipResponse = await arinClient.QueryIpAsync(IPAddress.Parse("69.63.176.0"));
+
+Console.WriteLine(ipResponse.Network.Name);
+Console.WriteLine(ipResponse.Network.NetBlocks.NetBlock.Cidr);
+
+// Find out more about organization or customer
+if (ipResponse.Network.OrgRef != null)
+{
+ var orgResponse = await arinClient.QueryResourceAsync(ipResponse.Network.OrgRef.Handle,
ArinClient.ResourceType.Organization);
- Console.WriteLine(orgResponse.Organization.Name);
- Console.WriteLine(orgResponse.Organization.City);
-
+ Console.WriteLine(orgResponse.Organization.Name);
+ Console.WriteLine(orgResponse.Organization.City);
+}
+else if (ipResponse.Network.CustomerRef != null)
+{
+ var customerResponse = await arinClient.QueryResourceAsync(ipResponse.Network.CustomerRef.Handle,
+ ArinClient.ResourceType.Customer);
+ Console.WriteLine(customerResponse.Organization.Name);
+ Console.WriteLine(customerResponse.Organization.City);
+}
+```
If you don't wanna do async, use `.Result`:
+```csharp
var response = arinClient.QueryIpAsync(IPAddress.Parse("69.63.176.0")).Result;
-
+```
+
But you should do async, really.
Limitations
===========
* Read-only
+* Make sure nuget.exe is in your path for building release.
Contributors
============
* [MaxHorstmann](https://github.com/MaxHorstmann) (Max Horstmann)
+* [KeithJJones] (https://github.com/keithjjones) (Keith J. Jones)
+More Reading
+============
+* [ARIN's Documentation on the RESTful Interface] (https://www.arin.net/resources/whoisrws/whois_api.html)
diff --git a/nuget/ArinWhois.0.1.nupkg b/nuget/ArinWhois.0.1.nupkg
deleted file mode 100644
index b003d3a..0000000
Binary files a/nuget/ArinWhois.0.1.nupkg and /dev/null differ
diff --git a/nuget/ArinWhois.0.2.nupkg b/nuget/ArinWhois.0.2.nupkg
deleted file mode 100644
index ba74688..0000000
Binary files a/nuget/ArinWhois.0.2.nupkg and /dev/null differ
diff --git a/src/ArinWhois.Tests/ApiTests.cs b/src/ArinWhois.Tests/ApiTests.cs
index 3281d1f..736add9 100644
--- a/src/ArinWhois.Tests/ApiTests.cs
+++ b/src/ArinWhois.Tests/ApiTests.cs
@@ -19,31 +19,207 @@ public void TestIpFound()
Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
- Assert.IsNotNull(ipResponse.Network.NetBlocks.NetBlock);
- Assert.IsNotNull(ipResponse.Network.NetBlocks.NetBlock.CidrLength.Value);
- Assert.IsNotNull(ipResponse.Network.NetBlocks.NetBlock.Description);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
Assert.IsNotNull(ipResponse.Network.OrgRef.Name);
- Assert.AreEqual(ipResponse.Network.OrgRef.Name, "Facebook, Inc.");
+ Assert.AreEqual("Facebook, Inc.", ipResponse.Network.OrgRef.Name);
var organizationHandle = ipResponse.Network.OrgRef.Handle;
- var organizationResponse = arinClient.QueryResourceAsync(organizationHandle, ArinClient.ResourceType.Organization).Result;
+ var organizationResponse = arinClient.QueryResourceAsync(organizationHandle.ToString(), ArinClient.ResourceType.Organization).Result;
Assert.IsNotNull(organizationResponse);
- Assert.AreEqual(organizationResponse.Organization.City.Value, "Menlo Park");
+ Assert.AreEqual("UNITED STATES", organizationResponse.Organization.iso3166_1.Name.Value);
+ Assert.AreEqual("Menlo Park", organizationResponse.Organization.City.Value);
+ Assert.AreEqual("CA", organizationResponse.Organization.iso3166_2.Value);
+ Assert.AreEqual("94025", organizationResponse.Organization.PostalCode.Value);
+ }
+
+ [TestMethod]
+ public void TestIp2Found()
+ {
+ var arinClient = new ArinClient();
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("98.155.64.40")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+ Assert.IsNotNull(ipResponse.Network.OrgRef.Name);
+ Assert.AreEqual("Time Warner Cable Internet LLC", ipResponse.Network.OrgRef.Name);
+
+ var organizationHandle = ipResponse.Network.OrgRef.Handle;
+ var organizationResponse = arinClient.QueryResourceAsync(organizationHandle.ToString(), ArinClient.ResourceType.Organization).Result;
+
+ Assert.IsNotNull(organizationResponse);
+ Assert.AreEqual("UNITED STATES", organizationResponse.Organization.iso3166_1.Name.Value);
+ Assert.AreEqual("Herndon", organizationResponse.Organization.City.Value);
+ Assert.AreEqual("VA", organizationResponse.Organization.iso3166_2.Value);
+ Assert.AreEqual("20171", organizationResponse.Organization.PostalCode.Value);
}
[TestMethod]
- public void TestIpNotFound()
+ public void TestIp3Found()
{
var arinClient = new ArinClient();
- var response = arinClient.QueryIpAsync(IPAddress.Parse("108.33.73.20")).Result;
- Assert.IsNull(response);
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("96.21.63.199")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+
+ Assert.IsNull(ipResponse.Network.OrgRef);
+
+ Assert.IsNotNull(ipResponse.Network.CustomerRef);
+
+ Assert.IsNotNull(ipResponse.Network.CustomerRef.Name);
+ Assert.AreEqual("Videotron Ltee", ipResponse.Network.CustomerRef.Name);
+
+ var customerHandle = ipResponse.Network.CustomerRef.Handle;
+ var customerResponse = arinClient.QueryResourceAsync(customerHandle.ToString(), ArinClient.ResourceType.Customer).Result;
+
+ Assert.IsNotNull(customerResponse);
+ Assert.AreEqual("CANADA", customerResponse.Customer.iso3166_1.Name.Value);
+ Assert.AreEqual("Montreal", customerResponse.Customer.City.Value);
+ Assert.AreEqual("QC", customerResponse.Customer.iso3166_2.Value);
+ Assert.AreEqual("H2X 3W4", customerResponse.Customer.PostalCode.Value);
}
+ [TestMethod]
+ public void TestIp4Found()
+ {
+ var arinClient = new ArinClient();
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("98.176.133.1")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+ Assert.IsNull(ipResponse.Network.OrgRef);
+ Assert.IsNotNull(ipResponse.Network.CustomerRef);
+
+ Assert.IsNotNull(ipResponse.Network.CustomerRef.Name);
+ Assert.AreEqual("Cox Communications", ipResponse.Network.CustomerRef.Name);
+
+ var customerHandle = ipResponse.Network.CustomerRef.Handle;
+ var customerResponse = arinClient.QueryResourceAsync(customerHandle.ToString(), ArinClient.ResourceType.Customer).Result;
+
+ Assert.IsNotNull(customerResponse);
+ Assert.AreEqual("UNITED STATES", customerResponse.Customer.iso3166_1.Name.Value);
+ Assert.AreEqual("Atlanta", customerResponse.Customer.City.Value);
+ Assert.AreEqual("GA", customerResponse.Customer.iso3166_2.Value);
+ Assert.AreEqual("30319", customerResponse.Customer.PostalCode.Value);
+ }
+
+ [TestMethod]
+ public void TestIp5Found()
+ {
+ var arinClient = new ArinClient();
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("108.234.177.20")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+
+ Assert.IsNotNull(ipResponse.Network.OrgRef);
+
+ Assert.IsNotNull(ipResponse.Network.OrgRef.Name);
+ Assert.AreEqual("AT&T Internet Services", ipResponse.Network.OrgRef.Name);
+
+ var organizationHandle = ipResponse.Network.OrgRef.Handle;
+ var organizationResponse = arinClient.QueryResourceAsync(organizationHandle.ToString(), ArinClient.ResourceType.Organization).Result;
+
+ Assert.IsNotNull(organizationResponse);
+ Assert.AreEqual("UNITED STATES", organizationResponse.Organization.iso3166_1.Name.Value);
+ Assert.AreEqual("Richardson", organizationResponse.Organization.City.Value);
+ Assert.AreEqual("TX", organizationResponse.Organization.iso3166_2.Value);
+ Assert.AreEqual("75082", organizationResponse.Organization.PostalCode.Value);
+ }
+
+ [TestMethod]
+ public void TestIp6Found()
+ {
+ var arinClient = new ArinClient();
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("174.65.101.118")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+
+ Assert.IsNull(ipResponse.Network.OrgRef);
+
+ Assert.IsNotNull(ipResponse.Network.CustomerRef);
+
+ Assert.IsNotNull(ipResponse.Network.CustomerRef.Name);
+ Assert.AreEqual("Cox Communications", ipResponse.Network.CustomerRef.Name);
+
+ var customerHandle = ipResponse.Network.CustomerRef.Handle;
+ var customerResponse = arinClient.QueryResourceAsync(customerHandle.ToString(), ArinClient.ResourceType.Customer).Result;
+
+ Assert.IsNotNull(customerResponse);
+ Assert.AreEqual("UNITED STATES", customerResponse.Customer.iso3166_1.Name.Value);
+ Assert.AreEqual("Atlanta", customerResponse.Customer.City.Value);
+ Assert.AreEqual("GA", customerResponse.Customer.iso3166_2.Value);
+ Assert.AreEqual("30319", customerResponse.Customer.PostalCode.Value);
+ }
+
+ [TestMethod]
+ public void TestIp7Found()
+ {
+ var arinClient = new ArinClient();
+ var ipResponse = arinClient.QueryIpAsync(IPAddress.Parse("174.34.144.69")).Result;
+
+ Assert.IsNotNull(ipResponse);
+ Assert.IsNotNull(ipResponse.Network);
+
+ Assert.IsTrue(ipResponse.Network.TermsOfUse.StartsWith("http"));
+ Assert.IsNotNull(ipResponse.Network.RegistrationDate.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0]);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].CidrLength.Value);
+ Assert.IsNotNull(ipResponse.Network.NetBlocks[0].Description);
+
+ Assert.IsNotNull(ipResponse.Network.OrgRef);
+
+ Assert.IsNotNull(ipResponse.Network.OrgRef.Name);
+ Assert.AreEqual("Ubiquity Server Solutions Seattle", ipResponse.Network.OrgRef.Name);
+
+ var organizationHandle = ipResponse.Network.OrgRef.Handle;
+ var organizationResponse = arinClient.QueryResourceAsync(organizationHandle.ToString(), ArinClient.ResourceType.Organization).Result;
+
+ Assert.IsNotNull(organizationResponse);
+ Assert.AreEqual("12101 Tukwila International Blvd", organizationResponse.Organization.StreetAddress.Line[0].Value.Trim());
+ Assert.AreEqual("Suite 100", organizationResponse.Organization.StreetAddress.Line[1].Value.Trim());
+ Assert.AreEqual("UNITED STATES", organizationResponse.Organization.iso3166_1.Name.Value);
+ Assert.AreEqual("Tukwila", organizationResponse.Organization.City.Value);
+ Assert.AreEqual("WA", organizationResponse.Organization.iso3166_2.Value);
+ Assert.AreEqual("98168", organizationResponse.Organization.PostalCode.Value);
+ }
}
}
diff --git a/src/ArinWhois.Tests/ArinWhois.Tests.csproj b/src/ArinWhois.Tests/ArinWhois.Tests.csproj
index f5a9799..a75b52f 100644
--- a/src/ArinWhois.Tests/ArinWhois.Tests.csproj
+++ b/src/ArinWhois.Tests/ArinWhois.Tests.csproj
@@ -35,7 +35,17 @@
4
+
+ ..\packages\Jil.2.12.1\lib\net45\Jil.dll
+ True
+
+
+
+ ..\packages\Sigil.4.5.1\lib\net45\Sigil.dll
+ True
+
+
@@ -59,6 +69,10 @@
ArinWhois
+
+
+
+
diff --git a/src/ArinWhois.Tests/app.config b/src/ArinWhois.Tests/app.config
new file mode 100644
index 0000000..feb3ba6
--- /dev/null
+++ b/src/ArinWhois.Tests/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ArinWhois.Tests/packages.config b/src/ArinWhois.Tests/packages.config
new file mode 100644
index 0000000..ed0f072
--- /dev/null
+++ b/src/ArinWhois.Tests/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ArinWhois.csproj b/src/ArinWhois.csproj
index 929cfa7..bf9f3bc 100644
--- a/src/ArinWhois.csproj
+++ b/src/ArinWhois.csproj
@@ -28,13 +28,16 @@
TRACE
prompt
4
+ bin\Release\ArinWhois.XML
-
- packages\Jil.1.5.0\lib\net45\Jil.dll
+
+ packages\Jil.2.12.1\lib\net45\Jil.dll
+ True
-
- packages\Sigil.4.2.1\lib\net45\Sigil.dll
+
+ packages\Sigil.4.5.1\lib\net45\Sigil.dll
+ True
@@ -48,16 +51,29 @@
+
+
+
+
+
+ if "$(ConfigurationName)" == "Release" goto PACK
+goto END
+:PACK
+pushd "$(ProjectDir)"
+md "$(SolutionDir)..\nuget"
+nuget.exe pack "$(ProjectFileName)" -Prop Configuration=Release;Platform=AnyCPU -o "$(SolutionDir)..\nuget"
+:END
+