Enpoint for fetching event log (#133)

* Enpoint for fetching event log

* sort listed module version

* review changes

* unify mongo env var name
This commit is contained in:
marpio
2018-05-14 23:02:23 +02:00
committed by Aaron Schlesinger
parent 656d4b2549
commit d78252d527
8 changed files with 57 additions and 4 deletions
+1
View File
@@ -17,6 +17,7 @@ before_script:
- export GO_ENV=test_postgres
- export MINIO_ACCESS_KEY=minio
- export MINIO_SECRET_KEY=minio123
- export ATHENS_MONGO_STORAGE_URL=mongodb://127.0.0.1:27017
- wget https://dl.minio.io/server/minio/release/linux-amd64/minio && chmod +x minio && nohup ./minio server . &
- go get -u -v github.com/gobuffalo/buffalo/buffalo
- go get -u -v golang.org/x/vgo
+6
View File
@@ -67,9 +67,15 @@ func App() *buffalo.App {
log.Fatalf("error creating storage (%s)", err)
return nil
}
eventlogReader, err := newEventlog()
if err != nil {
log.Fatalf("error creating eventlog (%s)", err)
return nil
}
app.GET("/", homeHandler)
app.GET("/feed/{syncpoint:.*}", feedHandler(storage))
app.GET("/eventlog/{sequence_id}", eventlogHandler(eventlogReader))
app.ServeFiles("/", assetsBox) // serve files from the public directory
}
+18
View File
@@ -0,0 +1,18 @@
package actions
import (
"fmt"
"github.com/gobuffalo/envy"
"github.com/gomods/athens/pkg/eventlog"
"github.com/gomods/athens/pkg/eventlog/mongo"
)
func newEventlog() (eventlog.Reader, error) {
mongoURI, err := envy.MustGet("ATHENS_MONGO_STORAGE_URL")
if err != nil {
return nil, fmt.Errorf("missing mongo URL (%s)", err)
}
l, err := mongo.NewLog(mongoURI)
return l, err
}
+26
View File
@@ -0,0 +1,26 @@
package actions
import (
"net/http"
"github.com/gobuffalo/buffalo"
"github.com/gomods/athens/pkg/eventlog"
)
func eventlogHandler(r eventlog.Reader) func(c buffalo.Context) error {
return func(c buffalo.Context) error {
seqID := c.Param("sequence_id")
var events []eventlog.Event
var err error
if seqID == "" {
events, err = r.Read()
} else {
events, err = r.ReadFrom(seqID)
}
if err != nil {
return err
}
return c.Render(http.StatusOK, renderEng.JSON(events))
}
}
+1 -1
View File
@@ -15,6 +15,6 @@ func feedHandler(s storage.Backend) func(c buffalo.Context) error {
feed := make(map[string][]string)
return c.Render(http.StatusOK, olympus.JSON(feed))
return c.Render(http.StatusOK, renderEng.JSON(feed))
}
}
+1 -1
View File
@@ -5,5 +5,5 @@ import (
)
func homeHandler(c buffalo.Context) error {
return c.Render(200, olympus.HTML("index.html"))
return c.Render(200, renderEng.HTML("index.html"))
}
+2 -2
View File
@@ -5,11 +5,11 @@ import (
"github.com/gobuffalo/packr"
)
var olympus *render.Engine
var renderEng *render.Engine
var assetsBox = packr.NewBox("../public")
func init() {
olympus = render.New(render.Options{
renderEng = render.New(render.Options{
// HTML layout to be used for all HTML requests:
HTMLLayout: "application.html",
JavaScriptLayout: "application.js",
+2
View File
@@ -1,6 +1,7 @@
package minio
import (
"sort"
"strings"
)
@@ -25,5 +26,6 @@ func (l *storageImpl) List(module string) ([]string, error) {
for ver := range dict {
ret = append(ret, ver)
}
sort.Strings(ret)
return ret, nil
}