An open API service indexing awesome lists of open source software.

https://github.com/alex-strizhakov/ds

Device structure
https://github.com/alex-strizhakov/ds

device-detection elixir plug

Last synced: 9 months ago
JSON representation

Device structure

Awesome Lists containing this project

README

          

# Device Structure

This module is designed to facilitate the device structure (through `Plug.Conn.assign/3`) and easy connection to other projects.

## Installation

The module can be installed by adding `ds` to your list of dependencies in `mix.exs`:

```elixir
def deps do
[
{:ds, "~> 1.1"}
]
end
```

Run mix task to download databases for `UAInspector`:

```console
$ mix ua_inspector.download
```

## Usage

Create new pipeline in your Router file:

```elixir
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.

```elixir
def ExampleController do
use ExampleWeb, :controller

def index(conn, _params) do
IO.inspect(conn.assigns[:device_info])
text(conn, "OK")
end
end
```

# Example

```elixir
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"
}
```
## Dependencies used in library

```elixir
defp deps do
[
{:plug_cowboy, "~> 2.1"},
{:ua_inspector, "~> 1.0"}
]
end
```

- https://github.com/elixir-plug/plug_cowboy
- https://github.com/elixytics/ua_inspector

## License

This project is licensed under the terms of the MIT license.