{"id":16696887,"url":"https://github.com/rustedbones/taxonomy","last_synced_at":"2025-10-13T03:20:10.409Z","repository":{"id":39851433,"uuid":"255695514","full_name":"RustedBones/taxonomy","owner":"RustedBones","description":"Strongly typed DNS for scala. Based on the cats ecosystem with scodec and fs2","archived":false,"fork":false,"pushed_at":"2024-08-06T01:59:21.000Z","size":145,"stargazers_count":7,"open_issues_count":8,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-10T02:58:03.405Z","etag":null,"topics":["cats-effect","dns","fs2","scala","scodec"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RustedBones.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-14T18:42:47.000Z","updated_at":"2024-07-29T07:21:00.000Z","dependencies_parsed_at":"2025-02-16T10:32:53.616Z","dependency_job_id":"731c63e4-5cd0-4566-8b79-482a83d035e4","html_url":"https://github.com/RustedBones/taxonomy","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/RustedBones/taxonomy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustedBones%2Ftaxonomy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustedBones%2Ftaxonomy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustedBones%2Ftaxonomy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustedBones%2Ftaxonomy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RustedBones","download_url":"https://codeload.github.com/RustedBones/taxonomy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustedBones%2Ftaxonomy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265746637,"owners_count":23821704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cats-effect","dns","fs2","scala","scodec"],"created_at":"2024-10-12T17:45:09.348Z","updated_at":"2025-10-13T03:20:10.318Z","avatar_url":"https://github.com/RustedBones.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# taxonomy\n\n[![Continuous Integration](https://github.com/RustedBones/taxonomy/actions/workflows/ci.yml/badge.svg)](https://github.com/RustedBones/taxonomy/actions/workflows/ci.yml)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/fr.davit/taxonomy-model_3/badge.svg)](https://maven-badges.herokuapp.com/maven-central/fr.davit/taxonomy-model_3)\n[![Software License](https://img.shields.io/badge/license-Apache%202-brightgreen.svg?style=flat)](LICENSE)\n[![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-blue.svg?style=flat\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)\n\nStrongly typed DNS for scala based on the [cats ecosystem](https://github.com/typelevel/cats)\nwith [scodec](https://github.com/scodec/scodec) \nand [fs2](https://github.com/typelevel/fs2)\n\n## Versions\n\n| Version | Release date | fs2 version | Scala versions      |\n|---------|--------------|-------------|---------------------|\n| `1.2.1` | 2022-12-29   | `3.4.0`     | `3.2.1`             |\n| `1.2.0` | 2022-12-24   | `3.4.0`     | `3.2.1`             |\n| `1.1.0` | 2022-03-25   | `3.2.5`     | `3.1.1`             |\n| `1.0.0` | 2021-05-09   | `3.0.2`     | `2.13.5`, `2.12.13` |\n| `0.3.0` | 2021-01-09   | `2.5.0`     | `2.13.4`, `2.12.12` |\n| `0.2.0` | 2020-12-20   | `2.4.6`     | `2.13.4`, `2.12.12` |\n| `0.1.0` | 2020-12-17   | `2.4.6`     | `2.13.4`, `2.12.12` |\n\n\n## Getting taxonomy\n\n```sbt\n// DNS with fs2\nlibraryDependencies += \"fr.davit\" %% \"taxonomy-fs2\" % \"\u003cversion\u003e\"\n```\n\nIf you want to only part of the project with another IO implementation for instance,\nyou can import the following sub modules\n\n```sbt\n// for the scala model only\nlibraryDependencies += \"fr.davit\" %% \"taxonomy-model\"  % \"\u003cversion\u003e\"\n// for the binary protocol with scodec\nlibraryDependencies += \"fr.davit\" %% \"taxonomy-scodec\" % \"\u003cversion\u003e\"\n```\n\n## Dns\n\nHere is a quick example of a DNS lookup to the `9.9.9.9` DNS server for the `davit.fr` domain name\n\n```scala\nimport java.net.{Inet4Address, InetAddress, InetSocketAddress}\n\nimport cats.effect.*\nimport cats.effect.unsafe.implicits.*\nimport fr.davit.taxonomy.model.record.*\nimport fr.davit.taxonomy.model.*\nimport fr.davit.taxonomy.scodec.DnsCodec\nimport fs2.io.net.Network\nimport munit.CatsEffectSuite\nimport scodec.Codec\n\nimport scala.concurrent.duration.*\n\ngiven Codec[DnsMessage] = DnsCodec.dnsMessage\n\nval quad9DnsServer = new InetSocketAddress(\"9.9.9.9\", 53)\n\nval question        = DnsQuestion(\"davit.fr\", DnsRecordType.A, unicastResponse = false, DnsRecordClass.Internet)\nval query           = DnsMessage.query(id = 1, questions = Seq(question))\nval socketResource  = Network[IO].openDatagramSocket()\nval response        = socketResource.use(s =\u003e Dns.resolve(s, DnsPacket(quad9DnsServer, query))).unsafeRunSync()\n```\n\n## Based on taxonomy\n\n- [`scout`](https://github.com/RustedBones/scout): zeroconf DNS-SD client and server\n- [`shovel`](https://github.com/RustedBones/shovel): A JVM dig implementation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustedbones%2Ftaxonomy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustedbones%2Ftaxonomy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustedbones%2Ftaxonomy/lists"}