Skip to content
Snippets Groups Projects
Commit 5fc2a6ec authored by Clément Pit-Claudel's avatar Clément Pit-Claudel
Browse files

messages: Refactor ListAppsResponse.Wire

parent fe0dadbb
No related branches found
No related tags found
1 merge request!38Customizable homepage + automatic reconnection
......@@ -49,27 +49,24 @@ val SocketResponseWire = TryWire(IdentityWire)
/** A response to the list-apps query */
case class ListAppsResponse(apps: Seq[AppInfo])
object AppInfoWire extends WireFormat[AppInfo]:
def encode(t: AppInfo): ujson.Value = t match
case AppInfo(id, name, description, year) =>
Obj("id" -> id, "name" -> name, "description" -> description, "year" -> year)
def decode(js: ujson.Value): Try[AppInfo] = Try:
AppInfo(
id = js("id").str,
name = js("name").str,
description = js("description").str,
year = js("year").num.toInt
)
object ListAppsResponse:
object Wire extends WireFormat[ListAppsResponse]:
def encode(t: ListAppsResponse): ujson.Value =
ujson.Obj("apps" -> Arr(t.apps.map {
case AppInfo(id, name, description, year) =>
Obj("id" -> id, "name" -> name, "desc" -> description, "year" -> year)
}*))
Obj("apps" -> Arr(t.apps.map(AppInfoWire.encode)*))
def decode(js: ujson.Value): Try[ListAppsResponse] = Try:
ListAppsResponse(
js("apps").arr
.map(_.obj)
.map(js =>
AppInfo(
id = js("id").str,
name = js("name").str,
description = js("desc").str,
year = js("year").num.toInt
)
)
.to(Seq)
)
ListAppsResponse(apps = js("apps").arr.map(AppInfoWire.decode(_).get).to(Seq))
/** An HTTP request sent to create a new application instance for the server */
case class CreateInstanceRequest(appName: String, userIds: Seq[UserId])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment