referrer.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package goreferrer
  2. type ReferrerType int
  3. const (
  4. Invalid ReferrerType = iota
  5. Indirect
  6. Direct
  7. Email
  8. Search
  9. Social
  10. )
  11. func (r ReferrerType) String() string {
  12. switch r {
  13. default:
  14. return "invalid"
  15. case Indirect:
  16. return "indirect"
  17. case Direct:
  18. return "direct"
  19. case Email:
  20. return "email"
  21. case Search:
  22. return "search"
  23. case Social:
  24. return "social"
  25. }
  26. }
  27. type Referrer struct {
  28. Type ReferrerType
  29. Label string
  30. URL string
  31. Subdomain string
  32. Domain string
  33. Tld string
  34. Path string
  35. Query string
  36. GoogleType GoogleSearchType
  37. }
  38. func (r *Referrer) RegisteredDomain() string {
  39. if r.Domain != "" && r.Tld != "" {
  40. return r.Domain + "." + r.Tld
  41. }
  42. return ""
  43. }
  44. func (r *Referrer) Host() string {
  45. if r.Subdomain != "" {
  46. return r.Subdomain + "." + r.RegisteredDomain()
  47. }
  48. return r.RegisteredDomain()
  49. }
  50. type GoogleSearchType int
  51. const (
  52. NotGoogleSearch GoogleSearchType = iota
  53. OrganicSearch
  54. Adwords
  55. )
  56. func (g GoogleSearchType) String() string {
  57. switch g {
  58. default:
  59. return "not google search"
  60. case OrganicSearch:
  61. return "organic google search"
  62. case Adwords:
  63. return "google adwords referrer"
  64. }
  65. }