串接API
This commit is contained in:
parent
aa742df280
commit
935af29314
@ -1,5 +1,5 @@
|
|||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
println("Hello World!")
|
println("Cloudflare DDNS 更新程式已啟動")
|
||||||
|
|
||||||
// Try adding program arguments via Run/Debug configuration.
|
// Try adding program arguments via Run/Debug configuration.
|
||||||
// Learn more about running applications: https://www.jetbrains.com/help/idea/running-applications.html.
|
// Learn more about running applications: https://www.jetbrains.com/help/idea/running-applications.html.
|
||||||
|
|||||||
35
src/main/kotlin/api/CloudflareApiService.kt
Normal file
35
src/main/kotlin/api/CloudflareApiService.kt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import model.CloudflareResult
|
||||||
|
import model.verifyToken.VerifyTokenResult
|
||||||
|
import model.zones.UpdateDnsBody
|
||||||
|
import model.zones.DnsResult
|
||||||
|
import model.zones.ZonesResult
|
||||||
|
import retrofit2.http.*
|
||||||
|
|
||||||
|
interface CloudflareApiService {
|
||||||
|
|
||||||
|
@GET("/client/v4/user/tokens/verify")
|
||||||
|
suspend fun getVerifyToken(
|
||||||
|
@Header("Authorization") token: String
|
||||||
|
): CloudflareResult<VerifyTokenResult>
|
||||||
|
|
||||||
|
@GET("/client/v4/zones")
|
||||||
|
suspend fun getZones(
|
||||||
|
@Header("Authorization") token: String
|
||||||
|
): CloudflareResult<ZonesResult>
|
||||||
|
|
||||||
|
@GET("/client/v4/zones/{ZONE_ID}/dns_records")
|
||||||
|
suspend fun getZoneDnsRecords(
|
||||||
|
@Header("Authorization") token: String,
|
||||||
|
@Path("ZONE_ID") zoneId: String
|
||||||
|
): CloudflareResult<List<DnsResult>>
|
||||||
|
|
||||||
|
@PUT("/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}")
|
||||||
|
suspend fun updateZoneDnsRecords(
|
||||||
|
@Header("Authorization") token: String,
|
||||||
|
@Path("ZONE_ID") zoneId: String,
|
||||||
|
@Path("RECORD_ID") recordId: String,
|
||||||
|
@Body body: UpdateDnsBody
|
||||||
|
): CloudflareResult<DnsResult>
|
||||||
|
}
|
||||||
9
src/main/kotlin/model/CloudflareResult.kt
Normal file
9
src/main/kotlin/model/CloudflareResult.kt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
data class CloudflareResult<T>(
|
||||||
|
val result: T,
|
||||||
|
val result_info: ResultInfo?,
|
||||||
|
val success: Boolean,
|
||||||
|
val errors: List<Message>?,
|
||||||
|
val messages: List<Message>?
|
||||||
|
)
|
||||||
6
src/main/kotlin/model/Message.kt
Normal file
6
src/main/kotlin/model/Message.kt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
data class Message(
|
||||||
|
val code: Int,
|
||||||
|
val message: String
|
||||||
|
)
|
||||||
9
src/main/kotlin/model/ResultInfo.kt
Normal file
9
src/main/kotlin/model/ResultInfo.kt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
data class ResultInfo(
|
||||||
|
val count: Int,
|
||||||
|
val page: Int,
|
||||||
|
val per_page: Int,
|
||||||
|
val total_count: Int,
|
||||||
|
val total_pages: Int
|
||||||
|
)
|
||||||
6
src/main/kotlin/model/verifyToken/VerifyTokenResult.kt
Normal file
6
src/main/kotlin/model/verifyToken/VerifyTokenResult.kt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package model.verifyToken
|
||||||
|
|
||||||
|
data class VerifyTokenResult(
|
||||||
|
val id: String,
|
||||||
|
val status: String
|
||||||
|
)
|
||||||
6
src/main/kotlin/model/zones/Account.kt
Normal file
6
src/main/kotlin/model/zones/Account.kt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class Account(
|
||||||
|
val id: String,
|
||||||
|
val name: String
|
||||||
|
)
|
||||||
19
src/main/kotlin/model/zones/DnsResult.kt
Normal file
19
src/main/kotlin/model/zones/DnsResult.kt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class DnsResult(
|
||||||
|
val id: String,
|
||||||
|
val zone_id: String,
|
||||||
|
val zone_name: String,
|
||||||
|
val name: String,
|
||||||
|
val type: String,
|
||||||
|
val content: String,
|
||||||
|
val proxiable: Boolean,
|
||||||
|
val proxied: Boolean,
|
||||||
|
val ttl: Int,
|
||||||
|
val locked: Boolean,
|
||||||
|
val meta: Meta,
|
||||||
|
val comment: String?,
|
||||||
|
val tags: List<String>?,
|
||||||
|
val created_on: String,
|
||||||
|
val modified_on: String
|
||||||
|
)
|
||||||
13
src/main/kotlin/model/zones/Meta.kt
Normal file
13
src/main/kotlin/model/zones/Meta.kt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class Meta(
|
||||||
|
val step: Int?,
|
||||||
|
val custom_certificate_quota: Int?,
|
||||||
|
val page_rule_quota: Int?,
|
||||||
|
val phishing_detected: Boolean?,
|
||||||
|
val multiple_railguns_allowed: Boolean?,
|
||||||
|
val auto_added: Boolean?,
|
||||||
|
val managed_by_apps: Boolean?,
|
||||||
|
val managed_by_argo_tunnel: Boolean?,
|
||||||
|
val source: String?
|
||||||
|
)
|
||||||
7
src/main/kotlin/model/zones/Owner.kt
Normal file
7
src/main/kotlin/model/zones/Owner.kt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class Owner(
|
||||||
|
val id: String?,
|
||||||
|
val type: String,
|
||||||
|
val email: String?
|
||||||
|
)
|
||||||
14
src/main/kotlin/model/zones/Plan.kt
Normal file
14
src/main/kotlin/model/zones/Plan.kt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class Plan(
|
||||||
|
val id: String,
|
||||||
|
val name: String,
|
||||||
|
val price: Int,
|
||||||
|
val currency: String,
|
||||||
|
val frequency: String,
|
||||||
|
val is_subscribed: Boolean,
|
||||||
|
val can_subscribe: Boolean,
|
||||||
|
val legacy_id: String,
|
||||||
|
val legacy_discount: Boolean,
|
||||||
|
val externally_managed: Boolean
|
||||||
|
)
|
||||||
6
src/main/kotlin/model/zones/Tenant.kt
Normal file
6
src/main/kotlin/model/zones/Tenant.kt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class Tenant(
|
||||||
|
val id: String?,
|
||||||
|
val name: String?
|
||||||
|
)
|
||||||
5
src/main/kotlin/model/zones/TenantUnit.kt
Normal file
5
src/main/kotlin/model/zones/TenantUnit.kt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class TenantUnit(
|
||||||
|
val id: String?
|
||||||
|
)
|
||||||
9
src/main/kotlin/model/zones/UpdateDnsBody.kt
Normal file
9
src/main/kotlin/model/zones/UpdateDnsBody.kt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class UpdateDnsBody(
|
||||||
|
val content: String,
|
||||||
|
val name: String,
|
||||||
|
val proxied: Boolean,
|
||||||
|
val ttl: Int,
|
||||||
|
val type: String
|
||||||
|
)
|
||||||
24
src/main/kotlin/model/zones/ZonesResult.kt
Normal file
24
src/main/kotlin/model/zones/ZonesResult.kt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package model.zones
|
||||||
|
|
||||||
|
data class ZonesResult(
|
||||||
|
val id: String,
|
||||||
|
val name: String,
|
||||||
|
val status: String,
|
||||||
|
val paused: Boolean,
|
||||||
|
val type: String,
|
||||||
|
val development_mode: Int,
|
||||||
|
val name_servers: List<String>,
|
||||||
|
val original_name_servers: List<String>,
|
||||||
|
val original_registrar: String,
|
||||||
|
val original_dnshost: String?,
|
||||||
|
val modified_on: String,
|
||||||
|
val created_on: String,
|
||||||
|
val activated_on: String,
|
||||||
|
val meta: Meta,
|
||||||
|
val owner: Owner,
|
||||||
|
val account: Account,
|
||||||
|
val tenant: Tenant,
|
||||||
|
val tenant_unit: TenantUnit,
|
||||||
|
val permissions: List<String>,
|
||||||
|
val plan: Plan
|
||||||
|
)
|
||||||
Loading…
Reference in New Issue
Block a user