Browser detection for Elixir. This is a port from the Ruby browser library.
All the detection features have been ported, but not the meta and the language ones.
Add browser to your list of dependencies in mix.exs:
defdepsdo[{:browser,"~> 0.5.5"}]endua="some string"Browser.name(ua)# readable browser nameBrowser.version(ua)# major version numberBrowser.full_version(ua)Browser.full_browser_name(ua)# Chrome 5.0.375.99Browser.full_display(ua)# example: Chrome 5.0.375.99 on MacOS 10.6.4 Snow LeopardBrowser.safari?(ua)Browser.opera?(ua)Browser.chrome?(ua)Browser.chrome_os?(ua)Browser.mobile?(ua)Browser.tablet?(ua)Browser.console?(ua)Browser.firefox?(ua)Browser.ie?(ua)Browser.ie?(ua,6)# detect specific IE versionBrowser.edge?(ua)# Newest MS browserBrowser.modern?(ua)# Webkit, Firefox 17+, IE 9+ and Opera 12+Browser.platform(ua)# return :ios, :android, :mac, :windows, :linux or :otherBrowser.full_platform_name(ua)# example: MacOS 10.6.4 Snow LeopardBrowser.device_type(ua)# return :mobile, :tablet, :desktop, :console, :unknownBrowser.ios?(ua)# detect iOSBrowser.ios?(ua,9)# detect specific iOS versionBrowser.mac?(ua)Browser.mac_version(ua)# display version of Mac OSX. i.e. High SierraBrowser.windows?(ua)Browser.windows_x64?(ua)Browser.windows_version_name# display version of Windows. i.e. Windows 10Browser.linux?(ua)Browser.blackberry?(ua)Browser.blackberry?(ua,10)# detect specific BlackBerry versionBrowser.bot?(ua)Browser.search_engine?(ua)Browser.phantom_js?(ua)Browser.quicktime?(ua)Browser.core_media?(ua)Browser.silk?(ua)Browser.android?(ua)Browser.android?(ua,4.2)# detect Android Jelly Bean 4.2Browser.known?(ua)# has the browser been successfully detected?See the original Ruby library for more information.
You can also pass Plug.Conn instead of a string, the user-agent header will
be extracted and used.
Browser.bot?(conn)You can specify custom bots.txt file in your project's config.
config:browser,bots_file: Path.join(File.cwd!,"bots.txt")# bots.txt in project's rootPlease note that option set as mobule attribute during compile time, so make sure you recompiled elixir-browser after changing this option or bots file itself.