openreplay/backend/pkg/url/url.go
Alexander c6aac11cbf
Heuristics refactoring (#987)
* feat(backend): refactored heuristics service

* feat(backend): refactored db service (moved several events to heuristics)
2023-03-09 09:54:12 +01:00

55 lines
1 KiB
Go

package url
import (
"net/url"
"strings"
)
func DiscardURLQuery(url string) string {
return strings.Split(url, "?")[0]
}
func GetURLParts(rawURL string) (string, string, string, error) {
rawURL = strings.Replace(rawURL, "\t", "", -1) // Other chars?
u, err := url.Parse(rawURL)
if err != nil {
return "", "", "", err
}
// u.Scheme u.Fragment / RawFragment ?
path := u.Path
if u.RawPath != "" {
path = u.RawPath
}
return u.Host, path, u.RawQuery, nil
}
func getURLExtension(URL string) string {
u, err := url.Parse(URL)
if err != nil {
return ""
}
i := strings.LastIndex(u.Path, ".")
return u.Path[i+1:]
}
func GetResourceType(initiator string, URL string) string {
switch initiator {
case "xmlhttprequest", "fetch":
return "fetch"
case "img":
return "img"
default:
switch getURLExtension(URL) {
case "css":
return "stylesheet"
case "js":
return "script"
case "png", "gif", "jpg", "jpeg", "svg":
return "img"
case "mp4", "mkv", "ogg", "webm", "avi", "mp3":
return "media"
default:
return "other"
}
}
}