@@ -53,16 +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- 	IconURL                   string                     `json:"iconUrl"` 
65- 	DependencyGroups          []* PackageDependencyGroup  `json:"dependencyGroups"` 
72+ 	Published                 time.Time                  `json:"published"` 
6673}
6774
6875// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#package-dependency-group 
@@ -111,16 +118,23 @@ func createRegistrationIndexPageItem(l *linkBuilder, pd *packages_model.PackageD
111118		PackageContentURL :   l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
112119		CatalogEntry : & CatalogEntry {
113120			CatalogLeafURL :           l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
114- 			PackageContentURL :        l .GetPackageDownloadURL (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 ,
115126			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 ,
116135			Version :                  pd .Version .Version ,
117- 			Description :              metadata .Description ,
118136			ReleaseNotes :             metadata .ReleaseNotes ,
119- 			Authors :                  metadata .Authors ,
120- 			RequireLicenseAcceptance : metadata .RequireLicenseAcceptance ,
121- 			ProjectURL :               metadata .ProjectURL ,
122- 			IconURL :                  metadata .IconURL ,
123- 			DependencyGroups :         createDependencyGroups (pd ),
137+ 			Published :                pd .Version .CreatedUnix .AsLocalTime (),
124138		},
125139	}
126140}
@@ -148,22 +162,42 @@ func createDependencyGroups(pd *packages_model.PackageDescriptor) []*PackageDepe
148162
149163// https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-leaf 
150164type  RegistrationLeafResponse  struct  {
151- 	RegistrationLeafURL   string     `json:"@id"` 
152- 	Type                  []string   `json:"@type"` 
153- 	Listed                bool       `json:"listed"` 
154- 	PackageContentURL     string     `json:"packageContent"` 
155- 	Published             time.Time  `json:"published"` 
156- 	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"` 
157170}
158171
159172func  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 )
160176	return  & RegistrationLeafResponse {
161- 		Type :                 []string {"Package" , "http://schema.nuget.org/catalog#Permalink" },
162- 		Listed :               true ,
163- 		Published :            pd .Version .CreatedUnix .AsLocalTime (),
164- 		RegistrationLeafURL :  l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
165- 		PackageContentURL :    l .GetPackageDownloadURL (pd .Package .Name , pd .Version .Version ),
177+ 		RegistrationLeafURL :  registrationLeafURL ,
166178		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+ 		},
167201	}
168202}
169203
@@ -191,22 +225,24 @@ type SearchResultResponse struct {
191225
192226// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result 
193227type  SearchResult  struct  {
194- 	Authors                   string                  `json:"authors"` 
195- 	Copyright                 string                  `json:"copyright"` 
196- 	Description               string                  `json:"description"` 
197- 	IconURL                   string                  `json:"iconUrl"` 
198- 	ID                        string                  `json:"id"` 
199- 	IsPrerelease              bool                    `json:"isPrerelease"` 
200- 	Language                  string                  `json:"language"` 
201- 	LicenseURL                string                  `json:"licenseUrl"` 
202- 	ProjectURL                string                  `json:"projectUrl"` 
203- 	RequireLicenseAcceptance  bool                    `json:"requireLicenseAcceptance"` 
204- 	Summary                   string                  `json:"summary"` 
205- 	Tags                      string                  `json:"tags"` 
206- 	Title                     string                  `json:"title"` 
207- 	Version                   string                  `json:"version"` 
208- 	Versions                  []* SearchResultVersion  `json:"versions"` 
209- 	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"` 
210246}
211247
212248// https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-result 
@@ -242,11 +278,12 @@ func createSearchResultResponse(l *linkBuilder, totalHits int64, pds []*packages
242278func  createSearchResult (l  * linkBuilder , pds  []* packages_model.PackageDescriptor ) * SearchResult  {
243279	latest  :=  pds [0 ]
244280	versions  :=  make ([]* SearchResultVersion , 0 , len (pds ))
281+ 	totalDownloads  :=  int64 (0 )
245282	for  _ , pd  :=  range  pds  {
246283		if  latest .SemVer .LessThan (pd .SemVer ) {
247284			latest  =  pd 
248285		}
249- 
286+ 		 totalDownloads   +=   pd . Version . DownloadCount 
250287		versions  =  append (versions , & SearchResultVersion {
251288			RegistrationLeafURL : l .GetRegistrationLeafURL (pd .Package .Name , pd .Version .Version ),
252289			Version :             pd .Version .Version ,
@@ -259,6 +296,7 @@ func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor)
259296		Authors :                  metadata .Authors ,
260297		Copyright :                metadata .Copyright ,
261298		Description :              metadata .Description ,
299+ 		DependencyGroups :         createDependencyGroups (latest ),
262300		IconURL :                  metadata .IconURL ,
263301		ID :                       latest .Package .Name ,
264302		IsPrerelease :             latest .Version .IsPrerelease (),
@@ -269,6 +307,7 @@ func createSearchResult(l *linkBuilder, pds []*packages_model.PackageDescriptor)
269307		Summary :                  metadata .Summary ,
270308		Tags :                     metadata .Tags ,
271309		Title :                    metadata .Title ,
310+ 		TotalDownloads :           totalDownloads ,
272311		Version :                  latest .Version .Version ,
273312		Versions :                 versions ,
274313		RegistrationIndexURL :     l .GetRegistrationIndexURL (latest .Package .Name ),
0 commit comments