Cloudflare API v4 in kotlin
Go to file
2020-06-06 15:19:52 +02:00
.idea updated idea settings 2020-06-06 15:19:52 +02:00
gradle/wrapper Updated gradle 2020-01-06 15:00:22 +01:00
src/dorkbox/kloudflareApi Added dns data class to codegen/serialization 2020-01-06 18:01:41 +01:00
test/dorkbox/kloudflareApi Added Conscrypt as SSL library, Fixed issues with kapt for build+test. Fixed unit test (wrapped in try block) 2020-01-06 14:36:39 +01:00
.gitignore added gitignore 2019-06-21 19:09:46 +02:00
build.gradle.kts Updated version from 1.1 to 1.2 2020-01-06 15:01:29 +01:00
gradlew Updated gradle 2020-01-06 15:00:22 +01:00
gradlew.bat Added gradle build files 2019-06-24 16:42:03 +02:00
LICENSE Added readme and license file 2019-06-25 22:21:09 +02:00
LICENSE.Apachev2 Added gradle build files 2019-06-24 16:42:03 +02:00
logback.xml added logback file 2019-07-28 15:02:06 +02:00
README.md Updated version from 1.1 to 1.2 2020-01-06 15:01:29 +01:00
settings.gradle.kts Added gradle build files 2019-06-24 16:42:03 +02:00

KloudflareAPI

Dorkbox Github Gitlab Bitbucket

KloudflareAPI is an kotlin project that implements (some of) the Cloudflare v4 API, allowing one manage DNS zones and user information

Pull requests are welcome!

  • This is for cross-platform use, specifically - linux 32/64, mac 64, and windows 32/64. Java 8+
val email = "test@example.com"
val token = "ac1d3f45b51cc5d23e47aa4ac7c07b54d60f2"

val kloudflare = Kloudflare(email, token)
println(kloudflare.getUser())
        
val listZones = kloudflare.listZones()
listZones.forEach { zone ->
    println("${zone.name} : ${zone.id}")

    val dnsRecords = kloudflare.listDnsRecords(zone)
    dnsRecords.forEach { dnsRecord ->
        if (dnsRecord.type == RecordType.A || dnsRecord.type == RecordType.AAAA) {
            val domainLength = zone.name.length
            val length = dnsRecord.name.length - domainLength

            val domainName = if (length == 0) {
                "@"
            }
            else {
                // -1 because we don't want the '.'
                dnsRecord.name.subSequence(0, length - 1)
            }

            println("  $domainName ${dnsRecord.type} : ${dnsRecord.id}")

            val newDnsRecord = CreateDnsRecord(zone)
            newDnsRecord.type = RecordType.A
            newDnsRecord.name = "test"
            newDnsRecord.content = "1.2.3.4"

            val newRecord = kloudflare.createDnsRecord(newDnsRecord)
            println("Created: ${newRecord.name} -> ${newRecord.content}")
        }
    }
}

   

Maven Info

<dependencies>
    ...
    <dependency>
      <groupId>com.dorkbox</groupId>
      <artifactId>KloudflareAPI</artifactId>
      <version>1.2</version>
    </dependency>
</dependencies>

Gradle Info

dependencies {
    ...
    compile 'com.dorkbox:KloudflareAPI:1.2'
}

License

This project is © 2019 dorkbox llc, and is distributed under the terms of the Apache v2.0 License. See file "LICENSE" for further references.