This module is designed to facilitate the device structure (through Plug.Conn.assign/3
) and easy connection to other projects.
The module can be installed by adding ds
to your list of dependencies in mix.exs
:
def deps do
[
{:ds, "~> 1.1"}
]
end
Run mix task to download databases for UAInspector
:
$ mix ua_inspector.download
Create new pipeline in your Router file:
defmodule ExampleWeb.Router do
use ExampleWeb.Router
pipeline :device_detectable do
plug DSPlug
end
# Add pipeline to scope
scope "/", ExampleWeb do
pipe_through [:browser, :device_detectable]
get "/", ExampleController, :index
end
end
Now you can access it from your controller.
def ExampleController do
use ExampleWeb, :controller
def index(conn, _params) do
IO.inspect(conn.assigns[:device_info])
text(conn, "OK")
end
end
iex(1)> DS.parse("Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53")
%DS{
bot_name: nil,
browser: "Mobile Safari",
browser_version: "7.0",
device_brand: "Apple",
device_model: "iPad",
device_type: "tablet",
is_bot?: false,
is_mobile?: true,
os: "iOS",
os_version: "7.0.4"
}
defp deps do
[
{:plug_cowboy, "~> 2.1"},
{:ua_inspector, "~> 1.0"}
]
end
This project is licensed under the terms of the MIT license.