reprogl

Форк
0
/
tracking.go 
26 строк · 571.0 Байт
1
package middlewares
2

3
import (
4
	"net/http"
5

6
	"xelbot.com/reprogl/container"
7
	pkghttp "xelbot.com/reprogl/http"
8
	"xelbot.com/reprogl/utils/tracking"
9
)
10

11
func Track(next http.Handler, app *container.Application) http.Handler {
12
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
13
		activity := tracking.CreateActivity(r)
14
		next.ServeHTTP(w, r)
15

16
		if activity != nil {
17
			lrw, ok := w.(pkghttp.LogResponseWriter)
18
			if ok {
19
				activity.Status = lrw.Status()
20
				activity.Duration = lrw.Duration()
21
			}
22

23
			go tracking.SaveActivity(activity, app)
24
		}
25
	})
26
}
27

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.