{"id":13616369,"url":"https://github.com/ua-parser/uap-go","last_synced_at":"2025-04-14T00:32:17.096Z","repository":{"id":23031861,"uuid":"26384614","full_name":"ua-parser/uap-go","owner":"ua-parser","description":"Go implementation of ua-parser","archived":false,"fork":false,"pushed_at":"2024-10-12T19:18:01.000Z","size":3792,"stargazers_count":356,"open_issues_count":8,"forks_count":107,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-29T21:22:38.590Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ua-parser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2014-11-09T04:08:02.000Z","updated_at":"2024-10-28T17:14:48.000Z","dependencies_parsed_at":"2022-08-21T18:50:26.710Z","dependency_job_id":"91f9fb63-2714-48c0-8cfc-8588f5087f5b","html_url":"https://github.com/ua-parser/uap-go","commit_stats":{"total_commits":73,"total_committers":29,"mean_commits":"2.5172413793103448","dds":0.863013698630137,"last_synced_commit":"33f8e6d47f386972c01d9831b8e6fdd4fe5b5e86"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ua-parser%2Fuap-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ua-parser","download_url":"https://codeload.github.com/ua-parser/uap-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223286479,"owners_count":17120000,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T20:01:27.584Z","updated_at":"2025-04-14T00:32:17.083Z","avatar_url":"https://github.com/ua-parser.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Golang User Agent parser\n\nThis is the Go implementation of the [ua-parser](https://github.com/ua-parser)\n\n# Usage\n\n## Install\n\n    $ go get github.com/ua-parser/uap-go/uaparser\n\n## Updating\n\n  `uap-core` definitions are, by default, compiled and included in the Go portion of this package. To regenerate these definitions you can run the `build.sh` script.\n\n## Testing\n\n    $ cd uaparser\n    $ go test -v -cover\n\nWhen adding new feature you can check for data race with `go test -race`, although this command\nwill take more than 2 minutes to execute since the `-race` flag adds some instrumentation on all regex matches\n\nSo a quicker way to test data race on the main `*parser.Parse` method can be:\n\n    $ go test -race -run=Concurrency  # filter to execute `TestGenericParseMethodConcurrency` only\n\n## Benching\n\nIf needed, you can run benchmark on your latest feature to be compared (using `benchcmp`) against the current performance\n\n    $ cd uaparser\n    $ git checkout master\n    $ go test -bench=.  -run=none \u003e ~/old.benchmark\n    $ git checkout my_latest_feature\n    $ go test -bench=.  -run=none \u003e ~/new.benchmark\n    $ benchcmp ~/old.benchmark ~/new.benchmark\n\n# Example\n\n```go\npackage main\n\nimport (\n  \"fmt\"\n  \"log\"\n\n  \"github.com/ua-parser/uap-go/uaparser\"\n)\n\nfunc main() {\n  uagent := \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true\"\n\n  parser, err := uaparser.New(\"./regexes.yaml\")\n  if err != nil {\n    log.Fatal(err)\n  }\n  // or alternatively, using the golang version of our regexes we build from the yaml:\n  // parser :=  uaparser.NewFromSaved()\n\n  client := parser.Parse(uagent)\n\n  fmt.Println(client.UserAgent.Family)  // \"Amazon Silk\"\n  fmt.Println(client.UserAgent.Major)   // \"1\"\n  fmt.Println(client.UserAgent.Minor)   // \"1\"\n  fmt.Println(client.UserAgent.Patch)   // \"0-80\"\n  fmt.Println(client.Os.Family)         // \"Android\"\n  fmt.Println(client.Os.Major)          // \"\"\n  fmt.Println(client.Os.Minor)          // \"\"\n  fmt.Println(client.Os.Patch)          // \"\"\n  fmt.Println(client.Os.PatchMinor)     // \"\"\n  fmt.Println(client.Device.Family)     // \"Kindle Fire\"\n}\n\n```\n\n# Authors\n\n* Yihuan Zhou\n\n(Based on the Java implementation by Steve Jiang and using agent data from BrowserScope)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fua-parser%2Fuap-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fua-parser%2Fuap-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fua-parser%2Fuap-go/lists"}