dfp-lib
Version:
This project hosts the Node.JS client library for the SOAP-based DFP API at Google.
97 lines (96 loc) • 4.34 kB
JavaScript
;
const jsUtils_1 = require("../../common/util/jsUtils");
const dateTimeUtils_1 = require("./dateTimeUtils");
const value_1 = require("../soap/value");
const textValue_1 = require("../soap/textValue");
const booleanValue_1 = require("../soap/booleanValue");
const numberValue_1 = require("../soap/numberValue");
const dfpDateTime_1 = require("../soap/dfpDateTime");
const dateValue_1 = require("../soap/dateValue");
const dateTimeValue_1 = require("../soap/dateTimeValue");
const setValue_1 = require("../soap/setValue");
const targeting_1 = require("../soap/targeting");
const targetingValue_1 = require("../soap/targetingValue");
const resultSet_1 = require("../soap/resultSet");
const invalidArgumentException_1 = require("../../common/lib/invalidArgumentException");
var Pql;
(function (Pql) {
function createValue(value) {
if (value instanceof value_1.Value) {
return value;
}
if (value === null) {
return new textValue_1.TextValue();
}
if (typeof value === 'boolean') {
return new booleanValue_1.BooleanValue(value);
}
if (jsUtils_1.isFloat(value) || jsUtils_1.isInt(value)) {
return new numberValue_1.NumberValue(value);
}
if (typeof value === 'string') {
return new textValue_1.TextValue(value);
}
if (value instanceof dfpDateTime_1.DfpDateTime) {
return new dateTimeValue_1.DateTimeValue(value);
}
if (value instanceof Date) {
return new dateValue_1.DateValue(dateTimeUtils_1.DateTimeUtils.toDfpDate(value));
}
if (value instanceof Array) {
const setValue = new setValue_1.SetValue();
setValue.values = value.map(createValue);
return setValue;
}
if (value instanceof targeting_1.Targeting) {
return new targetingValue_1.TargetingValue(value);
}
const constructorName = value.constructor.name;
throw new invalidArgumentException_1.InvalidArgumentException(`Unsupported value type [${constructorName}]`);
}
Pql.createValue = createValue;
function toString(value) {
if (value instanceof booleanValue_1.BooleanValue) {
return (value.value) ? 'true' : 'false';
}
if ((value instanceof numberValue_1.NumberValue) || (value instanceof textValue_1.TextValue)) {
return '' + value.value;
}
if (value instanceof dateTimeValue_1.DateTimeValue) {
return (value.value == null) ? '' : dateTimeUtils_1.DateTimeUtils.toISOString(value.value);
}
if (value instanceof dateValue_1.DateValue) {
return (value.value == null) ? '' : dateTimeUtils_1.DateTimeUtils.toDateString(value.value);
}
if (value instanceof setValue_1.SetValue) {
return (value.values || []).map(Pql.toString).join(',');
}
const constructorName = value.constructor.name;
throw new invalidArgumentException_1.InvalidArgumentException(`Unsupported value type [${constructorName}]`);
}
Pql.toString = toString;
function getColumnLabels(resultSet) {
return resultSet.columnTypes.map(function (columnType) {
return columnType.labelName;
});
}
Pql.getColumnLabels = getColumnLabels;
function getRowStringValues(row) {
return row.values.map(Pql.toString);
}
Pql.getRowStringValues = getRowStringValues;
function combineResultSets(first, second) {
const firstColumns = getColumnLabels(first);
const secondColumns = getColumnLabels(second);
const sameColumns = firstColumns.length === secondColumns.length
&& firstColumns.every((v, i) => v === secondColumns[i]);
if (!sameColumns) {
throw new invalidArgumentException_1.InvalidArgumentException(sprintf("First result set columns [%s] "
+ "do not match second result set columns [%s]", firstColumns.join(', '), secondColumns.join(', ')));
}
const combinedRows = (second.rows) ?
first.rows.concat(second.rows) : first.rows;
return new resultSet_1.ResultSet(first.columnTypes, combinedRows);
}
Pql.combineResultSets = combineResultSets;
})(Pql = exports.Pql || (exports.Pql = {}));