串接API

This commit is contained in:
Raymond Yang 2023-08-12 12:42:33 +08:00
parent aa742df280
commit 935af29314
15 changed files with 169 additions and 1 deletions

View File

@ -1,5 +1,5 @@
fun main(args: Array<String>) {
println("Hello World!")
println("Cloudflare DDNS 更新程式已啟動")
// Try adding program arguments via Run/Debug configuration.
// Learn more about running applications: https://www.jetbrains.com/help/idea/running-applications.html.

View 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>
}

View 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>?
)

View File

@ -0,0 +1,6 @@
package model
data class Message(
val code: Int,
val message: String
)

View 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
)

View File

@ -0,0 +1,6 @@
package model.verifyToken
data class VerifyTokenResult(
val id: String,
val status: String
)

View File

@ -0,0 +1,6 @@
package model.zones
data class Account(
val id: String,
val name: String
)

View 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
)

View 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?
)

View File

@ -0,0 +1,7 @@
package model.zones
data class Owner(
val id: String?,
val type: String,
val email: String?
)

View 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
)

View File

@ -0,0 +1,6 @@
package model.zones
data class Tenant(
val id: String?,
val name: String?
)

View File

@ -0,0 +1,5 @@
package model.zones
data class TenantUnit(
val id: String?
)

View 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
)

View 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
)