@@ -53,15 +53,23 @@ type RegistrationIndexPageItem struct {
5353// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#catalog-entry
5454type CatalogEntry struct {
5555 CatalogLeafURL string `json:"@id"`
56- PackageContentURL string `json:"packageContent"`
56+ Authors string `json:"authors"`
57+ Copyright string `json:"copyright"`
58+ DependencyGroups []* PackageDependencyGroup `json:"dependencyGroups"`
59+ Description string `json:"description"`
60+ IconURL string `json:"iconUrl"`
5761 ID string `json:"id"`
62+ IsPrerelease bool `json:"isPrerelease"`
63+ Language string `json:"language"`
64+ LicenseURL string `json:"licenseUrl"`
65+ PackageContentURL string `json:"packageContent"`
66+ ProjectURL string `json:"projectUrl"`
67+ RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
68+ Summary string `json:"summary"`
69+ Tags string `json:"tags"`
5870 Version string `json:"version"`
59- Description string `json:"description"`
6071 ReleaseNotes string `json:"releaseNotes"`
61- Authors string `json:"authors"`
62- RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
63- ProjectURL string `json:"projectURL"`
64- DependencyGroups []* PackageDependencyGroup `json:"dependencyGroups"`
72+ Published time.Time `json:"published"`
6573}
6674
6775// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#package-dependency-group
@@ -109,15 +117,24 @@ func createRegistrationIndexPageItem(l *linkBuilder, pd *packages_model.PackageD
109117 RegistrationLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
110118 PackageContentURL : l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
111119 CatalogEntry : & CatalogEntry {
112- CatalogLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
113- PackageContentURL : l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
114- ID : pd .Package .Name ,
115- Version : pd .Version .Version ,
116- Description : metadata .Description ,
117- ReleaseNotes : metadata .ReleaseNotes ,
118- Authors : metadata .Authors ,
119- ProjectURL : metadata .ProjectURL ,
120- DependencyGroups : createDependencyGroups (pd ),
120+ CatalogLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
121+ Authors : metadata .Authors ,
122+ Copyright : metadata .Copyright ,
123+ DependencyGroups : createDependencyGroups (pd ),
124+ Description : metadata .Description ,
125+ IconURL : metadata .IconURL ,
126+ ID : pd .Package .Name ,
127+ IsPrerelease : pd .Version .IsPrerelease (),
128+ Language : metadata .Language ,
129+ LicenseURL : metadata .LicenseURL ,
130+ PackageContentURL : l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
131+ ProjectURL : metadata .ProjectURL ,
132+ RequireLicenseAcceptance : metadata .RequireLicenseAcceptance ,
133+ Summary : metadata .Summary ,
134+ Tags : metadata .Tags ,
135+ Version : pd .Version .Version ,
136+ ReleaseNotes : metadata .ReleaseNotes ,
137+ Published : pd .Version .CreatedUnix .AsLocalTime (),
121138 },
122139 }
123140}
@@ -145,22 +162,42 @@ func createDependencyGroups(pd *packages_model.PackageDescriptor) []*PackageDepe
145162
146163// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-leaf
147164type RegistrationLeafResponse struct {
148- RegistrationLeafURL string `json:"@id"`
149- Type []string `json:"@type"`
150- Listed bool `json:"listed"`
151- PackageContentURL string `json:"packageContent"`
152- Published time.Time `json:"published"`
153- RegistrationIndexURL string `json:"registration"`
165+ RegistrationLeafURL string `json:"@id"`
166+ Type []string `json:"@type"`
167+ PackageContentURL string `json:"packageContent"`
168+ RegistrationIndexURL string `json:"registration"`
169+ CatalogEntry CatalogEntry `json:"catalogEntry"`
154170}
155171
156172func createRegistrationLeafResponse (l * linkBuilder , pd * packages_model.PackageDescriptor ) * RegistrationLeafResponse {
173+ registrationLeafURL := l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version )
174+ packageDownloadURL := l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version )
175+ metadata := pd .Metadata .(* nuget_module.Metadata )
157176 return & RegistrationLeafResponse {
158- Type : []string {"Package" , "http://schema.nuget.org/catalog#Permalink" },
159- Listed : true ,
160- Published : pd .Version .CreatedUnix .AsLocalTime (),
161- RegistrationLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
162- PackageContentURL : l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
177+ RegistrationLeafURL : registrationLeafURL ,
163178 RegistrationIndexURL : l .GetRegistrationIndexURL (pd .Package .Name ),
179+ PackageContentURL : packageDownloadURL ,
180+ Type : []string {"Package" , "http://schema.nuget.org/catalog#Permalink" },
181+ CatalogEntry : CatalogEntry {
182+ CatalogLeafURL : registrationLeafURL ,
183+ Authors : metadata .Authors ,
184+ Copyright : metadata .Copyright ,
185+ DependencyGroups : createDependencyGroups (pd ),
186+ Description : metadata .Description ,
187+ IconURL : metadata .IconURL ,
188+ ID : pd .Package .Name ,
189+ IsPrerelease : pd .Version .IsPrerelease (),
190+ Language : metadata .Language ,
191+ LicenseURL : metadata .LicenseURL ,
192+ PackageContentURL : packageDownloadURL ,
193+ ProjectURL : metadata .ProjectURL ,
194+ RequireLicenseAcceptance : metadata .RequireLicenseAcceptance ,
195+ Summary : metadata .Summary ,
196+ Tags : metadata .Tags ,
197+ Version : pd .Version .Version ,
198+ ReleaseNotes : metadata .ReleaseNotes ,
199+ Published : pd .Version .CreatedUnix .AsLocalTime (),
200+ },
164201 }
165202}
166203
@@ -188,13 +225,24 @@ type SearchResultResponse struct {
188225
189226// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
190227type SearchResult struct {
191- ID string `json:"id"`
192- Version string `json:"version"`
193- Versions []* SearchResultVersion `json:"versions"`
194- Description string `json:"description"`
195- Authors string `json:"authors"`
196- ProjectURL string `json:"projectURL"`
197- RegistrationIndexURL string `json:"registration"`
228+ Authors string `json:"authors"`
229+ Copyright string `json:"copyright"`
230+ DependencyGroups []* PackageDependencyGroup `json:"dependencyGroups"`
231+ Description string `json:"description"`
232+ IconURL string `json:"iconUrl"`
233+ ID string `json:"id"`
234+ IsPrerelease bool `json:"isPrerelease"`
235+ Language string `json:"language"`
236+ LicenseURL string `json:"licenseUrl"`
237+ ProjectURL string `json:"projectUrl"`
238+ RequireLicenseAcceptance bool `json:"requireLicenseAcceptance"`
239+ Summary string `json:"summary"`
240+ Tags string `json:"tags"`
241+ Title string `json:"title"`
242+ TotalDownloads int64 `json:"totalDownloads"`
243+ Version string `json:"version"`
244+ Versions []* SearchResultVersion `json:"versions"`
245+ RegistrationIndexURL string `json:"registration"`
198246}
199247
200248// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result
@@ -230,11 +278,12 @@ func createSearchResultResponse(l *linkBuilder, totalHits int64, pds []*packages
230278func createSearchResult (l * linkBuilder , pds []* packages_model.PackageDescriptor ) * SearchResult {
231279 latest := pds [0 ]
232280 versions := make ([]* SearchResultVersion , 0 , len (pds ))
281+ totalDownloads := int64 (0 )
233282 for _ , pd := range pds {
234283 if latest .SemVer .LessThan (pd .SemVer ) {
235284 latest = pd
236285 }
237-
286+ totalDownloads += pd . Version . DownloadCount
238287 versions = append (versions , & SearchResultVersion {
239288 RegistrationLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
240289 Version : pd .Version .Version ,
@@ -244,12 +293,23 @@ func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor)
244293 metadata := latest .Metadata .(* nuget_module.Metadata )
245294
246295 return & SearchResult {
247- ID : latest .Package .Name ,
248- Version : latest .Version .Version ,
249- Versions : versions ,
250- Description : metadata .Description ,
251- Authors : metadata .Authors ,
252- ProjectURL : metadata .ProjectURL ,
253- RegistrationIndexURL : l .GetRegistrationIndexURL (latest .Package .Name ),
296+ Authors : metadata .Authors ,
297+ Copyright : metadata .Copyright ,
298+ Description : metadata .Description ,
299+ DependencyGroups : createDependencyGroups (latest ),
300+ IconURL : metadata .IconURL ,
301+ ID : latest .Package .Name ,
302+ IsPrerelease : latest .Version .IsPrerelease (),
303+ Language : metadata .Language ,
304+ LicenseURL : metadata .LicenseURL ,
305+ ProjectURL : metadata .ProjectURL ,
306+ RequireLicenseAcceptance : metadata .RequireLicenseAcceptance ,
307+ Summary : metadata .Summary ,
308+ Tags : metadata .Tags ,
309+ Title : metadata .Title ,
310+ TotalDownloads : totalDownloads ,
311+ Version : latest .Version .Version ,
312+ Versions : versions ,
313+ RegistrationIndexURL : l .GetRegistrationIndexURL (latest .Package .Name ),
254314 }
255315}
0 commit comments