feat: use go:embed to embed templates (#1756)
This commit is contained in:
61
tools/goctl/api/ktgen/apibase.tpl
Normal file
61
tools/goctl/api/ktgen/apibase.tpl
Normal file
@@ -0,0 +1,61 @@
|
||||
package {{.}}
|
||||
|
||||
import com.google.gson.Gson
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.BufferedReader
|
||||
import java.io.InputStreamReader
|
||||
import java.io.OutputStreamWriter
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
|
||||
const val SERVER = "http://localhost:8080"
|
||||
|
||||
suspend fun apiRequest(
|
||||
method: String,
|
||||
uri: String,
|
||||
body: Any = "",
|
||||
onOk: ((String) -> Unit)? = null,
|
||||
onFail: ((String) -> Unit)? = null,
|
||||
eventually: (() -> Unit)? = null
|
||||
) = withContext(Dispatchers.IO) {
|
||||
val url = URL(SERVER + uri)
|
||||
with(url.openConnection() as HttpURLConnection) {
|
||||
connectTimeout = 3000
|
||||
requestMethod = method
|
||||
doInput = true
|
||||
if (method == "POST" || method == "PUT" || method == "PATCH") {
|
||||
setRequestProperty("Content-Type", "application/json")
|
||||
doOutput = true
|
||||
val data = when (body) {
|
||||
is String -> {
|
||||
body
|
||||
}
|
||||
else -> {
|
||||
Gson().toJson(body)
|
||||
}
|
||||
}
|
||||
val wr = OutputStreamWriter(outputStream)
|
||||
wr.write(data)
|
||||
wr.flush()
|
||||
}
|
||||
|
||||
try {
|
||||
if (responseCode >= 400) {
|
||||
BufferedReader(InputStreamReader(errorStream)).use {
|
||||
val response = it.readText()
|
||||
onFail?.invoke(response)
|
||||
}
|
||||
return@with
|
||||
}
|
||||
//response
|
||||
BufferedReader(InputStreamReader(inputStream)).use {
|
||||
val response = it.readText()
|
||||
onOk?.invoke(response)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.message?.let { onFail?.invoke(it) }
|
||||
}
|
||||
}
|
||||
eventually?.invoke()
|
||||
}
|
||||
Reference in New Issue
Block a user