ref: 62e0c1d69f4e7d1d4557870d82cf5fc18af85534
app/src/main/java/ml/adamsprogs/bimba/api/Responses.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
package ml.adamsprogs.bimba.api import xyz.apiote.fruchtfleisch.Reader import java.io.InputStream interface ItemsResponse { companion object { fun unmarshall(stream: InputStream): ItemsResponse { val reader = Reader(stream) when (reader.readUInt()) { 0UL -> { TODO("error response") } 1UL -> { return ItemsSuccess.unmarshall(stream) } else -> { TODO("throw unknown tag") } } } } } data class ItemsSuccess(val items: List<Item>) : ItemsResponse { companion object { fun unmarshall(stream: InputStream): ItemsSuccess { val items = mutableListOf<Item>() val reader = Reader(stream) val itemsNum = reader.readUInt() for (i in 0UL until itemsNum) { when (reader.readUInt()) { 0UL -> { items.add(Stop.unmarshall(stream)) } 1UL -> { items.add(Line.unmarshall(stream)) } else -> { TODO("throw unknown tag") } } } return ItemsSuccess(items) } } } data class Error(val message: String) : ItemsResponse, DeparturesResponse { } |