From c970fc7888a73bd9488194f8aba3794e7c01dcc3 Mon Sep 17 00:00:00 2001 From: nathan Date: Mon, 24 Jun 2019 00:03:49 +0200 Subject: [PATCH] Cleanup, added transient id/zone ifnromation to dns records --- src/dorkbox/Kloudflare.kt | 30 ++++++++++++++++++-------- src/dorkbox/api/CloudflareActions.kt | 10 ++++----- src/dorkbox/api/dns/CreateDnsRecord.kt | 9 +++++++- src/dorkbox/api/dns/DnsRecord.kt | 8 +++++++ src/dorkbox/api/dns/UpdateDnsRecord.kt | 2 +- 5 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/dorkbox/Kloudflare.kt b/src/dorkbox/Kloudflare.kt index de44183..d1f71e1 100644 --- a/src/dorkbox/Kloudflare.kt +++ b/src/dorkbox/Kloudflare.kt @@ -22,6 +22,8 @@ import dorkbox.api.core.* import dorkbox.api.dns.CreateDnsRecord import dorkbox.api.dns.DeleteDnsRecord import dorkbox.api.dns.DnsRecord +import dorkbox.api.dns.UpdateDnsRecord +import dorkbox.api.firewall.AccessRule import dorkbox.api.user.BillingHistory import dorkbox.api.user.BillingProfile import dorkbox.api.user.User @@ -93,8 +95,8 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) { } - fun getUser(): User { - return wrap(cloudflare.getUser(xAuthEmail, xAuthKey)) + fun getUserDetails(): User { + return wrap(cloudflare.getUserDetails(xAuthEmail, xAuthKey)) } fun getUserBillingProfile(): BillingProfile { @@ -118,19 +120,29 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) { } fun listDnsRecords(zone: Zone): List { - return wrap(cloudflare.listDnsRecords(xAuthEmail, xAuthKey, zone.id)) + val wrap = wrap(cloudflare.listDnsRecords(xAuthEmail, xAuthKey, zone.id)) + wrap.forEach { + it.zone = zone + } + return wrap } - fun createDnsRecord(zone: Zone, dnsRecord: CreateDnsRecord): DnsRecord { - return wrap(cloudflare.createDnsRecord(xAuthEmail, xAuthKey, zone.id, dnsRecord)) + fun createDnsRecord(dnsRecord: CreateDnsRecord): DnsRecord { + val wrap = wrap(cloudflare.createDnsRecord(xAuthEmail, xAuthKey, dnsRecord.zone.id, dnsRecord)) + wrap.zone = dnsRecord.zone + return wrap } - fun updateDnsRecord(zone: Zone, newDnsRecord: CreateDnsRecord): Any { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + fun updateDnsRecord(updatedDnsRecord: UpdateDnsRecord): Any { + return wrap(cloudflare.updateDnsRecord(xAuthEmail, xAuthKey, updatedDnsRecord.zone.id, updatedDnsRecord.id, updatedDnsRecord)) } - fun deleteDnsRecord(zone: Zone, dnsRecord: DnsRecord): DeleteDnsRecord { - return wrap(cloudflare.deleteDnsRecord(xAuthEmail, xAuthKey, zone.id, dnsRecord.id)) + fun deleteDnsRecord(dnsRecord: DnsRecord): DeleteDnsRecord { + return wrap(cloudflare.deleteDnsRecord(xAuthEmail, xAuthKey, dnsRecord.zone.id, dnsRecord.id)) + } + + fun listAccessRules(): List { + return wrap(cloudflare.listAccessRules(xAuthEmail, xAuthKey)) } } diff --git a/src/dorkbox/api/CloudflareActions.kt b/src/dorkbox/api/CloudflareActions.kt index e366370..509949f 100644 --- a/src/dorkbox/api/CloudflareActions.kt +++ b/src/dorkbox/api/CloudflareActions.kt @@ -38,10 +38,10 @@ interface CloudflareActions { */ @Headers("Content-Type: application/json") @GET("user") - fun getUser( + fun getUserDetails( @Header("X-Auth-Email") email: String, @Header("X-Auth-Key") key: String - ): Call> + ): Call> /** * Gets the user's Billing Profile @@ -147,7 +147,7 @@ interface CloudflareActions { @Path("zone_identifier") zoneIdentifier: String, @Path("identifier") identifier: String, @Body data: UpdateDnsRecord - ): Call> + ): Call> /** * Deletes a DNS record for the specified zone + dns record @@ -161,7 +161,7 @@ interface CloudflareActions { @Header("X-Auth-Key") key: String, @Path("zone_identifier") zoneIdentifier: String, @Path("identifier") identifier: String - ): Call> + ): Call> /** * Lists the access rules for the firewall. @@ -173,6 +173,6 @@ interface CloudflareActions { fun listAccessRules( @Header("X-Auth-Email") email: String, @Header("X-Auth-Key") key: String - ): Call>> + ): Call>> } diff --git a/src/dorkbox/api/dns/CreateDnsRecord.kt b/src/dorkbox/api/dns/CreateDnsRecord.kt index 17284d0..1569cbd 100644 --- a/src/dorkbox/api/dns/CreateDnsRecord.kt +++ b/src/dorkbox/api/dns/CreateDnsRecord.kt @@ -20,7 +20,14 @@ import com.squareup.moshi.Json /** * https://api.cloudflare.com/#dns-records-for-a-zone-create-dns-record */ -open class CreateDnsRecord { +open class CreateDnsRecord(dnsRecord: DnsRecord) { + + @Transient + var id = dnsRecord.id + + @Transient + var zone = dnsRecord.zone + /** * Record type * A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF, CERT, DNSKEY, DS, NAPTR, SMIMEA, SSHFP, TLSA, URI diff --git a/src/dorkbox/api/dns/DnsRecord.kt b/src/dorkbox/api/dns/DnsRecord.kt index 6fa54e6..7c70f85 100644 --- a/src/dorkbox/api/dns/DnsRecord.kt +++ b/src/dorkbox/api/dns/DnsRecord.kt @@ -17,12 +17,20 @@ package dorkbox.api.dns import com.squareup.moshi.Json import dorkbox.api.core.ISO8601 +import dorkbox.api.zone.Zone import java.time.LocalDateTime /** * https://api.cloudflare.com/#dns-records-for-a-zone-properties */ open class DnsRecord { + /** + * Which zone this DNS record belongs to + */ + @Transient + lateinit var zone: Zone + + /** * DNS record identifier tag */ diff --git a/src/dorkbox/api/dns/UpdateDnsRecord.kt b/src/dorkbox/api/dns/UpdateDnsRecord.kt index daa7751..cece9fe 100644 --- a/src/dorkbox/api/dns/UpdateDnsRecord.kt +++ b/src/dorkbox/api/dns/UpdateDnsRecord.kt @@ -5,4 +5,4 @@ package dorkbox.api.dns * * This is the "same" object as creating a new record. This is a different type in order to prevent confusion and simplify naming conventions */ -class UpdateDnsRecord : CreateDnsRecord() +class UpdateDnsRecord(dnsRecord: DnsRecord) : CreateDnsRecord(dnsRecord)