user_agent.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package uaparser
  2. type UserAgent struct {
  3. Family string
  4. Major string
  5. Minor string
  6. Patch string
  7. }
  8. func (parser *uaParser) Match(line string, ua *UserAgent) {
  9. matches := parser.Reg.FindStringSubmatchIndex(line)
  10. if len(matches) > 0 {
  11. ua.Family = string(parser.Reg.ExpandString(nil, parser.FamilyReplacement, line, matches))
  12. ua.Major = string(parser.Reg.ExpandString(nil, parser.V1Replacement, line, matches))
  13. ua.Minor = string(parser.Reg.ExpandString(nil, parser.V2Replacement, line, matches))
  14. ua.Patch = string(parser.Reg.ExpandString(nil, parser.V3Replacement, line, matches))
  15. }
  16. }
  17. func (ua *UserAgent) ToString() string {
  18. var str string
  19. if ua.Family != "" {
  20. str += ua.Family
  21. }
  22. version := ua.ToVersionString()
  23. if version != "" {
  24. str += " " + version
  25. }
  26. return str
  27. }
  28. func (ua *UserAgent) ToVersionString() string {
  29. var version string
  30. if ua.Major != "" {
  31. version += ua.Major
  32. }
  33. if ua.Minor != "" {
  34. version += "." + ua.Minor
  35. }
  36. if ua.Patch != "" {
  37. version += "." + ua.Patch
  38. }
  39. return version
  40. }