Cleanup, added transient id/zone ifnromation to dns records

This commit is contained in:
nathan 2019-06-24 00:03:49 +02:00
parent 6d7cd990b7
commit c970fc7888
5 changed files with 43 additions and 16 deletions

View File

@ -22,6 +22,8 @@ import dorkbox.api.core.*
import dorkbox.api.dns.CreateDnsRecord import dorkbox.api.dns.CreateDnsRecord
import dorkbox.api.dns.DeleteDnsRecord import dorkbox.api.dns.DeleteDnsRecord
import dorkbox.api.dns.DnsRecord import dorkbox.api.dns.DnsRecord
import dorkbox.api.dns.UpdateDnsRecord
import dorkbox.api.firewall.AccessRule
import dorkbox.api.user.BillingHistory import dorkbox.api.user.BillingHistory
import dorkbox.api.user.BillingProfile import dorkbox.api.user.BillingProfile
import dorkbox.api.user.User import dorkbox.api.user.User
@ -93,8 +95,8 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
} }
fun getUser(): User { fun getUserDetails(): User {
return wrap(cloudflare.getUser(xAuthEmail, xAuthKey)) return wrap(cloudflare.getUserDetails(xAuthEmail, xAuthKey))
} }
fun getUserBillingProfile(): BillingProfile { fun getUserBillingProfile(): BillingProfile {
@ -118,19 +120,29 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
} }
fun listDnsRecords(zone: Zone): List<DnsRecord> { fun listDnsRecords(zone: Zone): List<DnsRecord> {
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 { fun createDnsRecord(dnsRecord: CreateDnsRecord): DnsRecord {
return wrap(cloudflare.createDnsRecord(xAuthEmail, xAuthKey, zone.id, 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 { fun updateDnsRecord(updatedDnsRecord: UpdateDnsRecord): Any {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. return wrap(cloudflare.updateDnsRecord(xAuthEmail, xAuthKey, updatedDnsRecord.zone.id, updatedDnsRecord.id, updatedDnsRecord))
} }
fun deleteDnsRecord(zone: Zone, dnsRecord: DnsRecord): DeleteDnsRecord { fun deleteDnsRecord(dnsRecord: DnsRecord): DeleteDnsRecord {
return wrap(cloudflare.deleteDnsRecord(xAuthEmail, xAuthKey, zone.id, dnsRecord.id)) return wrap(cloudflare.deleteDnsRecord(xAuthEmail, xAuthKey, dnsRecord.zone.id, dnsRecord.id))
}
fun listAccessRules(): List<AccessRule> {
return wrap(cloudflare.listAccessRules(xAuthEmail, xAuthKey))
} }
} }

View File

@ -38,10 +38,10 @@ interface CloudflareActions {
*/ */
@Headers("Content-Type: application/json") @Headers("Content-Type: application/json")
@GET("user") @GET("user")
fun getUser( fun getUserDetails(
@Header("X-Auth-Email") email: String, @Header("X-Auth-Email") email: String,
@Header("X-Auth-Key") key: String @Header("X-Auth-Key") key: String
): Call<CfResponse<User>> ): Call<CfResponse<User>>
/** /**
* Gets the user's Billing Profile * Gets the user's Billing Profile
@ -147,7 +147,7 @@ interface CloudflareActions {
@Path("zone_identifier") zoneIdentifier: String, @Path("zone_identifier") zoneIdentifier: String,
@Path("identifier") identifier: String, @Path("identifier") identifier: String,
@Body data: UpdateDnsRecord @Body data: UpdateDnsRecord
): Call<CfResponse<DnsRecord>> ): Call<CfResponse<DnsRecord>>
/** /**
* Deletes a DNS record for the specified zone + dns record * Deletes a DNS record for the specified zone + dns record
@ -161,7 +161,7 @@ interface CloudflareActions {
@Header("X-Auth-Key") key: String, @Header("X-Auth-Key") key: String,
@Path("zone_identifier") zoneIdentifier: String, @Path("zone_identifier") zoneIdentifier: String,
@Path("identifier") identifier: String @Path("identifier") identifier: String
): Call<CfResponse<DeleteDnsRecord>> ): Call<CfResponse<DeleteDnsRecord>>
/** /**
* Lists the access rules for the firewall. * Lists the access rules for the firewall.
@ -173,6 +173,6 @@ interface CloudflareActions {
fun listAccessRules( fun listAccessRules(
@Header("X-Auth-Email") email: String, @Header("X-Auth-Email") email: String,
@Header("X-Auth-Key") key: String @Header("X-Auth-Key") key: String
): Call<CfResponse<List<AccessRule>>> ): Call<CfResponse<List<AccessRule>>>
} }

View File

@ -20,7 +20,14 @@ import com.squareup.moshi.Json
/** /**
* https://api.cloudflare.com/#dns-records-for-a-zone-create-dns-record * 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 * Record type
* A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF, CERT, DNSKEY, DS, NAPTR, SMIMEA, SSHFP, TLSA, URI * A, AAAA, CNAME, TXT, SRV, LOC, MX, NS, SPF, CERT, DNSKEY, DS, NAPTR, SMIMEA, SSHFP, TLSA, URI

View File

@ -17,12 +17,20 @@ package dorkbox.api.dns
import com.squareup.moshi.Json import com.squareup.moshi.Json
import dorkbox.api.core.ISO8601 import dorkbox.api.core.ISO8601
import dorkbox.api.zone.Zone
import java.time.LocalDateTime import java.time.LocalDateTime
/** /**
* https://api.cloudflare.com/#dns-records-for-a-zone-properties * https://api.cloudflare.com/#dns-records-for-a-zone-properties
*/ */
open class DnsRecord { open class DnsRecord {
/**
* Which zone this DNS record belongs to
*/
@Transient
lateinit var zone: Zone
/** /**
* DNS record identifier tag * DNS record identifier tag
*/ */

View File

@ -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 * 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)