این سند میاناهای برنامهسازی کاربردی را برای برچسبگذاری سمت سرور شرح میدهد.
addEventCallback
تابع بازخوانیای را ثبت میکند که در پایان رویداد فراخوانی خواهد شد. وقتی همه برچسبهای رویداد اجرا شد، فراخوانی برگشتی فراخوانده میشود. دو مقدار به callback ارسال میشود: شناسه محفظهای که تابع را فرامیخواند و شیئی که حاوی اطلاعاتی درباره رویداد است.
وقتی این API در برچسبی استفاده میشود، به رویداد فعلی منسوب میشود. وقتی این
API در کارخواهی استفاده میشود، باید بااستفاده از تابع bindToEvent در
runContainer API به رویداد خاصی ملحق شود. برای جزئیات بیشتر،
نمونه را ببینید.
نحو
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// Take some action based on the event data.
});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
callback |
تابع | تابعی که در پایان رویداد فراخوانی میشود. |
شیء eventData حاوی دادههای زیر است:
| نام کلید | نوع | شرح |
|---|---|---|
tags |
آرایه |
آرایهای از اشیای داده برچسب. هر برچسبی که درطول رویداد فعال شده باشد
ورودیای در این آرایه خواهد داشت. شیء داده برچسب حاوی
شناسه برچسب (id)، وضعیت اجرای آن
(status)، و زمان اجرای آن
(executionTime) است. دادههای برچسب همچنین شامل
فرادادههای برچسب اضافی است که در برچسب پیکربندی شده است.
|
در کارخواه:
const addEventCallback = require('addEventCallback');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const logToConsole = require('logToConsole');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((evt, i) => {
runContainer(evt, /* onComplete= */ (bindToEvent) => {
bindToEvent(addEventCallback)((containerId, eventData) => {
logToConsole('Event Number: ' + i);
eventData.tags.forEach((tag) => {
logToConsole('Tag ID: ' + tag.id);
logToConsole('Tag Status: ' + tag.status);
logToConsole('Tag Execution Time: ' + tag.executionTime);
});
});
if (events.length === ++eventsCompleted) {
returnResponse();
}
});
});
در برچسب:
const addEventCallback = require('addEventCallback');
addEventCallback((containerId, eventData) => {
// This will be called at the end of the current event.
});
اجازههای مرتبط
callLater
تماسی را برای تابعی زمانبندی میکند تا بهصورت ناهمزمان انجام شود. تابع پساز بازگشت کد فعلی فراخوانی خواهد شد. این معادل
setTimeout(<function>, 0) است.
نمونه
const callLater = require('callLater');
const logToConsole = require('logToConsole');
callLater(() => {
logToConsole('Logged asynchronously');
});
نحو
callLater(function)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
function |
تابع | تابع موردنظر برای فراخوانی. |
اجازههای مرتبط
هیچکدام.
claimRequest
از این API در مشتری برای ادعای درخواست استفاده کنید. وقتی درخواستی ادعا میشود، محفظه کارخواه دیگری را اجرا نمیکند.
اگر این «میانای برنامهسازی کاربردی» در برچسب یا متغیری فراخوانی شود، استثنایی ایجاد میکند. اگر این «میانای برنامهسازی کاربردی» پساز برگشتن کارخواه فراخوانده شود (برای نمونه، اگر در یک فراخوانی متقابل ناهمزمان مثل callLater یا تابع runContainer onComplete فراخوانده شود)، استثنایی ایجاد میکند.
کارخواه باید درخواست را بااستفاده از این API قبلاز فراخوانی API
runContainer ادعا کند.
مثال
const claimRequest = require('claimRequest');
claimRequest();
نحو
claimRequest();
اجازههای مرتبط
هیچکدام.
computeEffectiveTldPlusOne
دامنه سطح بالای مؤثر + ۱ (eTLD+1) دامنه یا نشانی وب دادهشده را برمیگرداند. eTLD+1 با ارزیابی دامنه دربرابر قوانین فهرست پسوند عمومی محاسبه میشود. eTLD+1 معمولاً بالاترین سطح دامنه است که میتوانید در آن کوکی تنظیم کنید.
اگر آرگومان تهی یا تعریفنشده باشد، مقدار آرگومان بدون تغییر برگردانده میشود. درغیراینصورت، متغیر مستقل به رشته تبدیل میشود. اگر آرگومان دامنه یا نشانی وب معتبری نباشد، رشته خالی برگردانده میشود. اگر سرور نتواند فهرست پسوند عمومی را واکشی کند، مقدار آرگومان بدون تغییر برگردانده میشود.
نمونه
const computeEffectiveTldPlusOne = require('computeEffectiveTldPlusOne');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('analytics.example.co.uk');
// Returns 'example.co.uk'
computeEffectiveTldPlusOne('https://analytics.example.co.uk/path');
نحو
computeEffectiveTldPlusOne(domainOrUrl);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
domainOrUrl |
رشته | دامنه یا نشانی وبی که براساس آن eTLD+1 محاسبه میشود. |
اجازههای مرتبط
هیچکدام.
createRegex
نمونه جدیدی از عبارت باقاعده ایجاد میکند و آن را در شیئی برمیگرداند. نمیتوانید
مستقیماً به عبارت باقاعده دسترسی داشته باشید. بااینحال، میتوانید آن را به میانای برنامهسازی کاربردی testRegex،
String.replace()، String.match()، و String.search() منتقل کنید.
اگر عبارت باقاعده نامعتبر باشد یا Re2 در سرور دردسترس نباشد، null را برمیگرداند.
این API از پیادهسازی Re2 استفاده میکند. تصویر Docker سرور باید نسخه 2.0.0 یا جدیدتر باشد.
مثال
const createRegex = require('createRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// Returns '/foobar'
'example.com/foobar'.replace(domainRegex, '');
نحو
createRegex(pattern, flags);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
pattern |
رشته | نوشتار عبارت باقاعده. |
flags |
رشته | رشته اختیاری حاوی پرچمهای عبارت باقاعده درحال ایجاد. از `g` (سراسری) و `i` (صرفنظر از اندازه حروف) پشتیبانی میشود. همه نویسههای دیگر بیصدا نادیده گرفته میشوند. |
اجازههای مرتبط
هیچکدام.
حداقل نسخه تصویر
decodeUri
هر نویسه کدگذاریشده در URI ارائهشده را رمزگشایی میکند. رشتهای را برمیگرداند که
نشاندهنده نشانی وب رمزگشاییشده است. اگر ورودی نامعتبر ارائه شود، undefined را برمیگرداند.
نمونه
const decodeUri = require('decodeUri');
const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
// ...
}
نحو
decodeUri(encoded_uri);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
encoded_uri |
رشته |
URI که توسط
encodeUri() یا روشهای دیگر کدگذاری شده است.
|
اجازههای مرتبط
هیچکدام.
decodeUriComponent
هر نویسه کدگذاریشده را در مؤلفه URI ارائهشده رمزگشایی میکند. رشتهای را برمیگرداند که نشاندهنده عنصر نشانی وب رمزگشاییشده است. اگر ورودی نامعتبر باشد،
undefined را برمیگرداند.
نمونه
const decodeUriComponent = require('decodeUriComponent');
const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
// ...
}
نحو
decodeUriComponent(encoded_uri_component);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
encoded_uri_component |
رشته |
جزء URI که توسط
encodeUriComponent()
یا روشهای دیگر کدگذاری شده است.
|
اجازههای مرتبط
هیچکدام.
encodeUri
با گریز از نویسههای خاص، «شناسه منبع یکسان» (URI) کدگذاریشدهای را برمیگرداند. رشتهای را برمیگرداند که نشاندهنده رشته ارائهشده کدگذاریشده بهعنوان شناسه منبع یکسان است.
نمونه
const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/' + encodeUri(pathInput));
نحو
encodeUri(uri);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
uri |
رشته | URI کامل. |
اجازههای مرتبط
هیچکدام.
encodeUriComponent
با نادیده گرفتن نویسههای خاص، «شناسه منبع یکسان» (URI) کدگذاریشدهای را برمیگرداند. رشتهای را برمیگرداند که نشاندهنده رشته ارائهشده است که بهصورت شناسه منبع یکسان کدگذاری شده است.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));
نحو
encodeUriComponent(str);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
str |
رشته | بخشی از یک نشانی وب. |
اجازههای مرتبط
هیچکدام.
extractEventsFromMpv1
درخواست Measurement Protocol V1 ورودی را به فهرستی از رویدادها در قالب «طرحواره یکپارچه» ترجمه میکند. فهرست رویدادهای استخراجشده را برمیگرداند. اگر درخواست در قالب صحیح نباشد، خطا ایجاد میکند.
مثال
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
const events = extractEventsFromMpv1();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv1();
اجازههای مرتبط
به اجازه read_request نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
bodyquery parameters
extractEventsFromMpv2
درخواست Measurement Protocol V2 ورودی را به فهرستی از رویدادها در قالب «طرحواره یکپارچه» ترجمه میکند. فهرست رویدادهای استخراجشده را برمیگرداند. اگر درخواست در قالب صحیح نباشد، خطا ایجاد میکند.
مثال
const extractEventsFromMpv2 = require('extractEventsFromMpv2');
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
const events = extractEventsFromMpv2();
for (let i = 0; i < events.length; ++i) {
const event = events[i];
// Process event.
}
}
نحو
extractEventsFromMpv2();
اجازههای مرتبط
به اجازه read_request نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
دسترسی به حداقل موارد زیر را مجاز کند:
bodyquery parameters
fromBase64
رشته کدبندیشده با base64 را رمزگشایی میکند. اگر ورودی نامعتبر باشد، undefined را برمیگرداند.
نحو
fromBase64(base64EncodedString);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
base64EncodedString |
رشته | رشته کدبندیشده Base64. |
مثال
const fromBase64 = require('fromBase64');
const greeting = fromBase64('aGVsbG8=');
if (greeting === 'hello') {
// ...
}
اجازههای مرتبط
هیچکدام.
generateRandom
عددی (عدد صحیح) تصادفی در محدوده ارائهشده برمیگرداند.
نمونه
const generateRandom = require('generateRandom');
const randomValue = generateRandom(0, 10000000);
نحو
generateRandom(min, max);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
min |
number | حداقل مقدار بالقوه عدد صحیح برگرداندهشده (شامل). |
max |
number | حداکثر مقدار بالقوه عدد صحیح برگرداندهشده (شامل). |
اجازههای مرتبط
هیچکدام.
getAllEventData
نسخهای از دادههای رویداد را برمیگرداند.
نحو
getAllEventData();
اجازههای مرتبط
getClientName
رشتهای را برمیگرداند که حاوی نام مشتری کنونی است.
نحو
getClientName();
اجازههای مرتبط
getContainerVersion
شیئی را برمیگرداند که حاوی دادههای مربوط به محتوی کنونی است. شیء برگرداندهشده فیلدهای زیر را خواهد داشت:
{
containerId: string,
debugMode: boolean,
environmentName: string,
environmentMode: boolean,
previewMode: boolean,
version: string,
}
نمونه
const getContainerVersion = require('getContainerVersion');
const containerVersion = getContainerVersion();
const containerId = containerVersion['containerId'];
const isDebug = containerVersion['debugMode'];
نحو
getContainerVersion();
اجازههای مرتبط
getCookieValues
آرایهای را برمیگرداند که حاوی مقادیر همه کوکیهای دارای نام دادهشده است.
مثال
const getCookieValues = require('getCookieValues');
const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
// ...
}
نحو
getCookieValues(name[, noDecode]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام کوکی. |
noDecode |
مقدار منطقی |
اگر true، مقادیر کوکی قبلاز برگردانده شدن رمزگشایی نخواهد شد. پیشفرضها به false.
|
اجازههای مرتبط
getEventData
نسخهای از مقدار را در مسیر دادهشده در دادههای رویداد برمیگرداند. اگر دادههای رویداد وجود نداشته باشد یا اگر مقداری در مسیر دادهشده وجود نداشته باشد،
undefined را برمیگرداند.
مثال
const getEventData = require('getEventData');
const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
keyPath |
any |
مسیر کلید، که در آن اجزای مسیر با نقطه از هم جدا شدهاند. مؤلفههای
مسیر میتوانند کلیدهایی در یک شیء یا شاخصهایی در یک آرایه باشند. اگر
keyPath رشته نباشد، به رشته تبدیل میشود.
|
نحو
getEventData(keyPath);
اجازههای مرتبط
getGoogleAuth
شیء مجوزی را برمیگرداند که درصورت استفاده با
sendHttpGet یا sendHttpRequest،
سرصفحه مجوزی را برای Google Cloud APIs اضافه میکند. این API از
اطلاعات اعتباری پیشفرض برنامه برای پیدا کردن خودکار اطلاعات اعتباری از
محیط سرور استفاده میکند.
نمونه
const getGoogleAuth = require('getGoogleAuth');
const logToConsole = require('logToConsole');
const sendHttpGet = require('sendHttpGet');
const auth = getGoogleAuth({
scopes: ['https://www.googleapis.com/auth/datastore']
});
sendHttpGet(
'https://firestore.googleapis.com/v1/projects/my-project/databases/(default)/documents/collection/document',
{authorization: auth}
).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
logToConsole('Result: ' + result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
});
نحو
getGoogleAuth(scopes);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
scopes
|
آرایه | آرایهای از حوزههای Google API در OAuth 2.0 برای درخواست دسترسی. |
اجازههای مرتبط
به اجازه use_google_credentials نیاز دارد. اجازه باید با یک یا چند محدوده مجاز پیکربندی شود.
getGoogleScript
منبعی را از مجموعه ازپیش تعیینشدهای از «نوشتههای Google» بازیابی میکند و وعدهای را با نوشته و فرادادههای حافظه نهان منسوب برمیگرداند.
وعده به شیئی با دو کلید حلوفصل میشود: script و
metadata. اگر درخواست ناموفق باشد، وعده با کلید reason رد خواهد شد.
شیء metadata حاوی فراداده ذخیرهسازی در حافظه نهان زیر براساس سرایندهای پاسخ منبع خواهد بود؛ هر فیلد فقط درصورتی وجود خواهد داشت که سرایند مربوطه در پاسخ منبع وجود داشته باشد.
{
'cache-control': string,
'expires': string,
'last-modified': string,
}
نمونه
const getGoogleScript = require('getGoogleScript');
getGoogleScript('ANALYTICS').then((result) => {
// Operate on result.script and result.metadata here.
});
نحو
getGoogleScript(script[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
script |
رشته |
نام دستورگان. نویسههای پشتیبانیشده عبارتاند از
'ANALYTICS'، 'GTAG'، و
'GTM'.گزینه 'ANALYTICS'
نوشتار Google Analytics را از
https://www.google-analytics.com/analytics.js واکشی میکند.گزینه 'GTAG' برچسب سایت سراسری (gtag.js)
را از https://www.googletagmanager.com/gtag/js واکشی میکند.گزینه 'GTM' اسکریپت Google Tag Manager را از https://www.googletagmanager.com/gtm.js واکشی میکند.
|
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده را در زیر ببینید. |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
id |
رشته |
قابلاعمال برای 'GTAG' با شناسه سنجش gtag و
'GTM' با شناسه محفظه وب (مثلاً GTM-XXXX).
|
debug |
هر | اگر درست باشد، نسخه اشکالزدایی اسکریپت اندازهگیری را درخواست و برمیگرداند. |
timeout |
number |
مهلت درخواست به میلیثانیه؛ مقادیر غیرمثبت نادیده گرفته میشود. اگر
درخواست منقضی شود، فراخوانی با
undefined برای مقدار اسکریپت و {} برای
شیء فراداده فراخوانده میشود.
|
کلیدهای گزینه ناشناخته نادیده گرفته میشوند.
اجازههای مرتبط
به اجازه send_http نیاز دارد. اجازه باید بهگونهای پیکربندی شود که دسترسی به حداقل موارد زیر را مجاز کند:
- مجاز کردن Google Domains
getRemoteAddress
با خواندن سرایندهای درخواست مثل «بازارسالشده» و «بازارسالشده برای»،
نمایش رشتهای نشانی IP را که درخواست از آنجا
سرچشمه گرفته است برمیگرداند، برای نمونه 12.345.67.890 برای IPv4 یا 2001:0db8:85a3:0:0:8a2e:0370:7334
برای IPv6.
توجه: این API نهایت تلاش خود را برای یافتن IP مبدأ انجام میدهد، اما
نمیتواند تضمین کند که نتیجه دقیق است.
نحو
getRemoteAddress();
اجازههای مرتبط
به اجازه read_request نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
- سرایندهای
ForwardedوX-Forwarded-For - نشانی IP ازراهدور
getRequestBody
درصورت وجود، بدنه درخواست را بهصورت رشته برمیگرداند، درغیراینصورت undefined را برمیگرداند.
نحو
getRequestBody();
اجازههای مرتبط
getRequestHeader
اگر سرایند درخواست نامگذاریشده وجود داشته باشد، مقدار آن را بهصورت رشته برمیگرداند، درغیراینصورت
undefined را برمیگرداند. اگر سرایند تکرار شود، مقادیر برگشتی با ', ' به هم میپیوندند.
مثال
const getRequestHeader = require('getRequestHeader');
const host = getRequestHeader('host');
نحو
getRequestHeader(headerName);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
headerName |
رشته | نام سرایند. این مقدار به حروف بزرگ و کوچک حساس نیست. |
اجازههای مرتبط
getRequestMethod
روش درخواست، مثلاً 'GET' یا 'POST'، را بهعنوان رشته برمیگرداند.
مثال
const getRequestMethod = require('getRequestMethod');
if (getRequestMethod() === 'POST') {
// Handle the POST request here.
}
نحو
getRequestMethod();
اجازههای مرتبط
هیچکدام.
getRequestPath
مسیر درخواست را بدون رشته پُرسمان برمیگرداند. برای مثال، اگر نشانی وب
'/foo?id=123' باشد، '/foo' را برمیگرداند. پیشوند نشانی وب حامل سرور را بهطور خودکار از مسیر حذف میکند. برای مثال، اگر نشانی وب حامل سرور
https://example.com/analytics و مسیر درخواست '/analytics/foo' باشد، این
'/foo' را برمیگرداند.
نمونه
const getRequestPath = require('getRequestPath');
const requestPath = getRequestPath();
if (requestPath === '/') {
// Handle a request for the root path.
}
نحو
getRequestPath();
اجازههای مرتبط
getRequestQueryParameter
مقدار رمزگشاییشده پارامتر رشته پُرسمان نامگذاریشده را بهصورت رشته برمیگرداند،
یا اگر پارامتر وجود نداشته باشد، undefined را برمیگرداند. اگر پارامتر در رشته پُرسمان تکرار شود، اولین مقداری که در رشته پُرسمان ظاهر میشود برگردانده خواهد شد.
نمونه
const getRequestQueryParameter = require('getRequestQueryParameter');
const query = getRequestQueryParameter('query');
if (query) {
// Process query here.
}
نحو
getRequestQueryParameter(name);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام پارامتر پُرسمان. |
اجازههای مرتبط
getRequestQueryParameters
پارامترهای پُرسمان درخواست اچتیتیپی ورودی را بهعنوان شیئی برمیگرداند که نامهای پارامتر پُرسمان را به مقدار یا مقادیر مربوطه نگاشت میکند. نامهای پارامتر و مقادیر رمزگشایی میشوند.
مثال
const getRequestQueryParameters = require('getRequestQueryParameters');
const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
// Handle the search query here.
const maxResults = queryParameters['max_results'];
}
نحو
getRequestQueryParameters();
اجازههای مرتبط
getRequestQueryString
پرسمان درخواست را بهعنوان رشتهای بدون علامت سؤال ابتدایی برمیگرداند، یا اگر نشانی وب درخواست شامل رشته پرسمان نباشد، رشتهای خالی برمیگرداند.
نمونه
const getRequestQueryString = require('getRequestQueryString');
const queryString = getRequestQueryString();
if (queryString !== '') {
// Handle the query string.
}
نحو
getRequestQueryString();
اجازههای مرتبط
getTimestamp
منسوخشده. getTimestampMillis ترجیح داده میشود.
عددی را برمیگرداند که نشاندهنده زمان فعلی برحسب میلیثانیه از تاریخ یونیکس است، همانطور که توسط Date.now() برگردانده شده است.
نحو
getTimestamp();
اجازههای مرتبط
هیچکدام.
getTimestampMillis
عددی را برمیگرداند که نشاندهنده زمان فعلی برحسب میلیثانیه از تاریخ یونیکس است، همانطور که توسط Date.now() برگردانده شده است.
نحو
getTimestampMillis();
اجازههای مرتبط
هیچکدام.
getType
رشتهای را برمیگرداند که نوع مقدار دادهشده را توصیف میکند.
| نوع ورودی | مقدار برگرداندهشده |
|---|---|
| رشته | 'string' |
| number | 'number' |
| منطقی | 'boolean' |
| null | 'null' |
| تعریفنشده | 'undefined' |
| آرایه | 'array' |
| شیء | 'object' |
| تابع | 'function' |
نمونه
const getType = require('getType');
const type = getType(value);
if (type === 'string') {
// Handle string input.
} else if (type === 'number') {
// Handle numeric input.
} else {
logToConsole('Unsupported input type: ', type);
}
نحو
getType(value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
value |
any | مقدار ورودی. |
اجازههای مرتبط
هیچکدام.
hmacSha256
امضای کدبندیشدهای را بااستفاده از «کد اصالتسنجی پیام مبتنی بر درهمسازی» (HMAC) با SHA-256 محاسبه میکند. بهطور پیشفرض روی کدبندی base64url تنظیم شده است.
برای استفاده از این «میانای برنامهسازی کاربردی»، متغیر محیطی SGTM_CREDENTIALS را در سرور
روی مسیر فایل کلید JSON کدبندیشده UTF-8 با قالب زیر تنظیم کنید:
{
"keys": {
"key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
"key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
...
}
}
مقادیر کلیدهای HMAC کدبندیشده با base64 هستند. نوشتار JSON نباید با نشانگر ترتیب بایت شروع شود.
نمونه
const hmacSha256 = require('hmacSha256');
const toBase64 = require('toBase64');
const header = toBase64('{"alg":"HS256","typ":"JWT"}', {urlEncoding: true});
const claim = toBase64('{"sub":"1234567890","iat":1698164946}', {urlEncoding: true});
const signature = hmacSha256(header + '.' + claim, 'key1');
const jwt = header + "." + claim + '.' + signature;
نحو
hmacSha256(data, keyId, options)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
data |
رشته | دادهها برای محاسبه مقدار HMAC. |
keyId
|
رشته | شناسه کلید از فایل کلید JSON که به کلید مورد استفاده اشاره میکند. |
options
|
شیء | پیکربندی اختیاری میانای برنامهسازی کاربردی. (گزینههای زیر را ببینید.) |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
outputEncoding
|
رشته | قالب کدبندی را برای مقدار برگشتی مشخص میکند. قالبهای پشتیبانیشده عبارتاند از hex،
base64، یا base64url. اگر مشخص نشده باشد، بهطور پیشفرض روی
base64url تنظیم میشود. |
اجازههای مرتبط
پایینترین نسخه تصویر
isRequestMpv1
اگر درخواست ورودی درخواست Measurement Protocol V1 باشد، true را برمیگرداند، یا
درغیراینصورت false را برمیگرداند.
مثال
const isRequestMpv1 = require('isRequestMpv1');
if (isRequestMpv1()) {
// Handle Measurement Protocol V1 request.
const events = extractEventsFromMpv1();
}
نحو
isRequestMpv1();
اجازههای مرتبط
هیچکدام.
isRequestMpv2
اگر درخواست ورودی درخواست Measurement Protocol V2 باشد، true را برمیگرداند، یا
درغیراینصورت false را برمیگرداند.
مثال
const isRequestMpv2 = require('isRequestMpv2');
if (isRequestMpv2()) {
// Handle Measurement Protocol V2 request.
const events = extractEventsFromMpv2();
}
نحو
isRequestMpv2();
اجازههای مرتبط
هیچکدام.
logToConsole
متغیر(های) مستقل آن را در کنسول ثبت میکند.
این گزارشها در کاوشگر گزارشها در «کنسول Google Cloud» قابلمشاهده است.
از Logs Explorer پُرسمان logName =~ "stdout" را اجرا کنید تا ورودیهای گزارش ایجادشده توسط این API را ببینید.
نمونه
const logToConsole = require('logToConsole');
const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);
نحو
logToConsole(argument1[, argument2, ...]);
پارامترها
این میانای برنامهسازی کاربردی یک یا چند متغیر مستقل میگیرد که هرکدام درصورت لزوم به رشته تبدیل میشوند و در کنسول ثبت میشوند.
اجازههای مرتبط
makeInteger
مقدار دادهشده را به عدد (عدد صحیح) تبدیل میکند.
نحو
makeInteger(value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
value |
هر نوع | مقداری که باید تبدیل شود. |
اجازههای مرتبط
هیچکدام.
makeNumber
مقدار دادهشده را به عدد تبدیل میکند.
نحو
makeNumber(value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
value |
هر نوع | مقداری که باید تبدیل شود. |
اجازههای مرتبط
هیچکدام.
makeString
مقدار دادهشده را بهصورت رشته برمیگرداند.
نحو
makeString(value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
value |
هر نوع | مقداری که باید تبدیل شود. |
اجازههای مرتبط
هیچکدام.
makeTableMap
شیء جدول سادهای را با دو ستون به Map تبدیل میکند. از این برای تغییر فیلد الگوی SIMPLE_TABLE با دو ستون به قالبی قابلمدیریتتر استفاده میشود.
برای مثال، این تابع میتواند شیء جدول را تبدیل کند:
[
{'key': 'k1', 'value': 'v1'},
{'key': 'k2', 'value': 'v2'}
]
در نقشه:
{
'k1': 'v1',
'k2': 'v2'
}
یک شیء برمیگرداند: Map تبدیلشده جفتهای کلید-مقدار به آن اضافه شده است، یا درغیراینصورت null.
نحو
makeTableMap(tableObj, keyColumnName, valueColumnName);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
tableObj |
فهرست |
شیء جدول برای تبدیل کردن. این فهرستی از نقشهها است که هر
Map نشاندهنده یک ردیف در جدول است. هر نام ویژگی در یک
شیء ردیف، نام ستون است و مقدار ویژگی، مقدار ستون
در ردیف است.
|
keyColumnName |
رشته |
نام ستونی که مقادیر آن در Map تبدیلشده به کلید تبدیل میشود.
|
valueColumnName |
رشته |
نام ستونی که مقادیر آن به مقادیر در Map تبدیلشده تبدیل خواهد شد.
|
اجازههای مرتبط
هیچکدام.
parseUrl
شیئی را برمیگرداند که حاوی همه بخشهای تشکیلدهنده نشانی وب دادهشده است، مشابه
شیء URL.
این میانای برنامهسازی کاربردی برای هر نشانی وب ناقصی undefined را برمیگرداند. برای نشانیهای وب با قالببندی صحیح،
فیلدهایی که در رشته نشانی وب وجود ندارند مقدار رشته خالی خواهند داشت،
یا در مورد searchParams، مقدار شیء خالی خواهند داشت.
شیء برگرداندهشده فیلدهای زیر را خواهد داشت:
{
href: string,
origin: string,
protocol: string,
username: string,
password: string,
host: string,
hostname: string,
port: string,
pathname: string,
search: string,
searchParams: Object<string, (string|Array)>,
hash: string,
}
مثال
const parseUrl = require('parseUrl');
const urlObject = parseUrl('https://abc:xyz@example.com:8080/foo?param=val%2Cue#bar');
نحو
parseUrl(url);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب کاملی که تجزیه خواهد شد. |
اجازههای مرتبط
هیچکدام.
returnResponse
پاسخی را که قبلاً توسط الگوهای دیگر بااستفاده از میاناهای برنامهسازی کاربردی که پاسخ را تغییر میدهند تنظیم شده است پاک میکند، ازجمله setCookie، setPixelResponse، setResponseBody، setResponseHeader، و setResponseStatus. بهطور پیشفرض روی رمز وضعیت HTTP 200، بدنه خالی، و بدون سرایند تنظیم شده است.
توصیه میشود که از این «میانای برنامهسازی کاربردی» در الگوی مشتری استفاده شود.
نحو
returnResponse();
نمونه
نمونه runContainer را ببینید.
اجازههای مرتبط
runContainer
منطق محتوی (متغیرها، راهاندازها، برچسبها) را در محدوده یک رویداد اجرا میکند. اگر این میانای برنامهسازی کاربردی درطول اجرای محفظه فراخوانده شود، محفظه دوباره اجرا میشود.
توابع برگشتی onComplete و onStart تابعی بهنام
bindToEvent دریافت میکنند. از bindToEvent برای اجرای API در بافت رویداد استفاده کنید.
برای جزئیات بیشتر، مثال addEventCallback را ببینید.
توصیه میشود که از این «میانای برنامهسازی کاربردی» در الگوی مشتری استفاده شود.
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
// Runs the container with a simple pageview event and then returns a response.
runContainer({'event_name': 'pageview'}, () => returnResponse());
نحو
runContainer(event, onComplete, onStart);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
event |
شیء | پارامترهای رویداد. |
onComplete |
تابع | فراخوانی که پساز پایان یافتن همه برچسبها فراخوانده میشود. |
onStart |
تابع | فراخوانی برگشتی که بلافاصله، قبلاز شروع فعال شدن برچسبها، فراخوانی میشود. |
اجازههای مرتبط
sendEventToGoogleAnalytics
رویداد تکی را بااستفاده از دادههای رویداد مشترک به Google Analytics ارسال میکند و
قولی را برمیگرداند که به شیئی با کلید location منتهی میشود یا
به شیئی با کلید reason رد میشود. مقصد، Google Analytics،
براساس شناسه سنجش در دادههای رویداد است.
فیلد location روی سرایند location تنظیم میشود، درصورت وجود.
نمونه
const logToConsole = require('logToConsole');
const sendEventToGoogleAnalytics = require('sendEventToGoogleAnalytics');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
// Sends an event to Google Analytics and returns failure if the request did not
// succeed. Additionally, if the request resulted in a redirect request, the
// code nominates a redirect response to be returned.
sendEventToGoogleAnalytics(event).then((response) => {
if (response.location) {
setResponseHeader('location', response.location);
setResponseStatus(302);
} else {
setResponseStatus(200);
}
data.gtmOnSuccess();
}).catch((error) => {
logToConsole(error.reason);
setResponseStatus(500);
data.gtmOnFailure();
});
نحو
sendEventToGoogleAnalytics(event);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
event |
شیء | رویداد در قالب «طرحواره یکپارچه». |
اجازههای مرتبط
به اجازه send_http نیاز دارد. اجازه باید بهگونهای پیکربندی شود که دسترسی به حداقل موارد زیر را مجاز کند:
- مجاز کردن Google Domains
sendHttpGet
درخواست HTTP GET را به نشانی وب مشخصشده ارسال میکند و قولی را برمیگرداند که پساز تکمیل درخواست یا اتمام مهلت، با نتیجه حل میشود.
نتیجه حلشده شیئی است که حاوی سه کلید است: statusCode، headers،
و body. اگر درخواست ناموفق باشد (برای نمونه، نشانی وب نامعتبر، مسیری به میزبان وجود ندارد،
مذاکره SSL ناموفق است، و غیره)، وعده با {reason:
'failed'} رد خواهد شد. اگر گزینه timeout تنظیم شده باشد و مهلت زمانی درخواست بهپایان برسد،
قول با این پیام رد خواهد شد: {reason: 'timed_out'}
مثال
const sendHttpGet = require('sendHttpGet');
// Returns the response body as the value for a variable.
return sendHttpGet('https://example.com/item/' + data.itemId, {
headers: {key: 'value'},
timeout: 500,
}).then((result) => result.body, () => undefined);
نحو
sendHttpGet(url[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب درخواستشده. |
options
|
شیء | گزینههای درخواست اختیاری. (گزینهها را در زیر ببینید.) |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
headers |
رشته | سرایندهای درخواست اضافی. |
timeout
|
عدد | مهلت زمانی، به میلیثانیه، قبلاز اینکه
درخواست لغو شود. پیشفرضها به 15000. |
authorization
|
شیء | شیء مجوز اختیاری از
تماس با getGoogleAuth برای گنجاندن
سرایندهای مجوز هنگام درخواست
به googleapis.com. |
اجازههای مرتبط
sendHttpRequest
درخواست HTTP را به نشانی وب مشخصشده ارسال میکند و وعدهای برمیگرداند که با پاسخ پساز تکمیل یا اتمام زمان درخواست حلوفصل میشود.
نتیجه حلشده شیئی است که حاوی سه کلید است: statusCode، headers،
و body. اگر درخواست ناموفق بود (مثلاً نشانی وب نامعتبر، عدم وجود مسیر به میزبان،
ناموفق بودن مذاکره SSL، و غیره)، وعده با این مورد رد خواهد شد: {reason:
'failed'}. اگر گزینه timeout تنظیم شده باشد و مهلت زمانی درخواست بهپایان برسد،
قول با این مورد رد خواهد شد: {reason: 'timed_out'}
مثال
const sendHttpRequest = require('sendHttpRequest');
const setResponseBody = require('setResponseBody');
const setResponseHeader = require('setResponseHeader');
const setResponseStatus = require('setResponseStatus');
const postBody = 'interaction=click&campaign=promotion&medium=email';
// Sends a POST request and nominates response based on the response to the POST
// request.
sendHttpRequest('https://example.com/collect', {
headers: {key: 'value'},
method: 'POST',
timeout: 500,
}, postBody).then((result) => {
setResponseStatus(result.statusCode);
setResponseBody(result.body);
setResponseHeader('cache-control', result.headers['cache-control']);
});
نحو
sendHttpRequest(url[, options[, body]]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب درخواستشده. |
options
|
شیء | گزینههای درخواست اختیاری. (گزینهها را در زیر ببینید.) |
body |
رشته | متن درخواست اختیاری. |
گزینهها
| گزینه | نوع | شرح |
|---|---|---|
headers |
رشته | سرایندهای درخواست اضافی. |
method |
شیء | روش درخواست. پیشفرضها به GET. |
timeout
|
number | مهلت زمانی، به میلیثانیه، قبلاز اینکه
درخواست لغو شود. پیشفرضها به 15000. |
authorization
|
شیء | شیء مجوز اختیاری از
تماس با getGoogleAuth برای افزودن
سرایندهای مجوز هنگام درخواست
به googleapis.com. |
اجازههای مرتبط
sendPixelFromBrowser
فرمانی به مرورگر ارسال میکند تا نشانی وب ارائهشده را بهعنوان برچسب <img> بار کند. این پروتکل فرمان در برچسب Google برای Google Analytics و برچسبهای وب Google Analytics: رویداد GA پشتیبانی میشود. باید نشانی وب حامل سرور را پیکربندی کنید. برای جزئیات بیشتر، دستورالعملها را ببینید.
اگر درخواست ورودی از پروتکل فرمان پشتیبانی نکند یا اگر پاسخ قبلاً پاکسازی شده باشد، این API مقدار false را برمیگرداند. درغیراینصورت، این API
مقدار true را برمیگرداند.
مثال:
const sendPixelFromBrowser = require('sendPixelFromBrowser');
sendPixelFromBrowser('https://example.com/?id=123');
نحو
sendPixelFromBrowser(url)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
url |
رشته | نشانی وب برای ارسال به مرورگر. |
اجازههای مرتبط
setCookie
کوکی را با گزینههای مشخصشده تنظیم یا حذف میکند.
برای حذف کوکی، باید کوکیای با همان مسیر و دامنهای که کوکی با آن ایجاد شده است تنظیم کنید و مقدار انقضایی را که در گذشته است به آن اختصاص دهید، برای مثال "Thu, 01 Jan 1970 00:00:00 GMT".
توجه داشته باشید که برای اینکه پاسخ به مشتری برگردانده شود، باید returnResponse فراخوانی شود.
نمونه
const setCookie = require('setCookie');
// Sets an httpOnly cookie with a max-age of 3600.
setCookie('cookieName', 'cookieValue', {'max-age': 3600, httpOnly: true});
نحو
setCookie(name, value[, options[, noEncode]]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام کوکی. نام حروفحساس نیست. |
value |
رشته | مقدار کوکی. |
options |
شیء | ویژگیهای اختیاری کوکی:domain، expires، fallbackDomain،httpOnly، max- age، path، secure، وsameSite. (گزینهها را در زیر ببینید.) |
noEncode |
مقدار منطقی |
اگر درست باشد، مقدار کوکی کدگذاری نخواهد شد. بهطور پیشفرض
false است.
|
domain: میزبانی که کوکی به آن ارسال خواهد شد. اگر روی مقدار ویژه «خودکار» تنظیم شود، میزبان بهطور خودکار بااستفاده از استراتژی زیر محاسبه خواهد شد:
- eTLD+1 از سرصفحه
Forwarded، درصورت وجود. - eTLD+1 از سرصفحه
X-Forwarded-Host، درصورت وجود. - eTLD+1 از سرصفحه
Host.
- eTLD+1 از سرصفحه
expires: حداکثر طول عمر کوکی. این باید رشته تاریخ با قالب UTC باشد، برای نمونه «Sat, 26 Oct 1985 08:21:00 GMT». اگر هر دو
expiresوmax-ageتنظیم شده باشند،max-ageاولویت دارد.httpOnly: اگر
trueباشد، جاوا اسکریپت را از دسترسی به کوکی منع میکند.max-age: تعداد ثانیهها تا انقضای کوکی. عدد صفر یا منفی کوکی را فوراً منقضی میکند. اگر هر دو
expiresوmax-ageتنظیم شده باشند،max-ageاولویت دارد.path: مسیری که باید در نشانی وب درخواستی وجود داشته باشد، درغیراینصورت مرورگر سرصفحه Cookie را ارسال نخواهد کرد.
امن: اگر روی
trueتنظیم شود، کوکی فقط زمانی به سرور ارسال میشود که درخواست از یک نقطه پایانیhttps:انجام شود.sameSite: ادعا میکند که کوکی نباید با درخواستهای میانمبدأ ارسال شود. باید
'strict'،'lax'، یا'none'باشد.
اجازههای مرتبط
setPixelResponse
بدنه پاسخ را روی GIF ۱×۱ تنظیم میکند، سرایند Content-Type را روی «image/gif» تنظیم میکند، سرایندهای ذخیرهسازی موقت را طوری تنظیم میکند که نمایندههای کاربر پاسخ را ذخیره موقت نکنند، و وضعیت پاسخ را روی ۲۰۰ تنظیم میکند.
توجه داشته باشید که returnResponse باید برای پاسخ فراخوانی شود تا به مشتری برگردانده شود.
نحو
setPixelResponse();
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
دسترسی به حداقل موارد زیر را مجاز کند:
headers- باید کلیدهای زیر را مجاز کندcontent-typecache-controlexpirespragma
bodystatus
setResponseBody
بدنه پاسخ را روی آرگومان تنظیم میکند.
توجه داشته باشید که برای اینکه پاسخ به مشتری برگردانده شود، باید returnResponse فراخوانی شود.
نحو
setResponseBody(body[, encoding]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
body |
رشته | مقداری که باید بهعنوان بدنه پاسخ تنظیم شود. |
encoding |
رشته |
کدبندی نویسه بدنه پاسخ (بهطور پیشفرض
'utf8'). مقادیر پشتیبانیشده شامل 'ascii'،
'utf8'، 'utf16le'، 'ucs2'،
'base64'، 'latin1'، 'binary'،
و 'hex' است.
|
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
دسترسی به حداقل موارد زیر را مجاز کند:
body
setResponseHeader
سرصفحهای را در پاسخی که برگردانده میشود تنظیم میکند. اگر سرایندی با این نام (غیرحساس به حروف بزرگ و کوچک) قبلاً توسط این میانای برنامهسازی کاربردی تنظیم شده باشد، فراخوانی بعدی مقدار تنظیمشده توسط فراخواننده قبلی را بازنویسی یا پاک خواهد کرد.
توجه داشته باشید که برای ارسال پاسخ به مشتری، باید returnResponse فراخوانی شود.
نحو
setResponseHeader(name, value);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
name |
رشته | نام سرایند. نامهای سرایند HTTP حروفغیرحساس هستند، بنابراین نام سرایند به حروف کوچک تبدیل خواهد شد. |
value |
رشته تعریفنشده | مقدار سرایند. اگر تهی یا تعریفنشده باشد، این کار سرصفحه نامدار را از پاسخی که برگردانده خواهد شد پاک میکند. |
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
دسترسی به حداقل موارد زیر را مجاز کند:
headers
setResponseStatus
کد وضعیت HTTP پاسخی را که برگردانده خواهد شد تنظیم میکند.
توجه داشته باشید که برای اینکه پاسخ به مشتری برگردانده شود، باید returnResponse فراخوانی شود.
نحو
setResponseStatus(statusCode);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
statusCode |
عدد | رمز وضعیت HTTP که باید برگردانده شود. |
اجازههای مرتبط
به اجازه access_response نیاز دارد. اجازه باید بهگونهای پیکربندی شود که
حداقل به موارد زیر اجازه دسترسی دهد:
status
sha256
خلاصه SHA-256 ورودی را محاسبه میکند و یک فراخوانی برگشتی با خلاصه کدبندیشده در base64 را فراخوانی میکند، مگراینکه شیء options کدبندی خروجی متفاوتی را مشخص کند.
این امضای میانای برنامهسازی کاربردی و رفتار آن با میانای برنامهسازی کاربردی sha256 برای محتویهای وب مطابقت دارد؛
بااینحال، «الگوهای سفارشی» در محتویهای سرور باید از
میانای برنامهسازی کاربردی sha256Sync برای کد سادهتر استفاده کنند.
مثال
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256 = require('sha256');
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
});
sha256('inputString', (digest) => {
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digest));
}, {outputEncoding: 'hex'});
نحو
sha256(input, onSuccess, options = undefined);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
input |
رشته | رشتهای که باید درهمسازی شود. |
onSuccess |
تابع |
با خلاصه حاصل، کدبندیشده در base64، فراخوانی میشود، مگراینکه
شیء options کدبندی خروجی متفاوتی را مشخص کند.
|
options |
شیء |
شیء گزینههای اختیاری برای مشخص کردن کدبندی خروجی. اگر
مشخص شده باشد، شیء باید حاوی کلید outputEncoding
با مقدار یکی از base64 یا hex باشد.
|
اجازههای مرتبط
هیچکدام.
sha256Sync
خلاصه SHA-256 ورودی را محاسبه و برمیگرداند، کدبندیشده در base64،
مگراینکه شیء options کدبندی خروجی متفاوتی را مشخص کند.
نمونه
const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');
const sha256Sync = require('sha256Sync');
const digestBase64 = sha256Sync('inputString');
const digestHex = sha256Sync('inputString', {outputEncoding: 'hex'});
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestBase64));
sendHttpGet('https://example.com/collect?id=' + encodeUriComponent(digestHex));
نحو
sha256Sync(input, options = undefined);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
input |
رشته | رشتهای که باید درهمسازی شود. |
options |
شیء |
شیء گزینههای اختیاری برای مشخص کردن کدبندی خروجی. اگر
مشخص شده باشد، شیء باید حاوی کلید outputEncoding
با مقدار یکی از base64 یا hex باشد.
|
اجازههای مرتبط
هیچکدام.
templateDataStorage
شیئی را با روشهایی برای دسترسی به فضای ذخیرهسازی دادههای الگو برمیگرداند. فضای ذخیرهسازی دادههای الگو امکان همرسانی دادهها را در سراسر اجراهای یک الگو فراهم میکند. دادههای ذخیرهشده در فضای ذخیرهسازی دادههای الگو در سرور اجراکننده محفظه باقی میماند. در بیشتر موارد، چندین سرور درحال اجرای محتوی هستند، بنابراین ذخیره کردن دادهها در فضای ذخیرهسازی دادههای الگو تضمین نمیکند که هر درخواست بعدی به دادهها دسترسی داشته باشد.
«داده» در نام «templateDataStorage» به این واقعیت اشاره دارد که فقط انواع دادههای ساده و غیرتابع را میتوان بااستفاده از این API ذخیره کرد. هر تابع یا ارجاع به تابعی که به میانای برنامهسازی کاربردی ارسال شود، بهجای آن بهعنوان null ذخیره خواهد شد.
نحو
const templateDataStorage = require('templateDataStorage');
// Returns a copy of the value stored for the given key, or null if nothing
// is stored with that key.
templateDataStorage.getItemCopy(key);
// Stores a copy of the value for the given key (or removes the data stored
// for the given key if the input value is null).
templateDataStorage.setItemCopy(key, value);
// Removes the value stored for the given key, if present.
templateDataStorage.removeItem(key);
// Deletes all values stored for the current template.
templateDataStorage.clear();
مثال
const sendHttpGet = require('sendHttpGet');
const setResponseBody = require('setResponseBody');
const setResponseStatus = require('setResponseStatus');
const templateDataStorage = require('templateDataStorage');
// Check to see if the item is in the cache.
const cachedBody = templateDataStorage.getItemCopy(data.key);
if (cachedBody) {
setResponseBody(cachedBody);
data.gtmOnSuccess();
return;
}
sendHttpGet(data.url).then((result) => {
if (result.statusCode >= 200 && result.statusCode < 300) {
setResponseBody(result.body);
templateDataStorage.setItemCopy(data.key, result.body);
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
setResponseStatus(result.statusCode);
});
اجازههای مرتبط
testRegex
رشتهای را دربرابر عبارت باقاعدهای که ازطریق createRegex API ایجاد شده است آزمایش میکند. اگر عبارت باقاعده مطابقت داشته باشد،
true را برمیگرداند. درغیراینصورت false را برمیگرداند.
عبارت باقاعده ایجادشده با پرچم سراسری حالتدار است. برای جزئیات بیشتر، مستندسازی RegExp را ببینید.
مثال
const createRegex = require('createRegex');
const testRegex = require('testRegex');
const domainRegex = createRegex('\\w+\\.com', 'i');
// createRegex returns null if the regex is invalid or Re2 is not available.
if (domainRegex === null) return;
// Returns true
testRegex(domainRegex, 'example.com/foobar');
نحو
testRegex(regex, string);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
regex |
شیء | عبارت باقاعده برای آزمایش کردن، که از میانای برنامهسازی کاربردی createRegex برگردانده شده است. |
string |
رشته | رشته آزمایشی برای آزمایش. |
اجازههای مرتبط
هیچکدام.
toBase64
رشتهای را بهعنوان base64 یا base64url کدبندی میکند. بهطور پیشفرض از کدبندی base64 استفاده میشود.
نحو
toBase64(input, options);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
input |
رشته | رشته برای کدبندی کردن. |
options
|
شیء | پیکربندی اختیاری میانای برنامهسازی کاربردی. (گزینهها را در زیر ببینید.) |
گزینهها
| گزینه | نوع | شرح | حداقل نسخه |
|---|---|---|---|
urlEncoding
|
مقدار منطقی | اگر درست باشد، نتیجه بااستفاده از قالب base64url کدبندی خواهد شد. |
۱.۰.۰ |
نمونه
const toBase64 = require('toBase64');
const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});
اجازههای مرتبط
هیچکدام.
BigQuery
شیئی را برمیگرداند که کارکردهای BigQuery را ارائه میدهد.
تابع BigQuery.insert اجازه میدهد دادهها در جدول BigQuery نوشته شود. این روش یک promise برمیگرداند که درصورت درج موفقیتآمیز حل میشود یا درصورت بروز خطا رد میشود.
وقتی درج با موفقیت انجام میشود، وعده بدون هیچ آرگومانی حل میشود.
وقتی درج ناموفق باشد، تعهد با فهرستی از اشیایی که حاوی دلیل خطا و احتمالاً شیء ردیف است رد میشود. ممکن است بخشی از درخواست با موفقیت تکمیل شود، درحالیکه بخشهای دیگر تکمیل نشوند. در این حالت، promise با فهرستی از خطاها برای هر ردیف با یک شیء ردیف رد میشود تا به تشخیص ردیفهای درجشده کمک کند (به نمونههای خطا در زیر مراجعه کنید). برای اطلاعات بیشتر، به اسناد BigQuery درباره پیامهای خطا مراجعه کنید.
نحو
BigQuery.insert(connectionInfo, rows[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
connectionInfo |
شیء |
اطلاعات لازم برای اتصال به جدول BigQuery را تعریف میکند. یک پارامتر اختیاری و دو پارامتر الزامی وجود دارد:
|
rows |
آرایه | ردیفهایی که باید در جدول درج شود. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتند از: ignoreUnknownValues و skipInvalidRows. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
ignoreUnknownValues |
منطقی | اگر روی true تنظیم شده باشد، ردیفهایی را که حاوی مقادیری هستند که با طرحواره مطابقت ندارند بپذیرد. مقادیر ناشناخته نادیده گرفته میشوند. پیشفرضها
به false. |
skipInvalidRows |
منطقی | اگر روی true تنظیم شده باشد، همه ردیفهای معتبر درخواست را درج کنید،
حتی اگر ردیفهای نامعتبر وجود داشته باشد. پیشفرضها به false. |
خطای پیدا نشدن واحد به این معنی است که احتمالاً نسخه قدیمیتری از تصویر ما در سراسر سرور شما اجرا میشود که هنوز واحد BigQuery را دربرنگرفته است. لطفاً محتوی سرورتان را با همان تنظیمات بااستفاده از دستورگان پیادهسازی ما دوباره پیادهسازی کنید. پساز اتمام عملیات، این ماژول بهطور خودکار اضافه خواهد شد.
خطای غیردرج معمولاً یک شیء خطا با کلید reason دارد:
[{reason: 'invalid'}]
خطای درج میتواند شامل چندین شیء خطا با یک آرایه errors
و یک شیء row باشد. در زیر نمونهای از پاسخ خطا برای درج دو ردیف که فقط یکی از آنها خطا دارد آورده شده است:
[
{
"errors": [
{
"reason":"invalid"
}
],
"row": {
"string_col":"otherString",
"number_col":-3,
"bool_col":3
}
},
{
"errors": [
{
"reason":"stopped"
}
],
"row": {
"string_col":"stringValue",
"number_col":5,
"bool_col:false
}
}
]
نمونه
const BigQuery = require('BigQuery');
const connectionInfo = {
'projectId': 'gcp-cloud-project-id',
'datasetId': 'destination-dataset',
'tableId': 'destination-table',
};
const rows = [{
'column1': 'String1',
'column2': 1234,
}];
const options = {
'ignoreUnknownValues': true,
'skipInvalidRows': false,
};
BigQuery.insert(connectionInfo, rows, options)
.then(data.gtmOnSuccess, data.gtmOnFailure);
اجازههای مرتبط
Firestore
شیئی را برمیگرداند که عملکردهای Firestore را ارائه میدهد.
این API فقط از Firestore در حالت بومی پشتیبانی میکند، نه از Firestore در حالت Datastore. همچنین، این میانای برنامهسازی کاربردی فقط از پایگاه داده پیشفرض پشتیبانی میکند.
Firestore.read
تابع Firestore.read دادهها را از سند Firestore میخواند و
قولی را برمیگرداند که به شیء حاوی دو کلید
id و data تبدیل میشود. اگر سند وجود نداشته باشد، وعده با
شیئی حاوی کلید reason برابر با not_found رد میشود.
نحو
Firestore.read(path[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
path |
رشته | مسیر سند یا مجموعه. نباید با «/» شروع یا تمام شود. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، disableCache، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
projectId از متغیر محیطی
GOOGLE_CLOUD_PROJECT بازیابی میشود،
بهشرطی که تنظیم اجازه
access_firestore
برای شناسه پروژه روی * یا
GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر محفظه سرور در Google Cloud اجرا میشود،
GOOGLE_CLOUD_PROJECT ازقبل روی شناسه پروژه Google Cloud
تنظیم شده است. |
disableCache |
منطقی | اختیاری. تعیین میکند که حافظه پنهان غیرفعال شود یا نه. ذخیره در حافظه نهان بهطور پیشفرض فعال است، که نتایج را برای مدت درخواست در حافظه نهان ذخیره میکند. |
transaction |
رشته | اختیاری. مقدار بازیابیشده از Firestore.runTransaction(). عملیات را برای استفاده در تراکنش علامتگذاری میکند. |
نمونه
const Firestore = require('Firestore');
return Firestore.read('collection/document', {
projectId: 'gcp-cloud-project-id',
}).then((result) => result.data.key, () => undefined);
Firestore.write
تابع Firestore.write دادهها را در سند یا مجموعه Firestore مینویسد. اگر مسیر به مجموعهای باشد، سندی با شناسه تولیدشده تصادفی ایجاد خواهد شد. اگر مسیر به یک سند باشد و آن سند وجود نداشته باشد،
ایجاد خواهد شد. این API یک promise برمیگرداند که به شناسه سند اضافهشده یا اصلاحشده تبدیل میشود. اگر از گزینه تراکنش استفاده شود، API همچنان
وعده برمیگرداند، اما چون نوشتنها دستهای هستند، شناسه را برنمیگرداند.
نحو
Firestore.write(path, input[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
path |
رشته | مسیر سند یا مجموعه. نباید با «/» شروع یا تمام شود. |
input |
شیء | مقداری که باید در سند نوشته شود. اگر گزینه ادغام تنظیم شده باشد، میانای برنامهسازی کاربردی کلیدهای ورودی را در سند ادغام میکند. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، merge، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
projectId از متغیر محیطی
GOOGLE_CLOUD_PROJECT بازیابی میشود،
بهشرطی که تنظیم اجازه
access_firestore
برای شناسه پروژه روی * یا
GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر محتوی سرور در
Google Cloud اجرا میشود، GOOGLE_CLOUD_PROJECT ازقبل روی
شناسه پروژه Google Cloud تنظیم شده است. |
merge |
منطقی | اختیاری. اگر روی
true تنظیم شده باشد، کلیدها را از ورودی در سند ادغام کنید،
درغیراینصورت، روش کل سند را لغو خواهد کرد. پیشفرضها به
false. |
transaction |
رشته | اختیاری. مقدار بازیابیشده از Firestore.runTransaction(). عملیات را برای استفاده در تراکنش علامتگذاری میکند. |
نمونه
const Firestore = require('Firestore');
const input = {key1: 'value1', key2: 12345};
Firestore.write('collection/document', input, {
projectId: 'gcp-cloud-project-id',
merge: true,
}).then((id) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
Firestore.query
تابع Firestore.query مجموعه دادهشده را پُرسمان میکند و
قولی را برمیگرداند که به آرایهای از اسناد Firestore که با شرایط پُرسمان مطابقت دارند
حل میشود. شیء سند Firestore همان است که در بالا در
Firestore.read فهرست شده است. اگر هیچ سندی با شرایط پُرسمان مطابقت نداشته باشد،
وعده برگشتی به آرایه خالی تبدیل خواهد شد.
نحو
Firestore.query(collection, queryConditions[, options]);
| پارامتر | نوع | شرح |
|---|---|---|
collection |
رشته | مسیر مجموعه. نباید با «/» شروع یا تمام شود. |
queryConditions |
آرایه | آرایهای از شرایط پُرسمان. هر پُرسمان بهصورت آرایهای با سه مقدار ارائه میشود: کلید، عملگر، و مقدار موردانتظار. E.g.:
[[‘id’, ‘<’, ‘5’], [‘state’, ‘==’, ‘CA’]]. شرایط باهم AND میشوند تا نتیجه پُرسمان ایجاد شود. لطفاً برای فهرست اپراتورهای پُرسمان سازگار، به اپراتورهای پُرسمان Firestore مراجعه کنید. |
options |
شیء | گزینههای درخواست اختیاری. گزینههای پشتیبانیشده عبارتاند از: projectId، disableCache، limit، و transaction. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
projectId از متغیر محیطی
GOOGLE_CLOUD_PROJECT بازیابی میشود، بهشرطی که
تنظیم اجازه access_firestore
برای شناسه پروژه روی * یا
GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر محفظه سرور در Google Cloud اجرا میشود،
GOOGLE_CLOUD_PROJECT ازقبل روی شناسه پروژه Google Cloud
تنظیم شده است. |
disableCache |
منطقی | اختیاری. تعیین میکند که حافظه پنهان غیرفعال شود یا نه. ذخیره در حافظه نهان بهطور پیشفرض فعال است، که نتایج را برای مدت درخواست در حافظه نهان ذخیره میکند. |
limit |
عدد | اختیاری. حداکثر تعداد نتایج برگرداندهشده توسط پُرسمان را تغییر میدهد، مقدار پیشفرض ۵ است. |
transaction |
رشته | اختیاری. مقدار بازیابیشده از Firestore.runTransaction(). عملیات را برای استفاده در تراکنش علامتگذاری میکند. |
نمونه
const Firestore = require('Firestore');
const queries = const queries = [['id', '==', '5']];
return Firestore.query('collection', queries, {
projectId: 'gcp-cloud-project-id',
limit: 1,
}).then((documents) => documents[0].data.key, () => undefined);
Firestore.runTransaction
تابع Firestore.runTransaction به کاربر امکان میدهد بهصورت اتمی از Firestore بخواند و در آن بنویسد. اگر نوشتن همزمان یا تداخل تراکنش دیگری
رخ دهد، تراکنش تا دو بار تکرار خواهد شد. اگر پساز سه تلاش ناموفق،
API با خطا رد خواهد کرد. این API یک وعده برمیگرداند که به آرایهای از شناسههای سند برای هر عملیات نوشتاری،
اگر تراکنش موفق باشد، تبدیل میشود و اگر ناموفق باشد، با خطا رد میشود.
نحو
Firestore.runTransaction(callback[, options]);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
callback |
تابع | فراخوانی برگشتی که با شناسه تراکنش رشتهای فراخوانی میشود. شناسه تراکنش را میتوان به فراخوانیهای API خواندن/نوشتن/پُرسمان منتقل کرد. این تابع برگشتی باید یک وعده برگرداند. فراخوانی برگشتی ممکن است تا سه بار قبلاز ناموفق شدن اجرا شود. |
options |
شیء | گزینههای درخواست اختیاری. تنها گزینه پشتیبانیشده projectId است. کلیدهای گزینه ناشناخته نادیده گرفته میشوند. (گزینهها را در زیر ببینید.) |
| پارامتر | نوع | شرح |
|---|---|---|
projectId |
رشته | اختیاری. شناسه پروژه Google Cloud Platform. اگر حذف شود،
projectId از متغیر محیطی
GOOGLE_CLOUD_PROJECT بازیابی میشود، بهشرطی که
تنظیم اجازه access_firestore
برای شناسه پروژه روی * یا
GOOGLE_CLOUD_PROJECT تنظیم شده باشد. اگر محفظه سرور در Google Cloud اجرا میشود،
GOOGLE_CLOUD_PROJECT ازقبل روی شناسه پروژه Google Cloud
تنظیم شده است. |
نمونه
const Firestore = require('Firestore');
const path = 'collection/document';
const projectId = 'gcp-cloud-project-id';
Firestore.runTransaction((transaction) => {
const transactionOptions = {
projectId: projectId,
transaction: transaction,
};
// Must return a promise.
return Firestore.read(path, transactionOptions).then((result) => {
const newInputCount = result.data.inputCount + 1;
const input = {key1: 'value1', inputCount: newInputCount};
return Firestore.write(path, input, transactionOptions);
});
}, {
projectId: projectId
}).then((ids) => {
data.gtmOnSuccess();
}, data.gtmOnFailure);
خطاهای موجود در هر تابع Firestore با شیء حاوی کلید reason رد خواهد شد:
Firestore.read(...).then(onSuccess, (error) => {
if (error.reason === 'unknown') {
// Handle the unknown error here.
}
});
دلایل خطا میتواند شامل کدهای خطای Firestore REST API باشد اما محدود به آنها نیست.
اجازههای مرتبط
JSON
شیئی را برمیگرداند که توابع JSON را ارائه میدهد.
تابع parse() رشته JSON را تجزیه میکند تا مقدار یا شیء توصیفشده توسط رشته را بسازد. اگر مقدار تجزیه نشود (برای نمونه، JSON بدشکل)،
تابع undefined را برمیگرداند. اگر مقدار ورودی رشته نباشد،
ورودی به رشته تبدیل میشود.
تابع stringify() ورودی را به رشته JSON تبدیل میکند. اگر مقدار
تجزیه نشود (مثلاً شیء دارای چرخه باشد)، روش
undefined را برمیگرداند.
مثال
const JSON = require('JSON');
// The JSON input string is converted to an object.
const object = JSON.parse('{"foo":"bar"}');
// The input object is converted to a JSON string.
const str = JSON.stringify({foo: 'bar'});
نحو
JSON.parse(stringInput);
JSON.stringify(value);
اجازههای مرتبط
هیچکدام.
Math
شیئی که Math تابع را ارائه میدهد.
نحو
const Math = require('Math');
// Retrieve the absolute value.
const absolute = Math.abs(-3);
// Round the input down to the nearest integer.
const roundedDown = Math.floor(3.6);
// Round the input up to the nearest integer.
const roundedUp = Math.ceil(2.2);
// Round the input to the nearest integer.
const rounded = Math.round(3.1);
// Return the largest argument.
const biggest = Math.max(1, 3);
// Return the smallest argument.
const smallest = Math.min(3, 5);
// Return the first argument raised to the power of the second argument.
const powerful = Math.pow(3, 1);
// Return the square root of the argument.
const unsquared = Math.sqrt(9);
پارامترها
پارامترهای تابع ریاضی به عدد تبدیل میشوند.
اجازههای مرتبط
هیچکدام.
Messages
میاناهای برنامهسازی کاربردی زیر باهم کار میکنند تا امکان انتقال پیام بین بخشهای مختلف یک محفظه را فراهم کنند.
addMessageListener
تابعی اضافه میکند که به پیام از نوع خاصی گوش میدهد. وقتی پیامی از آن نوع بااستفاده از
میانای برنامهسازی کاربردی sendMessage (معمولاً توسط برچسب) ارسال میشود،
بازخوان بهصورت همزمان اجرا خواهد شد. فراخوانی با دو پارامتر اجرا میشود:
messageType:stringmessage:Object
اگر فراخوانی در کارخواه اضافه شود، فراخوانی پیامها را در سراسر
همه رویدادهایی که کارخواه ایجاد میکند دریافت خواهد کرد. اگر فراخوانی برگشتی باید پیامها را فقط از رویداد خاصی دریافت کند،
این میانای برنامهسازی کاربردی را بااستفاده از bindToEvent در تابع onStart میانای برنامهسازی کاربردی runContainer
به رویداد متصل کنید. مثال را ببینید.
نحو
const addMessageListener = require('addMessageListener');
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever something sends a 'send_pixel' message.
});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
messageType |
رشته | نوع پیام برای گوش دادن. اگر مقدار رشته نباشد، به رشته تبدیل میشود. |
callback |
تابع | فراخوانی برگشتی برای اجرا شدن هنگام ارسال پیام از نوع پیام قابلاجرا. اگر کالبک تابع نباشد، میانای برنامهسازی کاربردی کاری انجام نخواهد داد. |
نمونه
const addMessageListener = require('addMessageListener');
const claimRequest = require('claimRequest');
const extractEventsFromMpv1 = require('extractEventsFromMpv1');
const returnResponse = require('returnResponse');
const runContainer = require('runContainer');
claimRequest();
addMessageListener('send_pixel', (messageType, message) => {
// This will be run whenever a tag sends a 'send_pixel' message.
});
const events = extractEventsFromMpv1();
let eventsCompleted = 0;
events.forEach((event, i) => {
runContainer(events[i], /* onComplete= */ () => {
if (events.length === ++eventsCompleted) {
returnResponse();
}
}, /* onStart= */ (bindToEvent) => {
if (i === 0) {
bindToEvent(addMessageListener)('send_pixel', (messageType, message) => {
// This will be called whenever a tag for the first event sends a
// 'send_pixel' message.
});
}
});
});
اجازههای مرتبط
به اجازه use_message نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
این موارد را مجاز کند:
- نوع پیام با
Usageازlistenیاlisten_and_send.
hasMessageListener
اگر شنونده پیام برای نوع پیام دادهشده اضافه شده باشد، مقدار «درست» را برمیگرداند. درغیراینصورت، «نادرست» را برمیگرداند.
نحو
const hasMessageListener = require('hasMessageListener');
hasMessageListener('send_pixel');
اجازههای مرتبط
هیچکدام.
sendMessage
پیامی از نوع مشخصشده به شنونده ثبتشده ارسال میکند. از این متغیر میتوان برای ارسال پیام از برچسب به مشتری که اجراکننده محتوا است استفاده کرد.
نحو
const sendMessage = require('sendMessage');
sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
messageType |
رشته | نوع پیامی که باید ارسال شود. اگر مقدار رشته نباشد، به رشته تبدیل میشود. |
message |
شیء | پیام برای ارسال. اگر پیام شیء نباشد، «میانای برنامهسازی کاربردی» کاری انجام نخواهد داد. |
اجازههای مرتبط
به اجازه use_message نیاز دارد. اجازه باید بهگونهای پیکربندی شود که حداقل
این موارد را مجاز کند:
- نوع پیام با
Usageازlisten_and_sendیاsend.
Object
شیئی را برمیگرداند که روشهای Object را ارائه میدهد.
روش keys() رفتار «کتابخانه استاندارد» Object.keys()
را ارائه میدهد. آرایهای از نامهای دارایی شمارشپذیر شیء دادهشده را به همان ترتیبی که حلقه for...in... برمیگرداند. اگر مقدار ورودی شیء نباشد، به شیء تبدیل میشود.
روش values() رفتار Object.values() «کتابخانه استاندارد» را ارائه میدهد. آرایهای از مقادیر ویژگی قابلشمارش خود شیء دادهشده را
به همان ترتیبی که حلقه for...in... انجام میدهد برمیگرداند. اگر مقدار ورودی شیء نباشد، به شیء تبدیل میشود.
روش entries() رفتار «کتابخانه استاندارد» Object.entries()
را ارائه میدهد. آرایهای از جفتهای [key, value] ویژگی قابلشمارش خود شیء دادهشده را با همان ترتیبی که حلقه for...in... انجام میدهد برمیگرداند. اگر
مقدار ورودی شیء نباشد، به شیء تبدیل خواهد شد.
روش freeze() رفتار «کتابخانه استاندارد» Object.freeze()
را ارائه میدهد. شیء منجمد دیگر قابلتغییر نیست؛ انجماد شیء مانع از
افزودن ویژگیهای جدید به آن، برداشتن ویژگیهای موجود،
و تغییر مقادیر ویژگیهای موجود میشود. freeze() همان شیء را که ارسال شده است برمیگرداند. آرگومان اولیه یا تهی بهعنوان
شیء منجمد درنظر گرفته میشود و برگردانده میشود.
روش delete() رفتار عملگر حذف
«کتابخانه استاندارد» را ارائه میدهد. کلید دادهشده را از شیء برمیدارد، مگراینکه شیء ثابت باشد.
مانند عملگر حذف Standard Library، اگر مقدار ورودی اول (objectInput) شیئی باشد که ثابت نشده است، حتی اگر مقدار ورودی دوم (keyToDelete) کلیدی را مشخص کند که وجود ندارد، true را برمیگرداند. در همه موارد دیگر، false را برمیگرداند. بااینحال، این عملگر با عملگر حذف «کتابخانه استاندارد»
در موارد زیر تفاوت دارد:
-
keyToDeleteنمیتواند رشتهای با جداکننده نقطه باشد که کلید تودرتویی را مشخص میکند. - نمیتوان از
delete()برای برداشتن عناصر از آرایه استفاده کرد. - از
delete()نمیتوان برای برداشتن هیچ داراییای از دامنه جهانی استفاده کرد.
نحو
Object.keys(objectInput)
Object.values(objectInput)
Object.entries(objectInput)
Object.freeze(objectInput)
Object.delete(objectInput, keyToDelete)
پارامترها
Object.keys
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | هر | شیئی که کلیدهای آن فهرست میشود. اگر ورودی شیء نباشد، به شیء تبدیل خواهد شد. |
Object.values
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که مقادیر آن باید شمارش شود. اگر ورودی شیء نباشد، به شیء تبدیل میشود. |
Object.entries
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که جفتهای کلید/مقدار آن باید شمارش شود. اگر ورودی شیء نباشد، به شیء تبدیل میشود. |
Object.freeze
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیء موردنظر برای ثابت کردن. اگر ورودی شیء نباشد، بهعنوان شیء ثابت درنظر گرفته میشود. |
Object.delete
| پارامتر | نوع | شرح |
|---|---|---|
| objectInput | any | شیئی که کلید آن باید حذف شود. |
| keyToDelete | رشته | کلید سطح بالا برای حذف. |
نمونه
const Object = require('Object');
// The keys of an object are enumerated in an array.
const keys = Object.keys({foo: 'bar'});
// The values of an object are enumerated in an array.
const values = Object.values({foo: 'bar'});
// The key/value pairs of an object are enumerated in an array.
const entries = Object.entries({foo: 'bar'});
// The input object is frozen.
const frozen = Object.freeze({foo: 'bar'});
// The key is removed from the input object.
const obj1 = {deleteme: 'value'};
Object.delete(obj1, 'deleteme');
// Only a top-level key can be specified as the key to delete.
const obj2 = {nested: {key: 'value'}};
Object.delete(obj2, 'nested.key'); // This has no effect.
Object.delete(obj2.nested, 'key'); // This deletes the nested key.
Promise
شیئی را برمیگرداند که روشهایی برای تعامل با وعدهها ارائه میدهد.
«قولها» ازنظر عملکردی معادل قولهای جاوا اسکریپت هستند. هر نمونه سه روش دارد که «وعدهای» را برمیگرداند که وقتی وعدهای محقق میشود، امکان انجام کنشهای بیشتر را فراهم میکند:
.then()- هم پروندههای حلشده و هم پروندههای ردشده را مدیریت میکند. دو بازخوان بهعنوان پارامتر میگیرد: یکی برای حالت موفقیت و یکی برای حالت شکست..catch()- فقط به موارد ردشده رسیدگی میکند. یک تماس برگشتی را بهعنوان پارامتر میگیرد..finally()- روشی برای اجرای کد ارائه میدهد، چه وعده حل شده باشد یا رد شده باشد. یک پاسخ تماس را بهعنوان پارامتری میگیرد که بدون هیچ استدلالی فراخوانی میشود.
متغیری که یک وعده را برمیگرداند، برابر با مقدار حلشده وعده است، یا
false اگر وعده رد شود.
نمونه
promise.then((resolvedValue) => {
// Handles when promise resolves.
}, (rejectedValue) => {
// Handles when promise rejects.
});
promise.catch((rejectedValue) => {
// Handles when promise rejects.
});
promise.finally(() => {
// Runs regardless of whether or not the previous promise resolves or
// rejects.
});
Promise.all
یک وعده را برمیگرداند که یا:
- وقتی همه ورودیها حل شده باشند، یا
- وقتی هریک از ورودیها رد شود، رد میکند
نحو
Promise.all(inputs);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
inputs |
آرایه | آرایهای از مقادیر یا وعدهها. اگر ورودی وعده نباشد، ورودی بهگونهای منتقل میشود که گویی مقدار حلشده وعده است. اگر ورودی آرایه نباشد، خطا میدهد. |
مثال
const Promise = require('Promise');
const sendHttpGet = require('sendHttpGet');
return Promise.all(['a', sendHttpGet('https://example.com')])
.then((results) => {
// results will equal: ['a', {statusCode: 200, headers: {}, body: ''}]
});
اجازههای مرتبط
هیچکدام.
Promise.create
وعدهای ایجاد میکند که ازنظر عملکردی معادل وعده جاوا اسکریپت است.
نحو
Promise.create(resolver);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
resolver |
تابع | تابعی که با دو تابع فراخوانی میشود -- حل و رد. وقتی پارامتر مربوطه فراخوانده شود، وعده برگشتی حلوفصل یا رد خواهد شد. اگر حلکننده تابع نباشد، خطا ایجاد میکند. |
نمونه
const Promise = require('Promise');
return Promise.create((resolve, reject) => {
// Do asynchronous work that eventually calls resolve() or reject()
});
اجازههای مرتبط
هیچکدام.
میاناهای برنامهسازی کاربردی آزمایش
این «میاناهای برنامهسازی کاربردی» با آزمایشهای جاوا اسکریپت جعبه شنی کار میکنند تا آزمایشهایی برای
الگوهای سفارشی در Google Tag Manager بسازند. این میاناهای برنامهسازی کاربردی آزمایشی به بیانیه require() نیاز ندارند. [درباره آزمایشهای الگوی سفارشی بیشتر بدانید].
assertApi
یک شیء مطابقتدهنده برمیگرداند که میتواند برای ایجاد ادعاهای روان درباره میانای برنامهسازی کاربردی دادهشده استفاده شود.
نحو
assertApi(apiName)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام میانای برنامهسازی کاربردی برای بررسی؛ همان رشتهای که به
require() ارسال شده است.
|
مطابقتدهندهها
Subject.wasCalled()Subject.wasNotCalled()Subject.wasCalledWith(...expected)Subject.wasNotCalledWith(...expected)
نمونهها
assertApi('sendPixel').wasCalled();
assertApi('getUrl').wasNotCalled();
assertApi('makeNumber').wasCalledWith('8');
assertApi('setInWindow').wasNotCalledWith('myVar', 'theWrongValue');
assertThat
assertThat API از کتابخانه [Truth] Google الگوبرداری شده است. این متد شیئی را برمیگرداند که میتوان از آن برای ایجاد ادعاهای روان درباره مقدار موضوع استفاده کرد. درصورت
عدم موفقیت ادعا، آزمایش بلافاصله متوقف میشود و بهعنوان ناموفق علامتگذاری میشود. بااینحال،
شکست در یک آزمایش بر سایر چارچوبهای تست تأثیر نخواهد گذاشت.
نحو
assertThat(actual, opt_message)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
actual |
any | مقداری که باید در بررسیهای روان استفاده شود. |
opt_message |
رشته | پیام اختیاری برای چاپ درصورت ناموفق بودن ادعا. |
مطابقتدهندهها
| تطبیقدهنده | شرح |
|---|---|
isUndefined() |
ادعا میکند که موضوع undefined است. |
isDefined() |
ادعا میکند که موضوع undefined نیست. |
isNull() |
ادعا میکند که موضوع null است. |
isNotNull() |
ادعا میکند که موضوع null نیست. |
isFalse() |
ادعا میکند که موضوع false است. |
isTrue() |
ادعا میکند که موضوع true است. |
isFalsy() |
ادعا میکند که موضوع نادرست است. مقادیر نادرست عبارتاند از
undefined، null، false،
NaN، 0، و '' (رشته خالی). |
isTruthy() |
ادعا میکند که موضوع درست است. مقادیر نادرست عبارتاند از
undefined، null، false،
NaN، 0، و '' (رشته خالی). |
isNaN() |
ادعا میکند که موضوع مقدار NaN است. |
isNotNaN() |
ادعا میکند که موضوع هر مقداری بهجز NaN است. |
isInfinity() |
ادعا میکند که موضوع بینهایت مثبت یا منفی است. |
isNotInfinity() |
ادعا میکند که موضوع هر مقداری بهجز بینهایت مثبت یا منفی است. |
isEqualTo(expected) |
ادعا میکند که موضوع با مقدار دادهشده برابر است. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیا و آرایهها بهصورت بازگشتی مقایسه میشود. |
isNotEqualTo(expected) |
ادعا میکند که موضوع با مقدار دادهشده برابر نیست. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیاء و آرایهها بهصورت بازگشتی مقایسه میشوند. |
isAnyOf(...expected) |
ادعا میکند که موضوع با یکی از مقادیر دادهشده برابر است. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیا و آرایهها بهصورت بازگشتی مقایسه میشوند. |
isNoneOf(...expected) |
ادعا میکند که موضوع با هیچیک از مقادیر دادهشده برابر نیست. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیاء و آرایهها بهصورت بازگشتی مقایسه میشوند. |
isStrictlyEqualTo(expected) |
ادعا میکند که موضوع دقیقاً برابر (===) با مقدار دادهشده است. |
isNotStrictlyEqualTo(expected) |
ادعا میکند که موضوع دقیقاً برابر (!==) با
مقدار دادهشده نیست. |
isGreaterThan(expected) |
ادعا میکند که موضوع در مقایسه ترتیبی بزرگتر از (>) مقدار
دادهشده است. |
isGreaterThanOrEqualTo(expected) |
ادعا میکند که موضوع بزرگتر یا مساوی با
(>=) مقدار دادهشده در مقایسه مرتب است. |
isLessThan(expected) |
ادعا میکند که موضوع در مقایسه ترتیبی کمتر از (<) مقدار دادهشده است. |
isLessThanOrEqualTo(expected) |
ادعا میکند که موضوع در مقایسه ترتیبی کمتر یا مساوی مقدار دادهشده (<=) است. |
contains(...expected) |
ادعا میکند که موضوع آرایه یا رشتهای است که حاوی همه مقادیر دادهشده به هر ترتیبی است. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیا و آرایهها بهصورت بازگشتی مقایسه میشود. |
doesNotContain(...expected) |
تأیید میکند که موضوع آرایه یا رشتهای است که هیچیک از مقادیر دادهشده را ندارد. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیا و آرایهها بهصورت بازگشتی مقایسه میشود. |
containsExactly(...expected) |
ادعا میکند که موضوع آرایهای است که شامل همه مقادیر دادهشده به هر ترتیبی است و هیچ مقدار دیگری ندارد. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیاء و آرایهها بهصورت بازگشتی مقایسه میشود. |
doesNotContainExactly(...expected) |
ادعا میکند که موضوع آرایهای است که مجموعهای متفاوت از مقادیر دادهشده را به هر ترتیبی دربرمیگیرد. این مقایسه مقدار است، نه مقایسه مرجع. محتوای اشیا و آرایهها بهصورت بازگشتی مقایسه میشود. |
hasLength(expected) |
ادعا میکند که موضوع آرایه یا رشتهای با طول معین است. اگر مقدار آرایه یا رشته نباشد، ادعا همیشه رد میشود. |
isEmpty() |
تأیید میکند که موضوع آرایه یا رشتهای است که خالی است (طول = ۰). اگر مقدار آرایه یا رشته نباشد، ادعا همیشه رد میشود. |
isNotEmpty() |
ادعا میکند که موضوع آرایه یا رشتهای است که خالی نیست (طول > ۰). اگر مقدار آرایه یا رشته نباشد، ادعا همیشه ناموفق است. |
isArray() |
ادعا میکند که نوع موضوع آرایه است. |
isBoolean() |
ادعا میکند که نوع موضوع بولی است. |
isFunction() |
ادعا میکند که نوع موضوع تابع است. |
isNumber() |
ادعا میکند که نوع موضوع عدد است. |
isObject() |
ادعا میکند که نوع موضوع شیء است. |
isString() |
ادعا میکند که نوع موضوع رشته است. |
نمونهها
assertThat(undefined).isUndefined();
assertThat(id, 'ID must be defined').isDefined();
assertThat(null).isNull();
assertThat(undefined).isNotNull();
assertThat(true).isTrue();
assertThat(false).isFalse();
assertThat(1).isTruthy();
assertThat('').isFalsy();
assertThat(1/0).isInfinity();
assertThat(0).isNotInfinity();
assertThat(-'foo').isNaN();
assertThat(100).isNotNaN();
assertThat(sentUrl).isEqualTo('https://endpoint.example.com/?account=12345');
assertThat(category).isNotEqualTo('premium');
assertThat(5).isAnyOf(1, 2, 3, 4, 5);
assertThat(42).isNoneOf('the question', undefined, 41.9);
assertThat('value').isStrictlyEqualTo('value');
assertThat('4').isNotStrictlyEqualTo(4);
assertThat(['a', 'b', 'c']).contains('a', 'c');
assertThat(['x', 'y', 'z']).doesNotContain('f');
assertThat(['1', '2', '3']).containsExactly('3', '2', '1');
assertThat(['4', '5']).doesNotContainExactly('4');
assertThat('a string').hasLength(8);
assertThat([]).isEmpty();
assertThat('another string').isNotEmpty();
fail
فوراً آزمایش فعلی را ناموفق میکند و پیام ارائهشده را (درصورت وجود) چاپ میکند.
نحو
fail(opt_message);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
opt_message |
رشته | نوشتار اختیاری پیام خطا. |
مثال
fail('This test has failed.');
mock
mock API به شما امکان میدهد رفتار Sandboxed APIs را لغو کنید. استفاده از API شبیهسازیشده در کد الگو ایمن است، اما فقط در حالت آزمایشی کار میکند.
قبلاز اجرای هر آزمایش، شبیهسازیها بازنشانی میشوند.
نحو
mock(apiName, returnValue);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام API برای شبیهسازی؛ همان رشتهای که به
require() ارسال شده است |
returnValue |
any | مقدار برگشتی برای API یا تابعی که بهجای API فراخوانی میشود. اگر returnValue تابع باشد، آن تابع بهجای Sandboxed API فراخوانده میشود؛ اگر returnValue هر چیزی بهجز تابع باشد، آن مقدار بهجای Sandboxed API برگردانده میشود. |
نمونهها
mock('encodeUri', "https://endpoint.example.com/?account=12345");
mock('sendPixel', function(url, onSuccess, onFailure) {
onSuccess();
});
mockObject
میانای برنامهسازی کاربردی mockObject به شما امکان میدهد رفتار «میاناهای برنامهسازی کاربردی در جعبه شنی» را که
شیئی را برمیگردانند ملغی کنید. استفاده از این میانای برنامهسازی کاربردی در کد الگو ایمن است، اما فقط در حالت آزمایشی قابلاستفاده است. پیشاز اجرای هر آزمایش، شبیهسازیها بازنشانی میشوند.
نحو
mockObject(apiName, objectMock);
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
apiName |
رشته | نام API برای شبیهسازی؛ همان رشتهای که به
require() ارسال شده است |
objectMock |
شیء | مقداری که برای API یا تابع فراخوانیشده بهجای API برگردانده میشود. باید شیء باشد. |
نمونهها
const storage = {};
let firestoreId = 1;
function asTestPromise(result) {
return {
then: (callback) => callback(result)
};
}
mockObject('Firestore', {
write: (collection, input) => {
storage[collection + '/' + (++firestoreId)] = input;
return asTestPromise(firestoreId);
},
read: (document) => asTestPromise({data: storage[document]})
});
runCode
کد الگو، یعنی محتوای برگه کد، را در محیط آزمایشی فعلی با شیء داده ورودی مشخص اجرا میکند.
نحو
runCode(data)
پارامترها
| پارامتر | نوع | شرح |
|---|---|---|
data |
شیء | شیء داده برای استفاده در آزمایش. |
مقدار برگشتی
مقدار متغیر را برای الگوهای متغیر برمیگرداند؛ برای همه انواع دیگر الگو، undefined را برمیگرداند.
نمونه
runCode({field1: 123, field2: 'value'});