Skip to content

Commit

Permalink
Create minidns-client, make minidns-core a pure functional core
Browse files Browse the repository at this point in the history
Fixes #48.
  • Loading branch information
Flowdalic committed Mar 26, 2018
1 parent badfdbe commit 6b665a1
Show file tree
Hide file tree
Showing 87 changed files with 87 additions and 26 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Expand Up @@ -112,4 +112,4 @@ Temporary Items
.apdisk

# Auto generated version file
/minidns-client/src/main/resources/de.measite.minidns/version
/minidns-core/src/main/resources/de.measite.minidns/version
24 changes: 3 additions & 21 deletions minidns-client/build.gradle
@@ -1,23 +1,5 @@
dependencies {
testCompile "junit:junit:$junitVersion"
compile project(':minidns-core')
testCompile project(path: ":minidns-core", configuration: "testRuntime")
testCompile project(path: ":minidns-core", configuration: "archives")
}

class CreateFileTask extends DefaultTask {
@Input
String fileContent

@OutputFile
File outputFile

@TaskAction
def createFile() {
outputFile.text = fileContent
}
}

task createVersionResource(type: CreateFileTask) {
fileContent = version + ' (' + gitCommit + ' ' + builtDate + ')'
outputFile = new File(projectDir, 'src/main/resources/de.measite.minidns/version')
}

compileJava.dependsOn(createVersionResource)
23 changes: 23 additions & 0 deletions minidns-core/build.gradle
@@ -0,0 +1,23 @@
dependencies {
testCompile "junit:junit:$junitVersion"
}

class CreateFileTask extends DefaultTask {
@Input
String fileContent

@OutputFile
File outputFile

@TaskAction
def createFile() {
outputFile.text = fileContent
}
}

task createVersionResource(type: CreateFileTask) {
fileContent = version + ' (' + gitCommit + ' ' + builtDate + ')'
outputFile = new File(projectDir, 'src/main/resources/de.measite.minidns/version')
}

compileJava.dependsOn(createVersionResource)
Expand Up @@ -12,6 +12,7 @@

import de.measite.minidns.DNSSECConstants.DigestAlgorithm;
import de.measite.minidns.DNSSECConstants.SignatureAlgorithm;
import de.measite.minidns.Record.CLASS;
import de.measite.minidns.Record.TYPE;
import de.measite.minidns.record.A;
import de.measite.minidns.record.AAAA;
Expand All @@ -35,6 +36,8 @@

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -45,10 +48,6 @@
import java.util.TreeMap;

import static de.measite.minidns.Assert.assertCsEquals;
import static de.measite.minidns.DNSWorld.a;
import static de.measite.minidns.DNSWorld.aaaa;
import static de.measite.minidns.DNSWorld.ns;
import static de.measite.minidns.DNSWorld.record;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
Expand Down Expand Up @@ -536,4 +535,60 @@ public void testFilledMessageTerminalOutput() throws Exception {
message.getEdnsBuilder().setUdpPayloadSize(512);
assertNotNull(message.build().asTerminalOutput());
}

public static Record<Data> record(String name, long ttl, Data data) {
return new Record<>(name, data.getType(), CLASS.IN, ttl, data, false);
}

public static Record<Data> record(DNSName name, long ttl, Data data) {
return new Record<>(name, data.getType(), CLASS.IN, ttl, data, false);
}

public static Record<Data> record(String name, Data data) {
return record(name, 3600, data);
}

public static A a(String ipString) {
return a(parseIpV4(ipString));
}

public static A a(byte[] ip) {
return new A(ip);
}

public static byte[] parseIpV4(String ipString) {
String[] split = ipString.split("\\.");
if (split.length != 4) {
throw new IllegalArgumentException(ipString + " is not an valid IPv4 address");
}
byte[] ip = new byte[4];
for (int i = 0; i < 4; i++) {
ip[i] = (byte) Integer.parseInt(split[i]);
}
return ip;
}

public static NS ns(String name) {
return ns(DNSName.from(name));
}

public static NS ns(DNSName name) {
return new NS(name);
}

public static AAAA aaaa(byte[] ip) {
return new AAAA(ip);
}

public static AAAA aaaa(String ipString) {
return aaaa(parseIpV6(ipString));
}

static byte[] parseIpV6(String ipString) {
try {
return InetAddress.getByName(ipString).getAddress();
} catch (UnknownHostException e) {
throw new IllegalArgumentException(ipString + " is not an valid IPv6 address", e);
}
}
}
1 change: 1 addition & 0 deletions settings.gradle
Expand Up @@ -3,6 +3,7 @@
// name of the root directory
rootProject.name = 'MiniDNS'

include 'minidns-core'
include 'minidns-client'
include 'minidns-async'
include 'minidns-iterative-resolver'
Expand Down

0 comments on commit 6b665a1

Please sign in to comment.