Skip to content

Commit

Permalink
pass tenant in context
Browse files Browse the repository at this point in the history
  • Loading branch information
gernest committed Feb 20, 2024
1 parent 084ca1b commit 374c135
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 10 deletions.
6 changes: 3 additions & 3 deletions internal/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func New(ctx context.Context, o *v1.Config, tenants *tenant.Tenants) (*API, erro
}
base := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.HasPrefix(r.URL.Path, "/api/v1/") {
r.WithContext(tenants.Load(ctx, r.URL.Query()))
r = r.WithContext(tenants.Load(r.Context(), r.URL.Query()))
}
w.Header().Add(vary, acceptEncoding)
code := &statsWriter{ResponseWriter: w, compress: acceptsGzip(r)}
Expand Down Expand Up @@ -110,7 +110,7 @@ func New(ctx context.Context, o *v1.Config, tenants *tenant.Tenants) (*API, erro
SendEvent(w, r)
return
case "/api/event":
ReceiveEvent(w, r)
ReceiveEvent(tenants, w, r)
return
}
case http.MethodHead:
Expand Down Expand Up @@ -191,6 +191,6 @@ func SendEvent(w http.ResponseWriter, r *http.Request) {
request.Write(ctx, w, &v1.SendEventResponse{Dropped: true})
return
}
session.Get(ctx).Queue(ctx, tenant.Default, &req)
session.Get(ctx).Queue(ctx, tenant.Get(ctx), &req)
request.Write(ctx, w, &v1.SendEventResponse{Dropped: false})
}
8 changes: 5 additions & 3 deletions internal/api/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/vinceanalytics/vince/internal/tenant"
)

func ReceiveEvent(w http.ResponseWriter, r *http.Request) {
func ReceiveEvent(tenants *tenant.Tenants, w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", r.Header.Get("Origin"))
w.Header().Set("Access-Control-Allow-Methods", http.MethodPost)
w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
Expand All @@ -24,14 +24,16 @@ func ReceiveEvent(w http.ResponseWriter, r *http.Request) {
if ev == nil {
return
}
if !xg.Accept(ev.D) {
owner := tenants.Get(ev.D)
if owner == nil || !xg.Accept(ev.D) {
w.Header().Set("x-vince-dropped", "1")
w.WriteHeader(http.StatusOK)
return
}

ev.Ip = remoteIP(r)
ev.Ua = r.UserAgent()
session.Get(ctx).Queue(ctx, tenant.Default, ev)
session.Get(ctx).Queue(ctx, owner.Id, ev)
w.WriteHeader(http.StatusOK)
w.Write([]byte("ok"))
}
Expand Down
2 changes: 1 addition & 1 deletion internal/stats/aggregate.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func Aggregate(w http.ResponseWriter, r *http.Request) {
slices.Sort(metrics)
metricsToProjection(filters, metrics)
from, to := PeriodToRange(ctx, time.Now, req.Period, r.URL.Query())
resultRecord, err := session.Get(ctx).Scan(ctx, tenant.Default, from.UnixMilli(), to.UnixMilli(), filters)
resultRecord, err := session.Get(ctx).Scan(ctx, tenant.Get(ctx), from.UnixMilli(), to.UnixMilli(), filters)
if err != nil {
logger.Get(ctx).Error("Failed scanning", "err", err)
request.Internal(ctx, w)
Expand Down
2 changes: 1 addition & 1 deletion internal/stats/breakdown.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func BreakDown(w http.ResponseWriter, r *http.Request) {
slices.Sort(req.Property)
selectedColumns := metricsToProjection(filter, req.Metrics, req.Property...)
from, to := PeriodToRange(ctx, time.Now, period, r.URL.Query())
scannedRecord, err := session.Get(ctx).Scan(ctx, tenant.Default, from.UnixMilli(), to.UnixMilli(), filter)
scannedRecord, err := session.Get(ctx).Scan(ctx, tenant.Get(ctx), from.UnixMilli(), to.UnixMilli(), filter)
if err != nil {
logger.Get(ctx).Error("Failed scanning", "err", err)
request.Internal(ctx, w)
Expand Down
2 changes: 1 addition & 1 deletion internal/stats/current_visitors.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func Realtime(w http.ResponseWriter, r *http.Request) {
now := time.Now().UTC()
firstTime := now.Add(-5 * time.Minute)
result, err := session.Get(ctx).Scan(ctx,
tenant.Default,
tenant.Get(ctx),
firstTime.UnixMilli(),
now.UnixMilli(),
&v1.Filters{
Expand Down
2 changes: 1 addition & 1 deletion internal/stats/timeseries.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TimeSeries(w http.ResponseWriter, r *http.Request) {
slices.Sort(metrics)
metricsToProjection(filters, metrics)
from, to := PeriodToRange(ctx, time.Now, req.Period, r.URL.Query())
scanRecord, err := session.Get(ctx).Scan(ctx, tenant.Default, from.UnixMilli(), to.UnixMilli(), filters)
scanRecord, err := session.Get(ctx).Scan(ctx, tenant.Get(ctx), from.UnixMilli(), to.UnixMilli(), filters)
if err != nil {
logger.Get(ctx).Error("Failed scanning", "err", err)
request.Internal(ctx, w)
Expand Down

0 comments on commit 374c135

Please sign in to comment.