From 7e405670b1562e40b1d2ca15d8f6682a6c1d83db Mon Sep 17 00:00:00 2001 From: Michael Krolikowski Date: Sun, 8 Sep 2019 22:18:48 +0200 Subject: [PATCH] replaces tut with mdoc due to tpolecat/tut#246 --- build.sbt | 7 +- .../simple/netty/client/DnsClient.scala | 4 +- project/plugins.sbt | 2 +- src/main/{tut => doc}/akka.md | 10 +- src/main/{tut => doc}/core.md | 0 src/main/{tut => doc}/dsl.md | 188 ++++++++++++++---- src/main/{tut => doc}/index.md | 8 + src/main/{tut => doc}/netty.md | 22 +- 8 files changed, 176 insertions(+), 65 deletions(-) rename src/main/{tut => doc}/akka.md (94%) rename src/main/{tut => doc}/core.md (100%) rename src/main/{tut => doc}/dsl.md (75%) rename src/main/{tut => doc}/index.md (79%) rename src/main/{tut => doc}/netty.md (87%) diff --git a/build.sbt b/build.sbt index 0b76c7b..ce9b187 100644 --- a/build.sbt +++ b/build.sbt @@ -104,9 +104,10 @@ lazy val siteSettings = ParadoxMaterialThemePlugin.paradoxMaterialThemeSettings( git.remoteRepo := "git@github.com:mkroli/dns4s.git", siteSubdirName in ScalaUnidoc := "api", addMappingsToSiteDir(mappings in (ScalaUnidoc, packageDoc), siteSubdirName in ScalaUnidoc), - sourceDirectory in Paradox := tutTargetDirectory.value, + mdocIn := sourceDirectory.value / "main" / "doc", + sourceDirectory in Paradox := mdocOut.value, sourceDirectory in Paradox in paradoxTheme := sourceDirectory.value / "main" / "paradox" / "template", - makeSite := makeSite.dependsOn(tut).value, + makeSite := makeSite.dependsOn(mdoc.toTask("")).value, paradoxNavigationDepth := 5, paradoxProperties in Paradox ~= (_ - "github.base_url"), paradoxProperties in Paradox += ("version" -> version.value), @@ -127,7 +128,7 @@ lazy val dns4sRoot = Project(id = "dns4s", base = file(".")) parentSettings ++ siteSettings ) - .enablePlugins(GhpagesPlugin, ScalaUnidocPlugin, TutPlugin, ParadoxSitePlugin, ParadoxMaterialThemePlugin) + .enablePlugins(GhpagesPlugin, ScalaUnidocPlugin, MdocPlugin, ParadoxSitePlugin, ParadoxMaterialThemePlugin) .aggregate(dns4sCore, dns4sAkka, dns4sNetty) .dependsOn(dns4sCore, dns4sAkka, dns4sNetty) diff --git a/examples/simple-netty-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/netty/client/DnsClient.scala b/examples/simple-netty-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/netty/client/DnsClient.scala index 0f18784..0450f84 100644 --- a/examples/simple-netty-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/netty/client/DnsClient.scala +++ b/examples/simple-netty-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/netty/client/DnsClient.scala @@ -28,7 +28,7 @@ import io.netty.channel.socket.nio.NioDatagramChannel import io.netty.util.concurrent.{ Future => NettyFuture } import io.netty.util.concurrent.GenericFutureListener -class DnsServerHandler(group: NioEventLoopGroup) extends SimpleChannelInboundHandler[DnsPacket] { +class DnsClientHandler(group: NioEventLoopGroup) extends SimpleChannelInboundHandler[DnsPacket] { def channelRead0(ctx: ChannelHandlerContext, packet: DnsPacket) { packet.content match { case Response(Answers(answers)) => @@ -48,7 +48,7 @@ object DnsClient extends App { .channel(classOf[NioDatagramChannel]) .handler(new ChannelInitializer[DatagramChannel] { override def initChannel(ch: DatagramChannel) { - ch.pipeline.addLast(new DnsCodec, new DnsServerHandler(group)) + ch.pipeline.addLast(new DnsCodec, new DnsClientHandler(group)) } }) .bind(0) diff --git a/project/plugins.sbt b/project/plugins.sbt index 673b46e..3936622 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -25,7 +25,7 @@ addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "1.3.2") addSbtPlugin("io.github.jonas" % "sbt-paradox-material-theme" % "0.6.0") -addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.6.12") +addSbtPlugin("org.scalameta" % "sbt-mdoc" % "1.3.2") addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.6.3") diff --git a/src/main/tut/akka.md b/src/main/doc/akka.md similarity index 94% rename from src/main/tut/akka.md rename to src/main/doc/akka.md index 359c25c..aa9b0e7 100644 --- a/src/main/tut/akka.md +++ b/src/main/doc/akka.md @@ -18,11 +18,11 @@ libraryDependencies ++= Seq( ### Imports Use the following additional imports to get started: -```tut:silent +```scala mdoc:silent import com.github.mkroli.dns4s.dsl._ import com.github.mkroli.dns4s.akka._ ``` -```tut:invisible +```scala mdoc:invisible import scala.language.postfixOps import akka.actor._ @@ -34,7 +34,7 @@ import scala.concurrent.duration._ ### Server The following is an excerpt from [examples/simple/../DnsServer.scala](https://github.com/mkroli/dns4s/blob/master/examples/simple/src/main/scala/com/github/mkroli/dns4s/examples/simple/DnsServer.scala): -```tut:silent +```scala mdoc:silent class DnsHandlerActor extends Actor { override def receive = { case Query(q) ~ Questions(QName(host) ~ TypeA() :: Nil) => @@ -51,7 +51,7 @@ object DnsServer extends App { ### Client The following is an excerpt from [examples/simple-client/../DnsClient.scala](https://github.com/mkroli/dns4s/blob/master/examples/simple-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/client/DnsClient.scala): -```tut:silent +```scala mdoc:silent implicit val system = ActorSystem("DnsServer") implicit val timeout = Timeout(5.seconds) import system.dispatcher @@ -63,7 +63,7 @@ IO(Dns) ? Dns.DnsPacket(Query ~ Questions(QName("google.de")), new java.net.Inet } } ``` -```tut:invisible +```scala mdoc:invisible system.terminate() ``` diff --git a/src/main/tut/core.md b/src/main/doc/core.md similarity index 100% rename from src/main/tut/core.md rename to src/main/doc/core.md diff --git a/src/main/tut/dsl.md b/src/main/doc/dsl.md similarity index 75% rename from src/main/tut/dsl.md rename to src/main/doc/dsl.md index 597c20f..a524d41 100644 --- a/src/main/tut/dsl.md +++ b/src/main/doc/dsl.md @@ -2,10 +2,7 @@ DSL === Use the following imports for the examples: -```tut:invisible -import scala.language.postfixOps -``` -```tut:silent +```scala mdoc:silent import com.github.mkroli.dns4s._ import com.github.mkroli.dns4s.dsl._ import com.github.mkroli.dns4s.section._ @@ -16,7 +13,10 @@ Header ------ ### ID -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val msg: Message = Query ~ Id(123) @@ -27,7 +27,10 @@ val id = msg match { ``` ### QR -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query: Message = Query val response1: Message = Response @@ -41,7 +44,10 @@ val qr = query match { ``` ### Opcode -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query1: Message = Query ~ StandardQuery val query2: Message = Query ~ InverseQuery @@ -56,7 +62,10 @@ val op = query1 match { ``` ### AA -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ AuthoritativeAnswer @@ -68,7 +77,10 @@ val aa = response match { ``` ### TC -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Truncation @@ -80,7 +92,10 @@ val tc = response match { ``` ### RD -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query: Message = Query ~ RecursionDesired @@ -92,7 +107,10 @@ val rd = query match { ``` ### RA -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ RecursionAvailable @@ -104,7 +122,10 @@ val ra = response match { ``` ### RCODE -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response1: Message = Response ~ NoError val response2: Message = Response ~ FormatError @@ -128,7 +149,10 @@ Sections -------- ### Question section -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query: Message = Query ~ Questions() @@ -139,7 +163,10 @@ val questions = query match { ``` #### QNAME -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query1: Message = Query ~ Questions(QName("example.com")) val query2: Message = Query ~ Questions(QName("example.com"), QName("www.example.com")) @@ -151,7 +178,10 @@ val names = query2 match { ``` #### QTYPE -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query: Message = Query ~ Questions(QName("example.com") ~ QType(ResourceRecord.typeTXT)) @@ -212,7 +242,10 @@ val `type` = query match { ``` #### QCLASS -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query: Message = Query ~ Questions(QName("example.com") ~ QType(ResourceRecord.typeA) ~ QClass(ResourceRecord.classIN)) @@ -235,7 +268,10 @@ val qclass = query match { ``` ### Answer section -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers() @@ -246,7 +282,10 @@ val answers = response match { ``` ### Authority records section -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Authority() @@ -257,7 +296,10 @@ val authority = response match { ``` ### Additional records section -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Additional() @@ -270,7 +312,10 @@ val additional = response match { ### Resource record #### NAME -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(RRName("example.com")) @@ -281,7 +326,10 @@ val name = response match { ``` #### TYPE -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Answers(RRName("example.com") ~ RRType(ResourceRecord.typeTXT)) @@ -344,7 +392,10 @@ val rtype = response match { ``` #### CLASS -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Answers(RRName("example.com") ~ RRClass(ResourceRecord.classIN)) @@ -367,7 +418,10 @@ val `class` = response match { ``` #### TTL -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(RRName("example.com") ~ RRType(ResourceRecord.typeTXT) ~ RRClass(ResourceRecord.classIN) ~ RRTtl(123)) @@ -380,10 +434,13 @@ val ttl = response match { ### Resource records #### ARecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation -val address: java.net.Inet4Address = java.net.InetAddress.getByAddress(Array.fill[Byte](4)(0)).asInstanceOf[java.net.Inet4Address] -val response1: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(ARecord(address)) +val addr: java.net.Inet4Address = java.net.InetAddress.getByAddress(Array.fill[Byte](4)(0)).asInstanceOf[java.net.Inet4Address] +val response1: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(ARecord(addr)) val response2: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(ARecord(Array[Byte](1, 2, 3, 4))) val response3: Message = Response ~ Questions(QName("example.com") ~ TypeA) ~ Answers(ARecord("1.2.3.4")) @@ -394,10 +451,13 @@ val address = response1 match { ``` #### AAAARecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation -val address: java.net.Inet6Address = java.net.InetAddress.getByAddress(Array.fill[Byte](16)(0)).asInstanceOf[java.net.Inet6Address] -val response1: Message = Response ~ Questions(QName("example.com") ~ TypeAAAA) ~ Answers(AAAARecord(address)) +val addr: java.net.Inet6Address = java.net.InetAddress.getByAddress(Array.fill[Byte](16)(0)).asInstanceOf[java.net.Inet6Address] +val response1: Message = Response ~ Questions(QName("example.com") ~ TypeAAAA) ~ Answers(AAAARecord(addr)) val response2: Message = Response ~ Questions(QName("example.com") ~ TypeAAAA) ~ Answers(AAAARecord(Array[Byte](1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16))) val response3: Message = Response ~ Questions(QName("example.com") ~ TypeAAAA) ~ Answers(AAAARecord("0123:4567:89ab:cdef:0123:4567:89ab:cdef")) @@ -408,7 +468,10 @@ val address = response1 match { ``` #### CNameRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("www.example.com") ~ TypeCNAME) ~ Answers(CNameRecord("example.com")) @@ -419,7 +482,10 @@ val cname = response match { ``` #### MXRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeMX) ~ Answers(MXRecord(1, "example.com")) @@ -430,7 +496,10 @@ val (preference, exchange) = response match { ``` #### NAPTRRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeNAPTR) ~ Answers(NAPTRRecord(1, 1, "A", "", "!^.*$!example.com!", "")) @@ -441,7 +510,10 @@ val (order, preference, flags, services, regexp, replacement) = response match { ``` #### OPTRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeOPT) ~ Additional(OPTRecord(Nil)) @@ -452,7 +524,10 @@ val optRecord = response match { ``` ##### ClientSubnetOption -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Additional(OPTRecord(ClientSubnetOption(OPTResource.ClientSubnetOPTOptionData.familyIPv4, 24, 0, java.net.InetAddress.getByName("1.2.3.0")) :: Nil)) @@ -463,7 +538,10 @@ val (family, sourcePrefixLength, scopePrefixLength, address) = response match { ``` #### NSRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeNS) ~ Answers(NSRecord("example.com")) @@ -474,7 +552,10 @@ val nsdname = response match { ``` #### PTRRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypePTR) ~ Answers(PTRRecord("example.com")) @@ -485,7 +566,10 @@ val ptrdname = response match { ``` #### HInfoRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeHINFO) ~ Answers(HInfoRecord("CPU", "Linux")) @@ -496,7 +580,10 @@ val (cpu, os) = response match { ``` #### TXTRecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeTXT) ~ Answers(TXTRecord("Test", "test", "tesT")) @@ -507,7 +594,10 @@ val txt = response match { ``` #### SOARecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeSOA) ~ Answers(SOARecord("example.com", "admin.example.com", 2015122401L, 3600L, 1800L, 604800L, 600L)) @@ -518,7 +608,10 @@ val (mname, rname, serial, refresh, retry, expire, minimum) = response match { ``` #### CAARecord -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val response: Message = Response ~ Questions(QName("example.com") ~ TypeCAA) ~ Answers(RRName("example.com") ~ CAARecord.Issue("cert-authority.org")) @@ -532,7 +625,10 @@ Misc ---- ### DnsClassName -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Matching val msg: Message = Response ~ Questions(QName("example.com") ~ TypeTXT) ~ Answers(TXTRecord("Test", "test", "tesT")) val (qclass, aclass) = msg match { @@ -542,7 +638,10 @@ val (qclass, aclass) = msg match { ### DnsTypeName The DnsTypeName object can be used to extract a String representation of a Question or a ResourceRecord. -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Matching val msg: Message = Response ~ Questions(QName("example.com") ~ TypeTXT) ~ Answers(TXTRecord("Test", "test", "tesT")) val (qtype, atype) = msg match { @@ -551,7 +650,10 @@ val (qtype, atype) = msg match { ``` ### EDNS -```tut:book +```scala mdoc:reset-class:invisible +import scala.language.postfixOps, com.github.mkroli.dns4s, dns4s._, dns4s.dsl._, dns4s.section._, dns4s.section.resource._ +``` +```scala mdoc // Creation val query1: Message = Query ~ Questions(QName("example.com") ~ TypeA) ~ EDNS() val query2: Message = Query ~ Questions(QName("example.com") ~ TypeA) ~ EDNS(4096) diff --git a/src/main/tut/index.md b/src/main/doc/index.md similarity index 79% rename from src/main/tut/index.md rename to src/main/doc/index.md index cdcb4b6..b31620a 100644 --- a/src/main/tut/index.md +++ b/src/main/doc/index.md @@ -22,3 +22,11 @@ It consists of the following parts: [Scala]:http://www.scala-lang.org [DNS]:http://en.wikipedia.org/wiki/Domain_Name_System + +Usage +----- + +@@dependency[sbt,Maven,Gradle] { + group="com.github.mkroli" artifact="dns4s-akka_2.12" version="$version$" + group2="com.github.mkroli" artifact2="dns4s-netty_2.12" version2="$version$" +} diff --git a/src/main/tut/netty.md b/src/main/doc/netty.md similarity index 87% rename from src/main/tut/netty.md rename to src/main/doc/netty.md index 63c8f63..6eadc43 100644 --- a/src/main/tut/netty.md +++ b/src/main/doc/netty.md @@ -19,13 +19,13 @@ libraryDependencies ++= Seq( ## Imports Use the following additional imports to get started: -```tut:silent +```scala mdoc:silent import com.github.mkroli.dns4s.dsl._ import com.github.mkroli.dns4s.netty._ import io.netty.util.concurrent.Future ``` -```tut:invisible +```scala mdoc:invisible import java.net.InetSocketAddress import io.netty.bootstrap.Bootstrap import io.netty.channel._ @@ -37,9 +37,9 @@ import io.netty.util.concurrent.GenericFutureListener ### Server The following is an excerpt from [examples/simple-netty/../DnsServer.scala](https://github.com/mkroli/dns4s/blob/master/examples/simple-netty/src/main/scala/com/github/mkroli/dns4s/examples/simple/netty/DnsServer.scala): -```tut:silent +```scala mdoc:silent class DnsServerHandler extends SimpleChannelInboundHandler[DnsPacket] { - def channelRead0(ctx: ChannelHandlerContext, packet: DnsPacket) { + def channelRead0(ctx: ChannelHandlerContext, packet: DnsPacket): Unit = { Some(packet.content).collect { case Query(q) ~ Questions(QName(host) ~ TypeA() :: Nil) => Response(q) ~ Answers(RRName(host) ~ ARecord("1.2.3.4")) @@ -54,7 +54,7 @@ object DnsServer extends App { .group(new NioEventLoopGroup) .channel(classOf[NioDatagramChannel]) .handler(new ChannelInitializer[DatagramChannel] { - override def initChannel(ch: DatagramChannel) { + override def initChannel(ch: DatagramChannel): Unit = { ch.pipeline.addLast(new DnsCodec, new DnsServerHandler) } }) @@ -64,9 +64,9 @@ object DnsServer extends App { ### Client The following is an excerpt from [examples/simple-netty-client/../DnsClient.scala](https://github.com/mkroli/dns4s/blob/master/examples/simple-client/src/main/scala/com/github/mkroli/dns4s/examples/simple/client/DnsClient.scala): -```tut:silent -class DnsServerHandler(group: NioEventLoopGroup) extends SimpleChannelInboundHandler[DnsPacket] { - def channelRead0(ctx: ChannelHandlerContext, packet: DnsPacket) { +```scala mdoc:silent +class DnsClientHandler(group: NioEventLoopGroup) extends SimpleChannelInboundHandler[DnsPacket] { + def channelRead0(ctx: ChannelHandlerContext, packet: DnsPacket): Unit = { packet.content match { case Response(Answers(answers)) => answers.collect { @@ -84,13 +84,13 @@ val channel: ChannelFuture = { .group(group) .channel(classOf[NioDatagramChannel]) .handler(new ChannelInitializer[DatagramChannel] { - override def initChannel(ch: DatagramChannel) { - ch.pipeline.addLast(new DnsCodec, new DnsServerHandler(group)) + override def initChannel(ch: DatagramChannel): Unit = { + ch.pipeline.addLast(new DnsCodec, new DnsClientHandler(group)) } }) .bind(0) .addListener(new GenericFutureListener[Future[Void]] { - override def operationComplete(f: Future[Void]) { + override def operationComplete(f: Future[Void]): Unit = { channel.channel.writeAndFlush(DnsPacket(Query ~ Questions(QName("google.de")), new InetSocketAddress("8.8.8.8", 53))) } })