package useragent

import (
	"strings"
)

type UserAgent struct {
	Product  string `json:"product,omitempty"`
	Version  string `json:"version,omitempty"`
	Comment  string `json:"comment,omitempty"`
	RawValue string `json:"raw_value,omitempty"`
}

func Parse(s string) UserAgent {
	parts := strings.SplitN(s, "/", 2)
	var version, comment string
	if len(parts) > 1 {
		// If first character is a number, treat it as version
		if len(parts[1]) > 0 && parts[1][0] >= 48 && parts[1][0] <= 57 {
			rest := strings.SplitN(parts[1], " ", 2)
			version = rest[0]
			if len(rest) > 1 {
				comment = rest[1]
			}
		} else {
			comment = parts[1]
		}
	} else {
		parts = strings.SplitN(s, " ", 2)
		if len(parts) > 1 {
			comment = parts[1]
		}
	}
	return UserAgent{
		Product:  parts[0],
		Version:  version,
		Comment:  comment,
		RawValue: s,
	}
}