From 88ff4493b0f4d739558bc2d7de0686ec78e0e50b Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Fri, 20 Feb 2015 11:12:16 +0300 Subject: [PATCH] Publish list API. #116 --- api/publish.go | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/api/publish.go b/api/publish.go index caa187bf..93e6978a 100644 --- a/api/publish.go +++ b/api/publish.go @@ -44,7 +44,37 @@ func parseEscapedPath(path string) string { // GET /publish func apiPublishList(c *gin.Context) { - c.JSON(400, gin.H{}) + localCollection := context.CollectionFactory().LocalRepoCollection() + localCollection.RLock() + defer localCollection.RUnlock() + + snapshotCollection := context.CollectionFactory().SnapshotCollection() + snapshotCollection.RLock() + defer snapshotCollection.RUnlock() + + collection := context.CollectionFactory().PublishedRepoCollection() + collection.RLock() + defer collection.RUnlock() + + result := make([]*deb.PublishedRepo, 0, collection.Len()) + + err := collection.ForEach(func(repo *deb.PublishedRepo) error { + err := collection.LoadComplete(repo, context.CollectionFactory()) + if err != nil { + return err + } + + result = append(result, repo) + + return nil + }) + + if err != nil { + c.Fail(500, err) + return + } + + c.JSON(200, result) } // POST /publish/:prefix/repos | /publish/:prefix/snapshots