Added Conscrypt as SSL library, Fixed issues with kapt for build+test. Fixed unit test (wrapped in try block)
This commit is contained in:
parent
3c9f36911e
commit
b9a2910a49
@ -11,20 +11,21 @@ plugins {
|
|||||||
// publish on sonatype
|
// publish on sonatype
|
||||||
id("de.marcphilipp.nexus-publish") version "0.4.0"
|
id("de.marcphilipp.nexus-publish") version "0.4.0"
|
||||||
// close and release on sonatype
|
// close and release on sonatype
|
||||||
id("io.codearte.nexus-staging") version "0.21.1"
|
id("io.codearte.nexus-staging") version "0.21.2"
|
||||||
|
|
||||||
id("com.dorkbox.Licensing") version "1.4.2"
|
id("com.dorkbox.Licensing") version "1.4.2"
|
||||||
id("com.dorkbox.VersionUpdate") version "1.6.1"
|
id("com.dorkbox.VersionUpdate") version "1.6.1"
|
||||||
id("com.dorkbox.GradleUtils") version "1.2.8"
|
id("com.dorkbox.GradleUtils") version "1.2.8"
|
||||||
|
|
||||||
kotlin("jvm") version "1.3.61"
|
kotlin("jvm") version "1.3.61"
|
||||||
|
kotlin("kapt") version "1.3.61"
|
||||||
}
|
}
|
||||||
|
|
||||||
object Extras {
|
object Extras {
|
||||||
// set for the project
|
// set for the project
|
||||||
const val description = "Cloudflare API v4 for Kotlin"
|
const val description = "Cloudflare API v4 for Kotlin"
|
||||||
const val group = "com.dorkbox"
|
const val group = "com.dorkbox"
|
||||||
const val version = "1.0"
|
const val version = "1.1"
|
||||||
|
|
||||||
// set as project.ext
|
// set as project.ext
|
||||||
const val name = "KloudflareAPI"
|
const val name = "KloudflareAPI"
|
||||||
@ -146,11 +147,10 @@ dependencies {
|
|||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib")
|
implementation("org.jetbrains.kotlin:kotlin-stdlib")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-common")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
|
||||||
|
|
||||||
val moshiVer = "1.9.2"
|
val moshiVer = "1.9.2"
|
||||||
val okHttpVer = "4.2.2"
|
val okHttpVer = "4.3.0"
|
||||||
val retroVer = "2.7.0"
|
val retroVer = "2.7.1"
|
||||||
|
|
||||||
implementation("com.squareup.okhttp3:okhttp:$okHttpVer")
|
implementation("com.squareup.okhttp3:okhttp:$okHttpVer")
|
||||||
implementation("com.squareup.okhttp3:logging-interceptor:$okHttpVer") // Log Network Calls
|
implementation("com.squareup.okhttp3:logging-interceptor:$okHttpVer") // Log Network Calls
|
||||||
@ -161,8 +161,13 @@ dependencies {
|
|||||||
// For serialization. THESE ARE NOT TRANSITIVE because it screws up the kotlin version
|
// For serialization. THESE ARE NOT TRANSITIVE because it screws up the kotlin version
|
||||||
implementation("com.squareup.retrofit2:retrofit:$retroVer")
|
implementation("com.squareup.retrofit2:retrofit:$retroVer")
|
||||||
implementation("com.squareup.retrofit2:converter-moshi:$retroVer")
|
implementation("com.squareup.retrofit2:converter-moshi:$retroVer")
|
||||||
|
|
||||||
implementation ("com.squareup.moshi:moshi:$moshiVer")
|
implementation ("com.squareup.moshi:moshi:$moshiVer")
|
||||||
implementation ("com.squareup.moshi:moshi-kotlin:$moshiVer")
|
implementation ("com.squareup.moshi:moshi-kotlin:$moshiVer")
|
||||||
|
|
||||||
|
// for AUTOMATIC kotlin reflective serialization of json classes
|
||||||
|
kapt ("com.squareup.moshi:moshi-kotlin-codegen:$moshiVer")
|
||||||
|
kaptTest ("com.squareup.moshi:moshi-kotlin-codegen:$moshiVer")
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
package dorkbox.kloudflareApi
|
package dorkbox.kloudflareApi
|
||||||
|
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
|
import com.squareup.moshi.Types
|
||||||
|
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
|
||||||
import dorkbox.kloudflareApi.api.CloudflareActions
|
import dorkbox.kloudflareApi.api.CloudflareActions
|
||||||
import dorkbox.kloudflareApi.api.core.CfErrorResponse
|
import dorkbox.kloudflareApi.api.core.CfErrorResponse
|
||||||
import dorkbox.kloudflareApi.api.core.CfResponse
|
import dorkbox.kloudflareApi.api.core.CfResponse
|
||||||
@ -37,16 +39,31 @@ import okhttp3.OkHttpClient
|
|||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import okhttp3.logging.HttpLoggingInterceptor
|
import okhttp3.logging.HttpLoggingInterceptor
|
||||||
|
import org.conscrypt.Conscrypt
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
import retrofit2.Converter
|
import retrofit2.Converter
|
||||||
import retrofit2.Retrofit
|
import retrofit2.Retrofit
|
||||||
import retrofit2.converter.moshi.MoshiConverterFactory
|
import retrofit2.converter.moshi.MoshiConverterFactory
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
import java.security.Security
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.util.Collections.*
|
||||||
|
import kotlin.reflect.full.defaultType
|
||||||
|
|
||||||
|
|
||||||
class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
||||||
companion object {
|
companion object {
|
||||||
private const val API_BASE_URL = "https://api.cloudflare.com/client/v4/"
|
private const val API_BASE_URL = "https://api.cloudflare.com/client/v4/"
|
||||||
|
|
||||||
|
|
||||||
|
init {
|
||||||
|
try {
|
||||||
|
Security.insertProviderAt(Conscrypt.newProvider(), 1);
|
||||||
|
}
|
||||||
|
catch (e: Throwable) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val errorConverter: Converter<ResponseBody, CfErrorResponse>
|
private val errorConverter: Converter<ResponseBody, CfErrorResponse>
|
||||||
@ -55,11 +72,12 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
// JSON mapping to java classes
|
// JSON mapping to java classes
|
||||||
val interceptor = HttpLoggingInterceptor()
|
|
||||||
interceptor.level = HttpLoggingInterceptor.Level.BODY
|
// val interceptor = HttpLoggingInterceptor()
|
||||||
|
// interceptor.level = HttpLoggingInterceptor.Level.BODY
|
||||||
|
|
||||||
client = OkHttpClient.Builder()
|
client = OkHttpClient.Builder()
|
||||||
// .addInterceptor(interceptor) // this is the raw HTTP interceptor
|
// .addInterceptor(interceptor) // this is the raw HTTP interceptor
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
val moshi = Moshi.Builder()
|
val moshi = Moshi.Builder()
|
||||||
@ -67,8 +85,6 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
|||||||
.add(DnsRecordTypeAdapter())
|
.add(DnsRecordTypeAdapter())
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// val adapter = moshi.adapter<List<String>>(Types.newParameterizedType(List::class.java, String::class.java))
|
|
||||||
|
|
||||||
val retrofit = Retrofit.Builder()
|
val retrofit = Retrofit.Builder()
|
||||||
.baseUrl(API_BASE_URL)
|
.baseUrl(API_BASE_URL)
|
||||||
.addConverterFactory(MoshiConverterFactory.create(moshi))
|
.addConverterFactory(MoshiConverterFactory.create(moshi))
|
||||||
@ -76,7 +92,6 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
|||||||
.build()
|
.build()
|
||||||
|
|
||||||
errorConverter = retrofit.responseBodyConverter(CfErrorResponse::class.java, CfErrorResponse::class.annotations.toTypedArray())
|
errorConverter = retrofit.responseBodyConverter(CfErrorResponse::class.java, CfErrorResponse::class.annotations.toTypedArray())
|
||||||
|
|
||||||
cloudflare = retrofit.create(CloudflareActions::class.java)
|
cloudflare = retrofit.create(CloudflareActions::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +107,7 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
|||||||
return response.body?.string()!!
|
return response.body?.string()!!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Throws(IOException::class)
|
||||||
private fun <T> wrap(call: Call<CfResponse<T>>): T {
|
private fun <T> wrap(call: Call<CfResponse<T>>): T {
|
||||||
val response = call.execute()
|
val response = call.execute()
|
||||||
|
|
||||||
@ -101,7 +117,7 @@ class Kloudflare(private val xAuthEmail: String, private val xAuthKey: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val errorResponse = errorConverter.convert(response.errorBody()!!)
|
val errorResponse = errorConverter.convert(response.errorBody()!!)
|
||||||
throw IOException("HTTP call failed: " + errorResponse?.errors?.joinToString { error: Error -> "[${error.code} : ${error.message}]" })
|
throw IOException("Call failed: " + errorResponse?.errors?.joinToString { error: Error -> "[${error.code} : ${error.message}]" })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,37 +46,29 @@ object KloudflareTest {
|
|||||||
|
|
||||||
val kloudflare = Kloudflare(email, token)
|
val kloudflare = Kloudflare(email, token)
|
||||||
|
|
||||||
println(kloudflare.getUserDetails())
|
try {
|
||||||
println(kloudflare.getUserBillingProfile())
|
|
||||||
println(kloudflare.getUserBillingHistory())
|
println(kloudflare.getUserDetails())
|
||||||
|
// println(kloudflare.getUserBillingProfile())
|
||||||
|
// println(kloudflare.getUserBillingHistory())
|
||||||
|
|
||||||
|
|
||||||
val zones = kloudflare.listZones()
|
val zones = kloudflare.listZones()
|
||||||
|
zones.forEach {
|
||||||
|
println(it)
|
||||||
|
}
|
||||||
|
|
||||||
// println(kloudflare.getZoneRatePlans("123"))
|
// println(kloudflare.getZoneRatePlans("123"))
|
||||||
// println(kloudflare.getZoneRatePlans("123"))
|
// println(kloudflare.getZoneRatePlans("123"))
|
||||||
// println(kloudflare.getZoneSettings("123"))
|
// println(kloudflare.getZoneSettings("123"))
|
||||||
// println(kloudflare.listDnsRecords("123"))
|
// println(kloudflare.listDnsRecords("123"))
|
||||||
// println(kloudflare.listAccessRules())
|
println(kloudflare.listAccessRules())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// val history = cloudflare.getUserBillingHistory(email, token).execute()
|
}
|
||||||
// println("user: ${history.body()?.result}")
|
finally {
|
||||||
//
|
kloudflare.shutdown()
|
||||||
// val zones = cloudflare.listZones(email, token).execute().body()?.result
|
}
|
||||||
// println("user: ${zones.body()?.result}")
|
|
||||||
|
|
||||||
// val zoneRatePlans = cloudflare.getZoneRatePlans(email, token, "123").execute()
|
|
||||||
// println("user: ${zoneRatePlans.body()?.result}")
|
|
||||||
//
|
|
||||||
// val zoneSettings = cloudflare.getZoneSettings(email, token, "123").execute()
|
|
||||||
// println("user: ${zoneSettings.body()?.result}")
|
|
||||||
//
|
|
||||||
// val dnsRecords = cloudflare.listDnsRecords(email, token, "123").execute()
|
|
||||||
// println("user: ${dnsRecords.body()?.result}")
|
|
||||||
|
|
||||||
|
|
||||||
kloudflare.shutdown()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user