fiftyone.devicedetection.onpremise
Version:
Device detection on-premise services for the 51Degrees Pipeline API
75 lines (65 loc) • 2.68 kB
JavaScript
/* *********************************************************************
* This Original Work is copyright of 51 Degrees Mobile Experts Limited.
* Copyright 2025 51 Degrees Mobile Experts Limited, Davidson House,
* Forbury Square, Reading, Berkshire, United Kingdom RG1 3EU.
*
* This Original Work is licensed under the European Union Public Licence
* (EUPL) v.1.2 and is subject to its terms as set out below.
*
* If a copy of the EUPL was not distributed with this file, You can obtain
* one at https://opensource.org/licenses/EUPL-1.2.
*
* The 'Compatible Licences' set out in the Appendix to the EUPL (as may be
* amended by the European Commission) shall be deemed incompatible for
* the purposes of the Work and the provisions of the compatibility
* clause in Article 5 of the EUPL shall not apply.
*
* If using the Work as, or as part of, a network application, by
* including the attribution notice(s) required under Article 5 of the EUPL
* in the end user terms of the application under an appropriate heading,
* such notice(s) shall fulfill the requirements of that article.
* ********************************************************************* */
const querystring = require('querystring');
const engines = require('fiftyone.pipeline.engines');
const DataFile = engines.DataFile;
/**
* Instance of DataFile class for the Device Detection Engine
* Extends datafile by providing a formatter for the DataFileUpdateService
* update url which contains the product, type and licensekeys.
* These paramaters are passed in to the datafile constructor's
* updateURLParams parameter
**/
class DeviceDetectionDataFile extends DataFile {
/**
* Constructor for Device Detection DataFile
*
* @param {object} options options for the datafile
* @param {string} options.useUrlFormatter whether to append default URL params for Data File download
**/
constructor ({ useUrlFormatter = true, ...rest }) {
super({ ...rest });
this.useUrlFormatter = useUrlFormatter;
}
/**
* Uses the product, type and licensekey parameters the datafile
* was constructed with to generate a querystring used in the datafile
* update service.
*
* @returns {string} url
*/
urlFormatter () {
const queryParams = {
Product: this.updateURLParams.product,
Type: this.updateURLParams.Type
};
let URL = this.updateURLParams.baseURL;
if (this.updateURLParams.licenseKeys) {
queryParams.licenseKeys = this.updateURLParams.licenseKeys;
}
if (this.useUrlFormatter) {
URL += '?' + querystring.stringify(queryParams);
}
return URL;
}
}
module.exports = DeviceDetectionDataFile;