@@ -176,6 +176,27 @@ type LibraryRelease struct {
176
176
Dependencies []* LibraryDependency `json:"dependencies,omitempty"`
177
177
}
178
178
179
+ func NewLibraryRelease (l * rpc.LibraryRelease ) * LibraryRelease {
180
+ if l == nil {
181
+ return nil
182
+ }
183
+ return & LibraryRelease {
184
+ Author : l .GetAuthor (),
185
+ Version : l .GetVersion (),
186
+ Maintainer : l .GetMaintainer (),
187
+ Sentence : l .GetSentence (),
188
+ Paragraph : l .GetParagraph (),
189
+ Website : l .GetWebsite (),
190
+ Category : l .GetCategory (),
191
+ Architectures : l .GetArchitectures (),
192
+ Types : l .GetTypes (),
193
+ Resources : NewDownloadResource (l .GetResources ()),
194
+ License : l .GetLicense (),
195
+ ProvidesIncludes : l .GetProvidesIncludes (),
196
+ Dependencies : NewLibraryDependencies (l .GetDependencies ()),
197
+ }
198
+ }
199
+
179
200
type DownloadResource struct {
180
201
Url string `json:"url,omitempty"`
181
202
ArchiveFilename string `json:"archive_filename,omitempty"`
@@ -231,21 +252,7 @@ func NewInstalledLibraryResult(l *rpc.InstalledLibrary) *InstalledLibrary {
231
252
CompatibleWith : libraryCompatibleWithMap ,
232
253
InDevelopment : l .GetLibrary ().GetInDevelopment (),
233
254
},
234
- Release : & LibraryRelease {
235
- Author : l .GetRelease ().GetAuthor (),
236
- Version : l .GetRelease ().GetVersion (),
237
- Maintainer : l .GetRelease ().GetMaintainer (),
238
- Sentence : l .GetRelease ().GetSentence (),
239
- Paragraph : l .GetRelease ().GetParagraph (),
240
- Website : l .GetRelease ().GetWebsite (),
241
- Category : l .GetRelease ().GetCategory (),
242
- Architectures : l .GetRelease ().GetArchitectures (),
243
- Types : l .GetRelease ().GetTypes (),
244
- Resources : NewDownloadResource (l .GetRelease ().GetResources ()),
245
- License : l .GetRelease ().GetLicense (),
246
- ProvidesIncludes : l .GetRelease ().GetProvidesIncludes (),
247
- Dependencies : NewLibraryDependencies (l .GetRelease ().GetDependencies ()),
248
- },
255
+ Release : NewLibraryRelease (l .GetRelease ()),
249
256
}
250
257
}
251
258
@@ -727,3 +734,52 @@ func NewLibraryDependencyStatus(l *rpc.LibraryDependencyStatus) *LibraryDependen
727
734
VersionInstalled : l .GetVersionInstalled (),
728
735
}
729
736
}
737
+
738
+ type LibrarySearchStatus string
739
+
740
+ type LibrarySearchResponse struct {
741
+ Libraries []* SearchedLibrary `json:"libraries,omitempty"`
742
+ Status LibrarySearchStatus `json:"status,omitempty"`
743
+ }
744
+
745
+ func NewLibrarySearchResponse (l * rpc.LibrarySearchResponse ) * LibrarySearchResponse {
746
+ if l == nil {
747
+ return nil
748
+ }
749
+
750
+ searchedLibraries := make ([]* SearchedLibrary , len (l .GetLibraries ()))
751
+ for i , v := range l .GetLibraries () {
752
+ searchedLibraries [i ] = NewSearchedLibrary (v )
753
+ }
754
+
755
+ return & LibrarySearchResponse {
756
+ Libraries : searchedLibraries ,
757
+ Status : LibrarySearchStatus (l .GetStatus ().Enum ().String ()),
758
+ }
759
+ }
760
+
761
+ type SearchedLibrary struct {
762
+ Name string `json:"name,omitempty"`
763
+ Releases orderedmap.Map [string , * LibraryRelease ] `json:"releases,omitempty"`
764
+ Latest * LibraryRelease `json:"latest,omitempty"`
765
+ AvailableVersions []string `json:"available_versions,omitempty"`
766
+ }
767
+
768
+ func NewSearchedLibrary (l * rpc.SearchedLibrary ) * SearchedLibrary {
769
+ if l == nil {
770
+ return nil
771
+ }
772
+ // TODO understand if we want semver keys
773
+ releasesMap := orderedmap .New [string , * LibraryRelease ]()
774
+ for k , v := range l .GetReleases () {
775
+ releasesMap .Set (k , NewLibraryRelease (v ))
776
+ }
777
+ releasesMap .SortStableKeys (cmp .Compare )
778
+
779
+ return & SearchedLibrary {
780
+ Name : l .GetName (),
781
+ Releases : releasesMap ,
782
+ Latest : NewLibraryRelease (l .GetLatest ()),
783
+ AvailableVersions : l .GetAvailableVersions (),
784
+ }
785
+ }
0 commit comments