diff --git a/src/main/kotlin/org/disposableemail/DisposableEmail.kt b/src/main/kotlin/org/disposableemail/DisposableEmail.kt index e2c16cb..6eb4547 100644 --- a/src/main/kotlin/org/disposableemail/DisposableEmail.kt +++ b/src/main/kotlin/org/disposableemail/DisposableEmail.kt @@ -11,7 +11,6 @@ import java.io.BufferedReader import java.io.IOException import java.io.InputStream import java.io.InputStreamReader -import kotlin.reflect.KFunction1 class DisposableEmail private constructor() { private val maxDomains = 200_000 @@ -40,7 +39,7 @@ class DisposableEmail private constructor() { * Verify the given email address is a Disposable mail box. Also, check the given email actually exists * */ - fun isDisposableEmail(email: String, checkDns: Boolean = false, dnsResolver: DNS_RESOLVER_TYPE = DNS_RESOLVER_TYPE.CLOUD_FLARE): Boolean { + fun isDisposableEmail(email: String, checkDns: Boolean = true, dnsResolver: DNS_RESOLVER_TYPE = DNS_RESOLVER_TYPE.CLOUD_FLARE): Boolean { val domain = getInstance().extractDomain(email) if (getInstance().isDisposable(domain)) { return true @@ -64,7 +63,10 @@ class DisposableEmail private constructor() { getInstance().blackListedDomains.remove(domain) } - fun refreshDisposableDomains(performGc: Boolean = false) { + /** + * Download latest disposable email domain list from Github + */ + fun refreshDisposableDomains(performGc: Boolean = true) { getInstance().refreshDisposableDomains(performGc) } } @@ -72,7 +74,7 @@ class DisposableEmail private constructor() { /** * By providing email address, it returns whether the domain is a disposable domain * - * @param email - Email Address + * @param domain - domain of a Email Address */ fun isDisposable(domain: String): Boolean { if (whiteListedDomains.contains(domain)) { @@ -149,7 +151,6 @@ class DisposableEmail private constructor() { // Swap bloomFilter = tempBloomFilter - println("Data refresh completed..") } response.body?.close() if (performGc) diff --git a/src/main/kotlin/org/disposableemail/dnsoverhttps/DnsResolver.kt b/src/main/kotlin/org/disposableemail/dnsoverhttps/DnsResolver.kt index f6efd46..df94f8e 100644 --- a/src/main/kotlin/org/disposableemail/dnsoverhttps/DnsResolver.kt +++ b/src/main/kotlin/org/disposableemail/dnsoverhttps/DnsResolver.kt @@ -4,20 +4,25 @@ import com.google.gson.Gson import okhttp3.OkHttpClient import okhttp3.Request import org.disposableemail.Configurations +import java.io.IOException +import kotlin.jvm.Throws class DnsResolver { companion object { private val client = OkHttpClient() private val gson: Gson = Gson() + @Throws(IOException::class) fun verifyMxRecordPresent(domain: String, dnsResolver: DNS_RESOLVER_TYPE): Boolean { + val url = "${getResolverUrl(dnsResolver)}?type=MX&name=$domain" val request = Request.Builder() - .url(getResolverUrl(dnsResolver)) + .url(url) + .addHeader("Accept", "application/dns-json") .build(); - val response = client.newCall(request).execute() response.body?.let { - val resp = gson.fromJson(it.string(), DnsResponse::class.java) + val body = it.string() + val resp = gson.fromJson(body, DnsResponse::class.java) return !resp.Answer.isNullOrEmpty() } return false