https://github.com/dzikoysk/ksb
Kotlin Scripting Bundle - my personal all-in-one set of tools for rapid prototyping & scripting
https://github.com/dzikoysk/ksb
kotlin script sdk
Last synced: about 2 months ago
JSON representation
Kotlin Scripting Bundle - my personal all-in-one set of tools for rapid prototyping & scripting
- Host: GitHub
- URL: https://github.com/dzikoysk/ksb
- Owner: dzikoysk
- License: apache-2.0
- Created: 2024-10-09T18:24:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-09T20:18:28.000Z (over 1 year ago)
- Last Synced: 2025-03-19T15:15:26.932Z (over 1 year ago)
- Topics: kotlin, script, sdk
- Language: Kotlin
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# KSB [](https://maven.reposilite.com/#/snapshots/com/dzikoysk/ksb)
**ksb** _(Kotlin Scripting Bundle)_ - all-in-one set of tools for rapid prototyping & scripting. Use `ksb` object as an entry point to the whole API.
You don't need to remember nor import anything from the library, just discover all you need via the intellisense.
```kotlin
repository {
maven("https://maven.reposilite.com/snapshots")
}
dependencies {
implementation("com.dzikoysk:ksb:0.0.8-SNAPSHOT")
}
```
## Docs
Bundled APIs:
* General: Jackson (for Kotlin), BCrypt, Logback
* HTTP: Client - Unirest, Server - Javalin
* Database: JDBI (PostgreSQL / SQLite / MySQL)
* AWS: SDKv1 & SDKv2
### Serialization
* JSON
```kotlin
data class Monke(
val name: String
)
val json: String = Monke("Młynarz").toJson() // available for any object
val deserializedObject: Monke = json.convertTo()
```
* CSV _(todo)_
### HTTP
Serving the API:
```kotlin
val (server, address) = ksb.http.server.start {
get("/api/read") { it.result("Monke") }
post("/api/write") { println(it.body()) }
}
```
Interacting with the API:
```kotlin
val (_, statusCode, headers) = ksb.http.head("https://github.com/dzikoysk/ksb")
val (body, statusCode, headers) = ksb.http.get("https://github.com/dzikoysk/ksb")
val (body, statusCode, headers) = ksb.http.delete("https://github.com/dzikoysk/ksb")
val (body, statusCode, headers) = ksb.http.post("https://github.com/dzikoysk/ksb", Monke("Młynarz").toJson())
val (body, statusCode, headers) = ksb.http.update("https://github.com/dzikoysk/ksb", Monke("Młynarz").toJson())
val (body, statusCode, headers) = ksb.http.patch(
url = "https://github.com/dzikoysk/ksb",
value = Monke("Młynarz").toJson(),
headers = mapOf("X-API-KEY" to "123")
)
val monke = body.readText() / body.readAsObject()
```
GraphQL
```kotlin
data class MonkeData(val monke: Monke) {
data class Monke(val name: String)
}
val response = ksb.http.gql.query("$url/graphql", mapOf("x-api-key" to "secret")) {
"query Monke { name }"
}
val monke: Monke = response.get().data.monke
```
### File System
```kotlin
ksb.fs.override("monke.txt") { "Monke" }
val content = ksb.fs.read("monke.txt")
```
### CSV
* Using rows
```kotlin
val elements = listOf(1, 2, 3)
val csv = ksb.csv.rows(elements) {
cell { "input" to it }
cell { "double" to it * 2 }
cell { "triple" to it * 3 }
}
// input,double,triple
// 1,2,3
// 2,4,6
// 3,6,9
csv.toString()
// input,double,triple
// 3,6,9
// 2,4,6
// 1,2,3
csv.toString(sortedBy = listOf("triple" to DESC))
```
* Using columns
```kotlin
ksb.csv(
"input" to listOf(1, 2, 3),
"double" to listOf(2, 4, 6),
"triple" to listOf(3, 6, 9),
)
```
### SQL
* JDBI
### Cloud
* AWS S3 _(todo)_
* Google Drive _(todo)_
### Data types
* `Quad`