UNPKG

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
"use strict"; 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 = {}));