Switched to UrlEncoder

This commit is contained in:
Erik C. Thauvin 2023-01-29 12:17:30 -08:00
parent e5d9ff7120
commit 31d389bd7d
2 changed files with 6 additions and 15 deletions

View file

@ -34,6 +34,7 @@ repositories {
dependencies { dependencies {
implementation(platform(kotlin("bom"))) implementation(platform(kotlin("bom")))
implementation("net.thauvin.erik:urlencoder:1.3.0")
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
testImplementation(kotlin("test-junit")) testImplementation(kotlin("test-junit"))

View file

@ -32,10 +32,9 @@
package net.thauvin.erik.isgd package net.thauvin.erik.isgd
import net.thauvin.erik.urlencoder.UrlEncoder
import java.net.HttpURLConnection import java.net.HttpURLConnection
import java.net.URL import java.net.URL
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
/** /**
* See the [is.gd API](https://is.gd/apishorteningreference.php). * See the [is.gd API](https://is.gd/apishorteningreference.php).
@ -44,12 +43,7 @@ enum class Format(val type: String) {
WEB("web"), SIMPLE("simple"), XML("xml"), JSON("json") WEB("web"), SIMPLE("simple"), XML("xml"), JSON("json")
} }
fun String.encode(): String { fun String.encode(): String = UrlEncoder.encode(this)
return URLEncoder.encode(this, StandardCharsets.UTF_8)
.replace("+", "%20")
.replace("*", "%2A")
.replace("%7E", "~")
}
/** /**
* Implements the [is.gd API](https://is.gd/developers.php). * Implements the [is.gd API](https://is.gd/developers.php).
@ -60,7 +54,7 @@ class Isgd private constructor() {
val connection = URL(url).openConnection() as HttpURLConnection val connection = URL(url).openConnection() as HttpURLConnection
connection.setRequestProperty( connection.setRequestProperty(
"User-Agent", "User-Agent",
"Mozilla/5.0 (Linux x86_64; rv:104.0) Gecko/20100101 Firefox/104.0" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/109.0"
) )
if (connection.responseCode in 200..399) { if (connection.responseCode in 200..399) {
return connection.inputStream.bufferedReader().readText() return connection.inputStream.bufferedReader().readText()
@ -85,9 +79,7 @@ class Isgd private constructor() {
format: Format = Format.SIMPLE, format: Format = Format.SIMPLE,
isVgd: Boolean = false isVgd: Boolean = false
): String { ): String {
if (shorturl.isEmpty()) { require(shorturl.isNotEmpty()) { "Please specify a valid short URL to lookup." }
throw IllegalArgumentException("Please specify a valid short URL to lookup.")
}
val sb = StringBuilder("https://${getHost(isVgd)}/forward.php?shorturl=${shorturl.encode()}") val sb = StringBuilder("https://${getHost(isVgd)}/forward.php?shorturl=${shorturl.encode()}")
@ -114,9 +106,7 @@ class Isgd private constructor() {
format: Format = Format.SIMPLE, format: Format = Format.SIMPLE,
isVgd: Boolean = false isVgd: Boolean = false
): String { ): String {
if (url.isEmpty()) { require(url.isNotEmpty()) { "Please enter a valid URL to shorten." }
throw IllegalArgumentException("Please enter a valid URL to shorten.")
}
val sb = StringBuilder("https://${getHost(isVgd)}/create.php?url=${url.encode()}") val sb = StringBuilder("https://${getHost(isVgd)}/create.php?url=${url.encode()}")