3
0

upd(all): refactor

- moved rbac store and config to internal pkg,
- split auth authenticators to internal pkg,
- add rbac config object to internal/config,
- update package imports and references for auth,
- clean up main with pkg aliases
This commit is contained in:
Tit Petric 2018-09-13 12:03:44 +02:00
parent 91db6b37f7
commit 7bf78fb4e0
63 changed files with 236 additions and 251 deletions

View File

@ -3,14 +3,13 @@ package auth
import (
"github.com/pkg/errors"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
type (
appFlags struct {
http *config.HTTP
db *config.Database
jwt *config.JWT
}
)
@ -26,25 +25,10 @@ func (c *appFlags) Validate() error {
if err := c.db.Validate(); err != nil {
return err
}
if err := c.jwt.Validate(); err != nil {
return err
}
return nil
}
func Flags(prefix ...string) {
if flags != nil {
return
}
if len(prefix) == 0 {
panic("auth.Flags() needs prefix on first call")
}
flags = &appFlags{
jwt: new(config.JWT).Init(prefix...),
}
}
func FullFlags(prefix ...string) {
if flags != nil {
return
}
@ -54,6 +38,5 @@ func FullFlags(prefix ...string) {
flags = &appFlags{
new(config.HTTP).Init(prefix...),
new(config.Database).Init(prefix...),
new(config.JWT).Init(prefix...),
}
}

View File

@ -1,20 +0,0 @@
package auth
import (
"net/http"
"github.com/766b/chi-prometheus"
"github.com/prometheus/client_golang/prometheus"
)
type metrics struct{}
// Middleware is the request logger that provides metrics to prometheus
func (metrics) Middleware(name string) func(http.Handler) http.Handler {
return chiprometheus.NewMiddleware(name)
}
// Handler exports prometheus metrics for /metrics requests
func (metrics) Handler() http.Handler {
return prometheus.Handler()
}

View File

@ -2,10 +2,13 @@ package rest
import (
"context"
"github.com/pkg/errors"
"github.com/crusttech/crust/auth/rest/request"
"github.com/crusttech/crust/auth/service"
"github.com/crusttech/crust/auth/types"
"github.com/pkg/errors"
"github.com/crusttech/crust/internal/auth"
)
var _ = errors.Wrap
@ -13,11 +16,11 @@ var _ = errors.Wrap
type (
Auth struct {
user service.UserService
token types.TokenEncoder
token auth.TokenEncoder
}
)
func (Auth) New(credValidator service.UserService, tknEncoder types.TokenEncoder) *Auth {
func (Auth) New(credValidator service.UserService, tknEncoder auth.TokenEncoder) *Auth {
return &Auth{
credValidator,
tknEncoder,

View File

@ -1,13 +1,14 @@
package rest
import (
"github.com/go-chi/chi"
"github.com/crusttech/crust/auth/rest/handlers"
"github.com/crusttech/crust/auth/service"
"github.com/crusttech/crust/auth/types"
"github.com/go-chi/chi"
"github.com/crusttech/crust/internal/auth"
)
func MountRoutes(jwtAuth types.TokenEncoder) func(chi.Router) {
func MountRoutes(jwtAuth auth.TokenEncoder) func(chi.Router) {
var userSvc = service.User()
// Initialize handers & controllers.

View File

@ -8,7 +8,8 @@ import (
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -16,7 +17,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
r.Use(middleware.Logger)
}
if opts.Metrics {
r.Use(metrics{}.Middleware("auth"))
r.Use(metrics.Middleware("auth"))
}
for _, mount := range mounts {
@ -26,7 +27,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
if opts.Metrics {
r.Handle("/metrics", metrics{}.Handler())
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
}

View File

@ -6,16 +6,15 @@ import (
"net"
"net/http"
"github.com/go-chi/chi"
"github.com/pkg/errors"
"github.com/SentimensRG/ctx/sigctx"
"github.com/crusttech/crust/auth/rest"
"github.com/go-chi/chi"
"github.com/go-chi/cors"
"github.com/pkg/errors"
"github.com/titpetric/factory"
"github.com/titpetric/factory/resputil"
"github.com/crusttech/crust/auth/rest"
"github.com/crusttech/crust/internal/auth"
)
func Init() error {
@ -51,7 +50,7 @@ func Init() error {
}
func Start() error {
var ctx = sigctx.New()
var deadline = sigctx.New()
log.Println("Starting http server on address " + flags.http.Addr)
listener, err := net.Listen("tcp", flags.http.Addr)
@ -60,7 +59,7 @@ func Start() error {
}
// JWT Auth
jwtAuth, err := JWT()
jwtAuth, err := auth.JWT()
if err != nil {
return errors.Wrap(err, "Error creating JWT Auth object")
}
@ -78,7 +77,7 @@ func Start() error {
mountSystemRoutes(r, flags.http)
go http.Serve(listener, r)
<-ctx.Done()
<-deadline.Done()
return nil
}

View File

@ -4,22 +4,24 @@ import (
"log"
"os"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/rbac"
service "github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/internal/rbac"
)
func main() {
config := flags("auth", rbac.Flags, auth.FullFlags)
config := flags("auth", service.Flags, auth.Flags, rbac.Flags)
// log to stdout not stderr
log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lshortfile)
go NewMonitor(config.monitorInterval)
if err := auth.Init(); err != nil {
if err := service.Init(); err != nil {
log.Fatalf("Error initializing auth: %+v", err)
}
if err := auth.Start(); err != nil {
if err := service.Start(); err != nil {
log.Fatalf("Error starting/running auth: %+v", err)
}
}

View File

@ -4,23 +4,24 @@ import (
"log"
"os"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/crm"
"github.com/crusttech/crust/rbac"
service "github.com/crusttech/crust/crm"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/internal/rbac"
)
func main() {
config := flags("crm", crm.Flags, rbac.Flags, auth.Flags)
config := flags("crm", service.Flags, auth.Flags, rbac.Flags)
// log to stdout not stderr
log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lshortfile)
go NewMonitor(config.monitorInterval)
if err := crm.Init(); err != nil {
if err := service.Init(); err != nil {
log.Fatalf("Error initializing crm: %+v", err)
}
if err := crm.Start(); err != nil {
if err := service.Start(); err != nil {
log.Fatalf("Error starting/running crm: %+v", err)
}
}

View File

@ -1,36 +1,27 @@
package main
import (
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/rbac"
"github.com/crusttech/crust/sam"
"log"
"os"
service "github.com/crusttech/crust/sam"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/internal/rbac"
)
func handleError(err error, message string) {
if message == "" {
message = "Error making API call"
}
if err != nil {
log.Fatalf(message+": %v", err.Error())
}
}
func main() {
config := flags("sam", sam.Flags, auth.Flags, rbac.Flags)
config := flags("sam", service.Flags, auth.Flags, rbac.Flags)
// log to stdout not stderr
log.SetOutput(os.Stdout)
log.SetFlags(log.LstdFlags | log.Lshortfile)
go NewMonitor(config.monitorInterval)
if err := sam.Init(); err != nil {
if err := service.Init(); err != nil {
log.Fatalf("Error initializing sam: %+v", err)
}
if err := sam.Start(); err != nil {
if err := service.Start(); err != nil {
log.Fatalf("Error starting/running sam: %+v", err)
}
}

View File

@ -3,7 +3,7 @@ package crm
import (
"github.com/pkg/errors"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
type (

View File

@ -1,14 +1,13 @@
package rest
import (
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/auth/types"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/crm/rest/handlers"
"github.com/crusttech/crust/crm/service"
"github.com/go-chi/chi"
)
func MountRoutes(jwtAuth types.TokenEncoder) func(chi.Router) {
func MountRoutes(jwtAuth auth.TokenEncoder) func(chi.Router) {
var (
fieldSvc = service.Field()
moduleSvc = service.Module()

View File

@ -8,7 +8,8 @@ import (
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -16,7 +17,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
r.Use(middleware.Logger)
}
if opts.Metrics {
r.Use(metrics{}.Middleware("crm"))
r.Use(metrics.Middleware("crm"))
}
for _, mount := range mounts {
@ -26,7 +27,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
if opts.Metrics {
r.Handle("/metrics", metrics{}.Handler())
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
}

View File

@ -6,17 +6,15 @@ import (
"net"
"net/http"
"github.com/go-chi/chi"
"github.com/pkg/errors"
"github.com/SentimensRG/ctx/sigctx"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/crm/rest"
"github.com/go-chi/chi"
"github.com/go-chi/cors"
"github.com/pkg/errors"
"github.com/titpetric/factory"
"github.com/titpetric/factory/resputil"
"github.com/crusttech/crust/crm/rest"
"github.com/crusttech/crust/internal/auth"
)
func Init() error {
@ -52,7 +50,7 @@ func Init() error {
}
func Start() error {
var ctx = sigctx.New()
var deadline = sigctx.New()
log.Println("Starting http server on address " + flags.http.Addr)
listener, err := net.Listen("tcp", flags.http.Addr)
@ -79,7 +77,7 @@ func Start() error {
mountSystemRoutes(r, flags.http)
go http.Serve(listener, r)
<-ctx.Done()
<-deadline.Done()
return nil
}

25
internal/auth/error.go Normal file
View File

@ -0,0 +1,25 @@
package auth
import (
"github.com/pkg/errors"
)
type (
authError string
)
const (
ErrConfigError = authError("ConfigError")
)
func (e authError) Error() string {
return e.String()
}
func (e authError) String() string {
return "crust.internal.auth." + string(e)
}
func (e authError) New() error {
return errors.WithStack(e)
}

38
internal/auth/flags.go Normal file
View File

@ -0,0 +1,38 @@
package auth
import (
"github.com/crusttech/crust/internal/config"
)
type (
localFlags struct {
jwt *config.JWT
}
)
var flags *localFlags
// Flags matches signature for main()
func Flags(prefix ...string) {
new(localFlags).Init(prefix...)
}
func (f *localFlags) Validate() error {
if flags == nil {
return ErrConfigError.New()
}
if err := f.jwt.Validate(); err != nil {
return err
}
return nil
}
func (f *localFlags) Init(prefix ...string) *localFlags {
if flags != nil {
return flags
}
flags = &localFlags{
new(config.JWT).Init(prefix...),
}
return flags
}

View File

@ -4,7 +4,6 @@ import (
"context"
"strconv"
"github.com/crusttech/crust/auth/types"
"github.com/go-chi/jwtauth"
"github.com/pkg/errors"
)
@ -36,12 +35,12 @@ func getIdentityClaimFromContext(ctx context.Context) (uint64, error) {
}
}
func SetIdentityToContext(ctx context.Context, identity types.Identifiable) context.Context {
func SetIdentityToContext(ctx context.Context, identity Identifiable) context.Context {
return context.WithValue(ctx, identityCtxKey, identity)
}
func GetIdentityFromContext(ctx context.Context) types.Identifiable {
if identity, ok := ctx.Value(identityCtxKey).(types.Identifiable); ok {
func GetIdentityFromContext(ctx context.Context) Identifiable {
if identity, ok := ctx.Value(identityCtxKey).(Identifiable); ok {
return identity
} else {
return NewIdentity(0)

View File

@ -1,4 +1,4 @@
package types
package auth
type (
Identifiable interface {

View File

@ -6,7 +6,6 @@ import (
"strconv"
"time"
"github.com/crusttech/crust/auth/types"
"github.com/go-chi/jwtauth"
"github.com/titpetric/factory/resputil"
)
@ -34,7 +33,7 @@ func (t *jwt) Verifier() func(http.Handler) http.Handler {
return jwtauth.Verifier(t.tokenAuth)
}
func (t *jwt) Encode(identity types.Identifiable) string {
func (t *jwt) Encode(identity Identifiable) string {
// @todo Set expiry
claims := jwtauth.Claims{}
claims.Set("sub", strconv.FormatUint(identity.Identity(), 10))

42
internal/config/rbac.go Normal file
View File

@ -0,0 +1,42 @@
package config
import (
"github.com/namsral/flag"
"github.com/pkg/errors"
)
type (
RBAC struct {
Auth string
Tenant string
BaseURL string
Timeout int
}
)
var rbac *RBAC
func (c *RBAC) Validate() error {
if c.Auth == "" {
return errors.New("No authentication provided for RBAC")
}
if c.Tenant == "" {
return errors.New("No tenant provided for RBAC")
}
if c.BaseURL == "" {
return errors.New("No Base URL provided for RBAC")
}
return nil
}
func (*RBAC) Init(prefix ...string) *RBAC {
if rbac != nil {
return rbac
}
rbac = new(RBAC)
flag.StringVar(&rbac.Auth, "rbac-auth", "username:password", "Credentials to use for RBAC queries")
flag.StringVar(&rbac.Tenant, "rbac-tenant", "", "Tenant ID")
flag.StringVar(&rbac.BaseURL, "rbac-base-url", "", "RBAC Base URL")
flag.IntVar(&rbac.Timeout, "rbac-timeout", 30, "RBAC request timeout (seconds)")
return rbac
}

View File

@ -19,6 +19,9 @@ func (c *Websocket) Validate() error {
}
func (*Websocket) Init(prefix ...string) *Websocket {
if websocket != nil {
return websocket
}
websocket = new(Websocket)
websocket.Timeout = 15 * time.Second
websocket.PingTimeout = 120 * time.Second

View File

@ -1,4 +1,4 @@
package crm
package metrics
import (
"net/http"
@ -7,14 +7,12 @@ import (
"github.com/prometheus/client_golang/prometheus"
)
type metrics struct{}
// Middleware is the request logger that provides metrics to prometheus
func (metrics) Middleware(name string) func(http.Handler) http.Handler {
func Middleware(name string) func(http.Handler) http.Handler {
return chiprometheus.NewMiddleware(name)
}
// Handler exports prometheus metrics for /metrics requests
func (metrics) Handler() http.Handler {
func Handler() http.Handler {
return prometheus.Handler()
}

View File

@ -11,6 +11,8 @@ import (
"net/http/httputil"
"strings"
"time"
"github.com/crusttech/crust/internal/config"
)
var _ = tls.Config{}
@ -21,7 +23,7 @@ type (
Client *http.Client
debugLevel string
config configuration
config *config.RBAC
}
ClientInterface interface {
@ -40,11 +42,11 @@ func (c *Client) Sessions() *Sessions { return &Sessions{c} }
var _ ClientInterface = &Client{}
func New() (*Client, error) {
if err := config.validate(); err != nil {
if err := flags.Validate(); err != nil {
return nil, err
}
timeout := time.Duration(config.timeout) * time.Second
timeout := time.Duration(flags.Timeout) * time.Second
transport := &http.Transport{
Dial: (&net.Dialer{
@ -64,7 +66,7 @@ func New() (*Client, error) {
return &Client{
Transport: transport,
Client: client,
config: config,
config: flags,
}, nil
}
@ -90,7 +92,7 @@ func (c *Client) Delete(url string) (*http.Response, error) {
}
func (c *Client) Request(method, url string, body interface{}) (*http.Response, error) {
link := strings.TrimRight(c.config.baseURL, "/") + "/" + strings.TrimLeft(url, "/")
link := strings.TrimRight(c.config.BaseURL, "/") + "/" + strings.TrimLeft(url, "/")
if c.debugLevel == "info" {
fmt.Println("RBAC >>>", method, link)
@ -113,9 +115,10 @@ func (c *Client) Request(method, url string, body interface{}) (*http.Response,
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(c.config.auth)))
// req.Header.Add("X-TENANT-ID", c.config.tenant)
req.Header["X-TENANT-ID"] = []string{c.config.tenant}
req.Header.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(c.config.Auth)))
// @todo: DAASI should fix this according to standards
// req.Header.Add("X-TENANT-ID", c.config.Tenant)
req.Header["X-TENANT-ID"] = []string{c.config.Tenant}
if c.debugLevel == "debug" {
fmt.Println("RBAC >>> (request)")

11
internal/rbac/flags.go Normal file
View File

@ -0,0 +1,11 @@
package rbac
import (
"github.com/crusttech/crust/internal/config"
)
var flags *config.RBAC
func Flags(prefix ...string) {
flags = new(config.RBAC).Init(prefix...)
}

View File

@ -1,7 +1,7 @@
package rbac_test
import (
"github.com/crusttech/crust/rbac"
"github.com/crusttech/crust/internal/rbac"
"github.com/namsral/flag"
"testing"
)

View File

@ -3,7 +3,7 @@ package rbac
import (
"encoding/json"
"fmt"
"github.com/crusttech/crust/rbac/types"
"github.com/crusttech/crust/internal/rbac/types"
"github.com/pkg/errors"
)

View File

@ -3,7 +3,7 @@ package rbac
import (
"encoding/json"
"fmt"
"github.com/crusttech/crust/rbac/types"
"github.com/crusttech/crust/internal/rbac/types"
"github.com/pkg/errors"
"strings"
)

View File

@ -3,7 +3,7 @@ package rbac
import (
"encoding/json"
"fmt"
"github.com/crusttech/crust/rbac/types"
"github.com/crusttech/crust/internal/rbac/types"
"github.com/pkg/errors"
)

View File

@ -3,7 +3,7 @@ package rbac
import (
"encoding/json"
"fmt"
"github.com/crusttech/crust/rbac/types"
"github.com/crusttech/crust/internal/rbac/types"
"github.com/pkg/errors"
)

View File

@ -1,38 +0,0 @@
package rbac
import (
"github.com/namsral/flag"
"github.com/pkg/errors"
)
type (
configuration struct {
auth string
tenant string
baseURL string
timeout int
}
)
var config configuration
func (c configuration) validate() error {
if c.auth == "" {
return errors.New("No authentication provided for RBAC")
}
if c.tenant == "" {
return errors.New("No tenant provided for RBAC")
}
if c.baseURL == "" {
return errors.New("No Base URL provided for RBAC")
}
return nil
}
// Flags should be called from main to register flags
func Flags(_ ...string) {
flag.StringVar(&config.auth, "rbac-auth", "username:password", "Credentials to use for RBAC queries")
flag.StringVar(&config.tenant, "rbac-tenant", "", "Tenant ID")
flag.StringVar(&config.baseURL, "rbac-base-url", "", "RBAC Base URL")
flag.IntVar(&config.timeout, "rbac-timeout", 30, "RBAC request timeout (seconds)")
}

View File

@ -1,37 +0,0 @@
package rbac
import (
"testing"
)
func TestFlags(t *testing.T) {
c := configuration{}
mustFail(t, c.validate())
c.auth = "a"
mustFail(t, c.validate())
c.tenant = "a"
mustFail(t, c.validate())
c.baseURL = "a"
must(t, c.validate())
}
/* imported below from main_test.go because of different package namespace */
func assert(t *testing.T, ok bool, format string, args ...interface{}) bool {
if !ok {
t.Fatalf(format, args...)
}
return ok
}
func must(t *testing.T, err error, message ...string) {
if len(message) > 0 {
assert(t, err == nil, message[0]+": %+v", err)
return
}
assert(t, err == nil, "Error: %+v", err)
}
func mustFail(t *testing.T, err error) {
assert(t, err != nil, "Expected error, got nil")
}

View File

@ -3,7 +3,7 @@ package sam
import (
"github.com/pkg/errors"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/sam/repository"
)

View File

@ -1,20 +0,0 @@
package sam
import (
"net/http"
"github.com/766b/chi-prometheus"
"github.com/prometheus/client_golang/prometheus"
)
type metrics struct{}
// Middleware is the request logger that provides metrics to prometheus
func (metrics) Middleware(name string) func(http.Handler) http.Handler {
return chiprometheus.NewMiddleware(name)
}
// Handler exports prometheus metrics for /metrics requests
func (metrics) Handler() http.Handler {
return prometheus.Handler()
}

View File

@ -1,7 +1,7 @@
package repository
import (
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
type (

View File

@ -6,7 +6,7 @@ import (
"github.com/pkg/errors"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
type PubSubMemory struct {

View File

@ -5,7 +5,7 @@ import (
"testing"
"time"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
func TestPubSubMemory(t *testing.T) {

View File

@ -6,7 +6,7 @@ import (
"github.com/gomodule/redigo/redis"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
)
type PubSubRedis struct {

View File

@ -2,7 +2,7 @@ package rest
import (
"context"
auth "github.com/crusttech/crust/auth/types"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"

View File

@ -1,16 +1,16 @@
package rest
import (
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/auth/types"
"github.com/crusttech/crust/sam/rest/handlers"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/store"
"github.com/go-chi/chi"
"log"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/internal/store"
"github.com/crusttech/crust/sam/rest/handlers"
"github.com/crusttech/crust/sam/service"
)
func MountRoutes(jwtAuth types.TokenEncoder) func(chi.Router) {
func MountRoutes(jwtAuth auth.TokenEncoder) func(chi.Router) {
// Initialize services
fs, err := store.New("var/store")
if err != nil {

View File

@ -2,10 +2,12 @@ package rest
import (
"context"
"github.com/pkg/errors"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
var _ = errors.Wrap

View File

@ -8,7 +8,8 @@ import (
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/crusttech/crust/config"
"github.com/crusttech/crust/internal/config"
"github.com/crusttech/crust/internal/metrics"
)
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
@ -18,7 +19,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
r.Use(middleware.Logger)
}
if opts.Metrics {
r.Use(metrics{}.Middleware("sam"))
r.Use(metrics.Middleware("sam"))
}
for _, mount := range mounts {
@ -28,7 +29,7 @@ func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router))
func mountSystemRoutes(r chi.Router, opts *config.HTTP) {
if opts.Metrics {
r.Handle("/metrics", metrics{}.Handler())
r.Handle("/metrics", metrics.Handler())
}
r.Mount("/debug", middleware.Profiler())
}

View File

@ -3,10 +3,10 @@ package service
import (
"context"
"fmt"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/repository"
"github.com/crusttech/crust/sam/types"
"github.com/crusttech/crust/store"
"github.com/crusttech/crust/internal/store"
"github.com/titpetric/factory"
"io"
"log"

View File

@ -3,7 +3,7 @@ package service
import (
"context"
"fmt"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/repository"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"

View File

@ -2,7 +2,7 @@ package service
import (
"context"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/repository"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"

View File

@ -6,19 +6,17 @@ import (
"net"
"net/http"
"github.com/go-chi/chi"
"github.com/pkg/errors"
"github.com/SentimensRG/ctx"
"github.com/SentimensRG/ctx/sigctx"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/sam/rest"
"github.com/crusttech/crust/sam/websocket"
"github.com/go-chi/chi"
"github.com/go-chi/cors"
"github.com/pkg/errors"
"github.com/titpetric/factory"
"github.com/titpetric/factory/resputil"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/rest"
"github.com/crusttech/crust/sam/websocket"
)
func Init() error {

View File

@ -2,7 +2,7 @@ package websocket
import (
"context"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/crusttech/crust/sam/websocket/incoming"

View File

@ -2,11 +2,13 @@ package websocket
import (
"context"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/crusttech/crust/sam/websocket/incoming"
"github.com/crusttech/crust/sam/websocket/outgoing"
fstore "github.com/crusttech/crust/store"
fstore "github.com/crusttech/crust/internal/store"
)
func messageService() service.MessageService {

View File

@ -9,7 +9,7 @@ import (
"github.com/pkg/errors"
"github.com/titpetric/factory/resputil"
"github.com/crusttech/crust/auth"
"github.com/crusttech/crust/internal/auth"
"github.com/crusttech/crust/sam/repository"
"github.com/crusttech/crust/sam/types"
)