This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.3 KiB
81 lines
2.3 KiB
/** |
|
* Copyright (c) 2013-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @providesModule UserAgentData |
|
*/ |
|
|
|
/** |
|
* Usage note: |
|
* This module makes a best effort to export the same data we would internally. |
|
* At Facebook we use a server-generated module that does the parsing and |
|
* exports the data for the client to use. We can't rely on a server-side |
|
* implementation in open source so instead we make use of an open source |
|
* library to do the heavy lifting and then make some adjustments as necessary. |
|
* It's likely there will be some differences. Some we can smooth over. |
|
* Others are going to be harder. |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var UAParser = require('ua-parser-js'); |
|
|
|
var UNKNOWN = 'Unknown'; |
|
|
|
var PLATFORM_MAP = { |
|
'Mac OS': 'Mac OS X' |
|
}; |
|
|
|
/** |
|
* Convert from UAParser platform name to what we expect. |
|
*/ |
|
function convertPlatformName(name) { |
|
return PLATFORM_MAP[name] || name; |
|
} |
|
|
|
/** |
|
* Get the version number in parts. This is very naive. We actually get major |
|
* version as a part of UAParser already, which is generally good enough, but |
|
* let's get the minor just in case. |
|
*/ |
|
function getBrowserVersion(version) { |
|
if (!version) { |
|
return { |
|
major: '', |
|
minor: '' |
|
}; |
|
} |
|
var parts = version.split('.'); |
|
return { |
|
major: parts[0], |
|
minor: parts[1] |
|
}; |
|
} |
|
|
|
/** |
|
* Get the UA data fom UAParser and then convert it to the format we're |
|
* expecting for our APIS. |
|
*/ |
|
var parser = new UAParser(); |
|
var results = parser.getResult(); |
|
|
|
// Do some conversion first. |
|
var browserVersionData = getBrowserVersion(results.browser.version); |
|
var uaData = { |
|
browserArchitecture: results.cpu.architecture || UNKNOWN, |
|
browserFullVersion: results.browser.version || UNKNOWN, |
|
browserMinorVersion: browserVersionData.minor || UNKNOWN, |
|
browserName: results.browser.name || UNKNOWN, |
|
browserVersion: results.browser.major || UNKNOWN, |
|
deviceName: results.device.model || UNKNOWN, |
|
engineName: results.engine.name || UNKNOWN, |
|
engineVersion: results.engine.version || UNKNOWN, |
|
platformArchitecture: results.cpu.architecture || UNKNOWN, |
|
platformName: convertPlatformName(results.os.name) || UNKNOWN, |
|
platformVersion: results.os.version || UNKNOWN, |
|
platformFullVersion: results.os.version || UNKNOWN |
|
}; |
|
|
|
module.exports = uaData; |