NAME

SHARYANTO::HTTP::DetectUA::Simple - A very simple and generic browser detection library

VERSION

version 0.23

DESCRIPTION

I needed a simple and fast routine which can detect whether HTTP client is a GUI browser (like Chrome or Firefox), a text browser (like Lynx or Links), or neither (like curl, or L). Hence, this module.

This module has Rinci metadata.

FUNCTIONS

None are exported by default, but they are exportable.

detect_http_ua_simple(@args) -> [status, msg, result, meta]

Detect whether HTTP client is a GUI/TUI browser.

This function is a simple and fast routine to detect whether HTTP client is a GUI browser (like Chrome or Firefox), a text-based browser (like Lynx or Links), or neither (like curl or LWP). Extra information can be provided in the future.

Currently these heuristic rules are used:

  • check popular browser markers in User-Agent header (e.g. 'Chrome', 'Opera');

  • check Accept header for 'image/';

It is several times faster than the other equivalent Perl modules, this is because it does significantly less.

Arguments ('*' denotes required arguments):

  • env => any

    CGI-compatible environment, e.g. \%ENV or PSGI's $env.

Return value:

Returns an enveloped result (an array). First element (status) is an integer containing HTTP status code (200 means OK, 4xx caller error, 5xx function error). Second element (msg) is a string containing error message, or 'OK' if status is 200. Third element (result) is optional, the actual result. Fourth element (meta) is called result metadata and is optional, a hash that contains extra information.

AUTHOR

Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Steven Haryanto.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.