Skip to content

LuckyCamel/uap-scala

 
 

Repository files navigation

uap-scala

Build status Codecov status Maven Central

A Scala user-agent string parser based on ua-parser/uap-core. It extracts browser, OS and device information.

Checkout

The code for this repository can be checked out normally. It uses a git submodule to include the files needed from uap-core so care must be taken to make sure the core directory is properly checked out and initialized.

Checking out the repo for the first time

git clone --recursive https://github.com/ua-parser/uap-scala.git

If uap-scala was checked out and core was not properly initialized, the following can be done

cd core
git submodule update --init --recursive

Build

To build for the default Scala (currently 2.11):

sbt package

To cross-build for different Scala versions:

sbt +package

Linking

Linking

You can link against this library in your program at the following coordinates:

Scala 2.10

groupId: org.uaparser
artifactId: uap-scala_2.10
version: 0.11.0

Scala 2.11

groupId: org.uaparser
artifactId: uap-scala_2.11
version: 0.11.0

Scala 2.12

groupId: org.uaparser
artifactId: uap-scala_2.12
version: 0.11.0

Scala 2.13

groupId: org.uaparser
artifactId: uap-scala_2.13
version: 0.11.0

Usage

Retrieve data on a user-agent string

import org.uaparser.scala.Parser

val ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
val client = Parser.default.parse(ua) // you can also use CachingParser
println(client) // Client(UserAgent(Mobile Safari,Some(5),Some(1),None),OS(iOS,Some(5),Some(1),Some(1),None),Device(iPhone))

Extract partial data from user-agent string

The time costs of parsing all the data may be high. To reduce the costs, we can just parse partial data.

import org.uaparser.scala.Parser

val raw = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
val parser = Parser.default

val os = parser.osParser.parse(raw)
println(os) // OS(iOS,Some(5),Some(1),Some(1),None)

val userAgent = parser.userAgentParser.parse(raw)
println(userAgent) // UserAgent(Mobile Safari,Some(5),Some(1),None)

val device = parser.deviceParser.parse(raw)
println(device) // Device(iPhone,Some(Apple),Some(iPhone))

Maintainers

About

Scala port of ua-parser

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 100.0%