func mapLocal(localSnap *snap.Info, snapst *snapstate.SnapState) map[string]interface{} { status := "installed" if snapst.Active && localSnap.Revision == snapst.Current { status = "active" } apps := make([]appJSON, 0, len(localSnap.Apps)) for _, app := range localSnap.Apps { apps = append(apps, appJSON{ Name: app.Name, }) } return map[string]interface{}{ "description": localSnap.Description(), "developer": localSnap.Developer, "icon": snapIcon(localSnap), "id": localSnap.SnapID, "install-date": snapDate(localSnap), "installed-size": localSnap.Size, "name": localSnap.Name(), "revision": localSnap.Revision, "status": status, "summary": localSnap.Summary(), "type": string(localSnap.Type), "version": localSnap.Version, "channel": localSnap.Channel, "confinement": localSnap.Confinement, "devmode": snapst.DevMode(), "trymode": snapst.TryMode(), "private": localSnap.Private, "apps": apps, "broken": localSnap.Broken, } }
func mapRemote(remoteSnap *snap.Info) map[string]interface{} { status := "available" if remoteSnap.MustBuy { status = "priced" } confinement := remoteSnap.Confinement if confinement == "" { confinement = snap.StrictConfinement } screenshots := make([]screenshotJSON, len(remoteSnap.Screenshots)) for i, screenshot := range remoteSnap.Screenshots { screenshots[i] = screenshotJSON{ URL: screenshot.URL, Width: screenshot.Width, Height: screenshot.Height, } } result := map[string]interface{}{ "description": remoteSnap.Description(), "developer": remoteSnap.Developer, "download-size": remoteSnap.Size, "icon": snapIcon(remoteSnap), "id": remoteSnap.SnapID, "name": remoteSnap.Name(), "revision": remoteSnap.Revision, "status": status, "summary": remoteSnap.Summary(), "type": string(remoteSnap.Type), "version": remoteSnap.Version, "channel": remoteSnap.Channel, "private": remoteSnap.Private, "confinement": confinement, } if len(screenshots) > 0 { result["screenshots"] = screenshots } if len(remoteSnap.Prices) > 0 { result["prices"] = remoteSnap.Prices } if len(remoteSnap.Channels) > 0 { result["channels"] = remoteSnap.Channels } return result }