Current section
Files
Jump to
Current section
Files
src/erluap.erl
-module(erluap).
-include("erluap.hrl").
-export([
parse/1,
parse_as_proplist/1,
is_spider/1
]).
-spec parse(binary() | iolist()) ->
{device(), os(), browser()}.
parse(UserAgent) ->
erluap_nif:parse(UserAgent).
-spec parse_as_proplist(binary() | iolist()) ->
list().
parse_as_proplist(UserAgent) ->
case erluap_nif:parse(UserAgent) of
{Device, Os, Browser} ->
[{device, rec2proplist(Device)}, {os, rec2proplist(Os)}, {browser, rec2proplist(Browser)}];
Error ->
Error
end.
-spec is_spider(device()) ->
boolean().
is_spider(#device{family = F}) ->
F == <<"Spider">>.
% internals
-spec rec2proplist(device() | os() | browser()) ->
list().
rec2proplist(#device{} = Rec) ->
lists:zip(record_info(fields, device), tl(tuple_to_list(Rec)));
rec2proplist(#agent{} = Rec) ->
lists:zip(record_info(fields, agent), tl(tuple_to_list(Rec))).