github.com/david-imola/snapd@v0.0.0-20210611180407-2de8ddeece6d/store/search_v2.go (about) 1 // -*- Mode: Go; indent-tabs-mode: t -*- 2 3 /* 4 * Copyright (C) 2020 Canonical Ltd 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 3 as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 package store 21 22 import ( 23 "github.com/snapcore/snapd/snap" 24 ) 25 26 // storeSearchChannelSnap is the snap revision plus a channel name 27 type storeSearchChannelSnap struct { 28 storeSnap 29 Channel string `json:"channel"` 30 } 31 32 // storeSearchResult is the result of v2/find calls 33 type storeSearchResult struct { 34 Revision storeSearchChannelSnap `json:"revision"` 35 Snap storeSnap `json:"snap"` 36 Name string `json:"name"` 37 SnapID string `json:"snap-id"` 38 } 39 40 func infoFromStoreSearchResult(si *storeSearchResult) (*snap.Info, error) { 41 thisSnap := si.Snap 42 copyNonZeroFrom(&si.Revision.storeSnap, &thisSnap) 43 44 info, err := infoFromStoreSnap(&thisSnap) 45 if err != nil { 46 return nil, err 47 } 48 49 info.SnapID = si.SnapID 50 info.RealName = si.Name 51 info.Channel = si.Revision.Channel 52 return info, nil 53 }