aboutsummaryrefslogtreecommitdiffstats
path: root/golang
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-05-09 20:26:39 -0700
committerBryan Newbold <bnewbold@robocracy.org>2018-05-09 20:26:39 -0700
commit9e6cfdf9668157ec7ff566c670ce293b18d2bc83 (patch)
tree52c00b694b5ea63705f7608aa02eaf7ba3ec51d4 /golang
parentc28602eba84c8c5ecfd267187ff103bb5e9d2091 (diff)
downloadfatcat-9e6cfdf9668157ec7ff566c670ce293b18d2bc83.tar.gz
fatcat-9e6cfdf9668157ec7ff566c670ce293b18d2bc83.zip
basic sentry; middleware; clacks-overhead
Diffstat (limited to 'golang')
-rw-r--r--golang/Gopkg.lock53
-rw-r--r--golang/cmd/fatcatd/main.go17
-rw-r--r--golang/restapi/configure_fatcat.go23
-rw-r--r--golang/restapi/doc.go1
-rw-r--r--golang/restapi/embedded_spec.go6
-rw-r--r--golang/restapi/server.go3
6 files changed, 88 insertions, 15 deletions
diff --git a/golang/Gopkg.lock b/golang/Gopkg.lock
index b35747f0..cf86e7aa 100644
--- a/golang/Gopkg.lock
+++ b/golang/Gopkg.lock
@@ -20,6 +20,27 @@
version = "v9"
[[projects]]
+ branch = "master"
+ name = "github.com/carbocation/interpose"
+ packages = [
+ ".",
+ "adaptors"
+ ]
+ revision = "723534742ba3bbda66268b735aaa41634468acc6"
+
+[[projects]]
+ name = "github.com/certifi/gocertifi"
+ packages = ["."]
+ revision = "deb3ae2ef2610fde3330947281941c562861188b"
+ version = "2018.01.18"
+
+[[projects]]
+ name = "github.com/codegangsta/inject"
+ packages = ["."]
+ revision = "37d7f8432a3e684eef9b2edece76bdfa6ac85b39"
+ version = "v1.0-rc1"
+
+[[projects]]
name = "github.com/docker/go-units"
packages = ["."]
revision = "47565b4f722fb6ceae66b95f853feed578a4a51c"
@@ -33,6 +54,18 @@
[[projects]]
branch = "master"
+ name = "github.com/getsentry/raven-go"
+ packages = ["."]
+ revision = "263040ce1a362270b5897a5982572ddc1fe807be"
+
+[[projects]]
+ name = "github.com/go-martini/martini"
+ packages = ["."]
+ revision = "49411a5b646861ad29a6ddd5351717a0a9c49b94"
+ version = "v1.0"
+
+[[projects]]
+ branch = "master"
name = "github.com/go-openapi/analysis"
packages = ["."]
revision = "863ac7f90e00e88e507095639a8457bbbf3c2ec9"
@@ -141,6 +174,12 @@
[[projects]]
branch = "master"
+ name = "github.com/meatballhat/negroni-logrus"
+ packages = ["."]
+ revision = "31067281800f66f57548a7a32d9c6c5f963fef83"
+
+[[projects]]
+ branch = "master"
name = "github.com/mitchellh/mapstructure"
packages = ["."]
revision = "00c29f56e2386353d58c599509e8dc3801b0d716"
@@ -152,6 +191,12 @@
version = "v1.1.0"
[[projects]]
+ name = "github.com/pkg/errors"
+ packages = ["."]
+ revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
+ version = "v0.8.0"
+
+[[projects]]
name = "github.com/sirupsen/logrus"
packages = ["."]
revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc"
@@ -197,6 +242,12 @@
version = "v1.2.15"
[[projects]]
+ name = "github.com/urfave/negroni"
+ packages = ["."]
+ revision = "5dbbc83f748fc3ad38585842b0aedab546d0ea1e"
+ version = "v0.3.0"
+
+[[projects]]
branch = "master"
name = "golang.org/x/crypto"
packages = ["ssh/terminal"]
@@ -260,6 +311,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
- inputs-digest = "807f92b935a836e9a4ad4bd98cfad104e6dda33965a78bde4cb6b822c4e6d135"
+ inputs-digest = "ca575bc9f4c9011b152d7815b930a1765b8e0da49ca551b346a1a2b4065516c4"
solver-name = "gps-cdcl"
solver-version = 1
diff --git a/golang/cmd/fatcatd/main.go b/golang/cmd/fatcatd/main.go
index e98e0f79..c0b9a2e5 100644
--- a/golang/cmd/fatcatd/main.go
+++ b/golang/cmd/fatcatd/main.go
@@ -8,6 +8,7 @@ import (
loads "github.com/go-openapi/loads"
flags "github.com/jessevdk/go-flags"
"github.com/spf13/viper"
+ "github.com/getsentry/raven-go"
"git.archive.org/bnewbold/fatcat/golang/restapi"
"git.archive.org/bnewbold/fatcat/golang/restapi/operations"
@@ -15,21 +16,25 @@ import (
func init() {
+ viper.SetDefault("port", 9411)
+ viper.SetDefault("verbose", true)
+
viper.SetEnvPrefix("FATCAT")
viper.AutomaticEnv()
- viper.SetDefault("Port", 9411)
- viper.SetDefault("Verbose", true)
+ viper.SetConfigType("toml")
viper.SetConfigName("fatcatd.toml")
viper.AddConfigPath(".")
- err := viper.ReadInConfig()
- if err != nil {
- log.Fatalf("Fatal error config file: %s \n", err)
- }
+ //err := viper.ReadInConfig()
+ //if err != nil {
+ // log.Fatalf("Error loading config: %s \n", err)
+ //}
// not default of stderr
log.SetOutput(os.Stdout);
+ raven.SetDSN(viper.GetString("sentry_dsn"));
+
}
func main() {
diff --git a/golang/restapi/configure_fatcat.go b/golang/restapi/configure_fatcat.go
index 418400fc..7398ad26 100644
--- a/golang/restapi/configure_fatcat.go
+++ b/golang/restapi/configure_fatcat.go
@@ -10,6 +10,10 @@ import (
runtime "github.com/go-openapi/runtime"
middleware "github.com/go-openapi/runtime/middleware"
graceful "github.com/tylerb/graceful"
+ "github.com/carbocation/interpose"
+ "github.com/carbocation/interpose/adaptors"
+ //"github.com/getsentry/raven-go"
+ "github.com/meatballhat/negroni-logrus"
"git.archive.org/bnewbold/fatcat/golang/restapi/operations"
)
@@ -67,5 +71,22 @@ func setupMiddlewares(handler http.Handler) http.Handler {
// The middleware configuration happens before anything, this middleware also applies to serving the swagger.json document.
// So this is a good place to plug in a panic handling middleware, logging and metrics
func setupGlobalMiddleware(handler http.Handler) http.Handler {
- return handler
+
+ middle := interpose.New()
+
+ // sentry and upstream
+ //middle.UseHandler(sentry.Recovery(raven.DefaultClient, false))
+
+ // logging
+ negroniMiddleware := negronilogrus.NewMiddleware()
+ middle.Use(adaptors.FromNegroni(negroniMiddleware))
+
+ // add clacks
+ middle.UseHandler(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
+ rw.Header().Set("X-Clacks-Overhead:", "GNU Aaron Swartz, John Perry Barlow")
+ }))
+
+ middle.UseHandler(handler)
+
+ return middle
}
diff --git a/golang/restapi/doc.go b/golang/restapi/doc.go
index 9896c2da..e18461a8 100644
--- a/golang/restapi/doc.go
+++ b/golang/restapi/doc.go
@@ -7,7 +7,6 @@ A scalable, versioned, API-oriented catalog of bibliographic entities and file m
Schemes:
http
- https
Host: api.fatcat.wiki
BasePath: /v0
Version: 0.1.0
diff --git a/golang/restapi/embedded_spec.go b/golang/restapi/embedded_spec.go
index 1b193eb9..6a6cf356 100644
--- a/golang/restapi/embedded_spec.go
+++ b/golang/restapi/embedded_spec.go
@@ -25,8 +25,7 @@ func init() {
"application/json"
],
"schemes": [
- "http",
- "https"
+ "http"
],
"swagger": "2.0",
"info": {
@@ -140,8 +139,7 @@ func init() {
"application/json"
],
"schemes": [
- "http",
- "https"
+ "http"
],
"swagger": "2.0",
"info": {
diff --git a/golang/restapi/server.go b/golang/restapi/server.go
index a11c94c6..6fb4f3b9 100644
--- a/golang/restapi/server.go
+++ b/golang/restapi/server.go
@@ -15,11 +15,11 @@ import (
"sync/atomic"
"time"
- log "github.com/sirupsen/logrus"
"github.com/go-openapi/runtime/flagext"
"github.com/go-openapi/swag"
flags "github.com/jessevdk/go-flags"
graceful "github.com/tylerb/graceful"
+ log "github.com/sirupsen/logrus" // manual hack for now (bnewbold)
"git.archive.org/bnewbold/fatcat/golang/restapi/operations"
)
@@ -35,7 +35,6 @@ var defaultSchemes []string
func init() {
defaultSchemes = []string{
schemeHTTP,
- schemeHTTPS,
}
}