Hamza
06/13/2018, 4:30 AMfun main(args: Array<String>) {
val mapper = ObjectMapper()
val json = Book::class.java.getResource("/books.json")
mapper.registerModule(KotlinModule())
val app = Javalin.create().apply {
port(7070)
enableStaticFiles("/public")
}
BookRepo.init()
app.get("/new") { new(it) }
<http://app.post|app.post>("/new-auto") { it.html("This has not been supported yet.") }
<http://app.post|app.post>("/new-book-manual") { manual(it) }
app.get("/books/:id") { book(it) }
app.get("/books") { it.renderVelocity("/velocity/book/Books.vm", mutableMapOf("books" to BookRepo.getAll())) }
app.get("/") { it.redirect("/books") }
//incomplete
app.get("/find") {
return@get
it.html(get(
"<https://api.isbndb.com/book/1484746430>", mapOf("X-API-Key" to args.component1()),
timeout = 120000.0).text)
}
app.event(EventType.SERVER_STARTED) { e ->
val bridge: BookBridge = mapper.reader().forType(BookBridge::class.java).readValue(json)
bridge.books.forEach(BookRepo::add)
}
app.event(EventType.SERVER_STOPPING) { e ->
val bridge = BookBridge(BookRepo.getAll())
mapper.writeValue(File(json.file), bridge)
}
app.start()
}