সার্ভার-সাইড ট্যাগিং API

এই ডকুমেন্টে সার্ভার-সাইড ট্যাগের জন্য API-এর রূপরেখা দেওয়া হয়েছে।


addEventCallback

একটি কলব্যাক ফাংশন রেজিস্টার করে যা কোনও ইভেন্টের শেষে চালু করা হবে। ইভেন্টের সব ট্যাগ এক্সিকিউট করা হয়ে গেলে কলব্যাক ইনভোক করা হবে। কলব্যাকে দুটি ভ্যালু পাস করা হয়: ফাংশনটি কল করা কন্টেনারের আইডি এবং ইভেন্ট সম্পর্কে তথ্য সহ একটি অবজেক্ট।

কোনও ট্যাগে এই API ব্যবহার করা হলে, এটি বর্তমান ইভেন্টের সাথে যুক্ত হয়। কোনও ক্লায়েন্টে এই API ব্যবহার করা হলে, runContainer API-এর bindToEvent ফাংশন ব্যবহার করে এটিকে কোনও নির্দিষ্ট ইভেন্টের সাথে বাউন্ড করতে হবে। আরও বিবরণের জন্য উদাহরণ দেখুন।

সিনট্যাক্স

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.
});

সম্পর্কিত অনুমতি

read_event_metadata


callLater

অ্যাসিঙ্ক্রোনাসভাবে ঘটার জন্য কোনও ফাংশনে কল শিডিউল করে। বর্তমান কোড রিটার্ন করার পরে ফাংশনটি কল করা হবে। এটি setTimeout(<function>, 0)-এর সমান।

উদাহরণ

const callLater = require('callLater');
const logToConsole = require('logToConsole');

callLater(() => {
  logToConsole('Logged asynchronously');
});

সিনট্যাক্স

callLater(function)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
function ফাংশন কল করার ফাংশন।

সম্পর্কিত অনুমতি

কোনওটিই নয়।


claimRequest

অনুরোধ দাবি করতে ক্লায়েন্টে এই API ব্যবহার করুন। কোনও অনুরোধ দাবি করা হলে, কন্টেনার অতিরিক্ত ক্লায়েন্ট চালায় না।

ট্যাগ বা ভেরিয়েবলে কল করা হলে এই API একটি ব্যতিক্রম দেখায়। ক্লায়েন্ট রিটার্ন করার পরে কল করা হলে এই API একটি ব্যতিক্রম ছুঁড়ে দেয় (যেমন, callLater বা runContainer onComplete ফাংশনের মতো কোনও অ্যাসিঙ্ক কলব্যাকে কল করা হলে)।

runContainer API কল করার আগে ক্লায়েন্টকে এই API ব্যবহার করে অনুরোধ দাবি করতে হবে।

উদাহরণ

const claimRequest = require('claimRequest');

claimRequest();

সিনট্যাক্স

claimRequest();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


computeEffectiveTldPlusOne

প্রদত্ত ডোমেন বা URL-এর কার্যকর টপ-লেভেল ডোমেন + ১ (eTLD+1) রিটার্ন করে। পাবলিক সাফিক্স তালিকার নিয়ম অনুযায়ী ডোমেন মূল্যায়ন করে eTLD+1 গণনা করা হয়। eTLD+1 হল সাধারণত সর্বোচ্চ-লেভেল ডোমেন যেখানে আপনি কুকি সেট করতে পারবেন।

আর্গুমেন্টটি শূন্য বা অনির্দিষ্ট হলে, আর্গুমেন্টের মান অপরিবর্তিত অবস্থায় ফেরত দেওয়া হয়। অন্যথায়, আর্গুমেন্টকে স্ট্রিংয়ে বাধ্য করা হয়। আর্গুমেন্টটি যদি কোনও সঠিক ডোমেন বা URL না হয়, তাহলে একটি ফাঁকা স্ট্রিং রিটার্ন করা হয়। সার্ভার যদি পাবলিক সাফিক্স তালিকা আনতে না পারে, তাহলে আর্গুমেন্ট ভ্যালু অপরিবর্তিত অবস্থায় ফেরত পাঠানো হয়।

উদাহরণ

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 গণনা করার জন্য ডোমেন বা URL।

সম্পর্কিত অনুমতি

কোনওটিই নয়।


createRegex

নতুন regex ইনস্ট্যান্স তৈরি করে এবং অবজেক্টে র‍্যাপ করে এটি ফিরিয়ে দেয়। আপনি সরাসরি রেজেক্স অ্যাক্সেস করতে পারবেন না। তবে, আপনি এটি testRegex API, String.replace(), String.match() এবং String.search()-এ পাস করতে পারবেন।

regex ভুল হলে বা সার্ভারে 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` (ইগনোর কেস) কাজ করে। অন্যান্য সব অক্ষর উপেক্ষা করা হয়।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।

ইমেজের ন্যূনতম ভার্সন

2.0.0


decodeUri

প্রদত্ত URI-তে এনকোড করা যেকোনও অক্ষর ডিকোড করে। ডিকোড করা URI-কে দেখায় এমন একটি স্ট্রিং ফেরত পাঠায়। ভুল ইনপুট দিলে undefined রিটার্ন করে।

উদাহরণ

const decodeUri = require('decodeUri');

const decodedUrl = decodeUri(data.encodedUrl);
if (decodedUrl) {
  // ...
}

সিনট্যাক্স

decodeUri(encoded_uri);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
encoded_uri স্ট্রিং একটি URI যা encodeUri() বা অন্য উপায়ে এনকোড করা হয়েছে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


decodeUriComponent

প্রদত্ত URI কম্পোনেন্টে এনকোড করা অক্ষরকে ডিকোড করে। ডিকোড করা URI কম্পোনেন্টকে দেখায় এমন একটি স্ট্রিং রিটার্ন করে। ভুল ইনপুট দিলে undefined রিটার্ন করে।

উদাহরণ

const decodeUriComponent = require('decodeUriComponent');

const decodedQuery = decodeUriComponent(data.query);
if (decodedQuery) {
  // ...
}

সিনট্যাক্স

decodeUriComponent(encoded_uri_component);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
encoded_uri_component স্ট্রিং URI কম্পোনেন্ট যা encodeUriComponent() বা অন্য কোনও উপায়ে এনকোড করা হয়েছে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


encodeUri

বিশেষ ক্যারেক্টার এড়িয়ে এনকোড করা Uniform Resource Identifier (URI) রিটার্ন করে। URI হিসেবে এনকোড করা প্রদত্ত স্ট্রিং দেখায় এমন একটি স্ট্রিং ফেরত দেয়।

উদাহরণ

const encodeUri = require('encodeUri');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/' + encodeUri(pathInput));

সিনট্যাক্স

encodeUri(uri);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
uri স্ট্রিং সম্পূর্ণ URI.

সম্পর্কিত অনুমতি

কোনওটিই নয়।


encodeUriComponent

বিশেষ অক্ষর বাদ দিয়ে এনকোড করা ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার (URI) ফেরত দেয়। একটি স্ট্রিং রিটার্ন করে যা URI হিসেবে এনকোড করা প্রদত্ত স্ট্রিং দেখায়।

উদাহরণ

const encodeUriComponent = require('encodeUriComponent');
const sendHttpGet = require('sendHttpGet');

sendHttpGet('https://www.example.com/?' + encodeUriComponent(queryInput));

সিনট্যাক্স

encodeUriComponent(str);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
str স্ট্রিং URI-এর একটি কম্পোনেন্ট।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


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 অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত আইটেমে অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body
  • query 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 অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত আইটেমে অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body
  • query 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 নম্বর ফেরত দেওয়া পূর্ণসংখ্যার ন্যূনতম সম্ভাব্য মান (অন্তর্ভুক্ত)।
max number ফেরত দেওয়া পূর্ণসংখ্যার সর্বাধিক সম্ভাব্য মান (অন্তর্ভুক্ত)।

সম্পর্কিত অনুমতি

কোনওটিই নয়।


getAllEventData

ইভেন্ট ডেটার একটি কপি রিটার্ন করে।

সিনট্যাক্স

getAllEventData();

সম্পর্কিত অনুমতি

read_event_data


getClientName

বর্তমান ক্লায়েন্টের নাম সহ একটি স্ট্রিং রিটার্ন করে।

সিনট্যাক্স

getClientName();

সম্পর্কিত অনুমতি

read_container_data


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();

সংশ্লিষ্ট অনুমতি

read_container_data


getCookieValues

প্রদত্ত নামের সব কুকির ভ্যালু সহ একটি অ্যারে রিটার্ন করে।

উদাহরণ

const getCookieValues = require('getCookieValues');

const lastVisit = getCookieValues('lastVisit')[0];
if (lastVisit) {
  // ...
}

সিনট্যাক্স

getCookieValues(name[, noDecode]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং কুকির নাম।
noDecode বুলিয়ান true হলে, কুকির ভ্যালু রিটার্ন করার আগে ডিকোড করা হবে না। ডিফল্ট হিসেবে false সেট করা থাকে।

সম্পর্কিত অনুমতি

get_cookies


getEventData

ইভেন্ট ডেটাতে প্রদত্ত পাথে থাকা ভ্যালুর কপি দেখায়। কোনও ইভেন্ট ডেটা না থাকলে বা প্রদত্ত পাথে কোনও ভ্যালু না থাকলে undefined রিটার্ন করে।

উদাহরণ

const getEventData = require('getEventData');

const campaignId = getEventData('campaign.id');
const itemId = getEventData('items.0.id');
const referrer = getEventData('page_referrer');

প্যারামিটার

প্যারামিটার ধরন বিবরণ
keyPath যেকোনও কী-এর পাথ, যেখানে পাথ কম্পোনেন্টগুলি ডট দিয়ে আলাদা করা হয়। পাথ কম্পোনেন্ট কোনও অবজেক্টের কী বা কোনও অ্যারের ইন্ডেক্স হতে পারে। keyPath স্ট্রিং না হলে, এটিকে স্ট্রিংয়ে পরিবর্তন করা হয়।

সিনট্যাক্স

getEventData(keyPath);

সম্পর্কিত অনুমতি

read_event_data


getGoogleAuth

একটি অনুমোদন অবজেক্ট রিটার্ন করে যা sendHttpGet বা sendHttpRequest-এর সাথে ব্যবহার করা হলে, Google Cloud API-এর জন্য একটি অনুমোদন হেডার অন্তর্ভুক্ত করবে। এই 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 Array অ্যাক্সেসের অনুরোধ করার জন্য OAuth 2.0 Google API স্কোপের একটি অ্যারে।

সম্পর্কিত অনুমতি

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' বিকল্পটি https://www.google-analytics.com/analytics.js থেকে Google Analytics স্ক্রিপ্ট নিয়ে আসে।

এই 'GTAG' বিকল্পটি https://www.googletagmanager.com/gtag/js থেকে গ্লোবাল সাইট ট্যাগ (gtag.js) স্ক্রিপ্ট সংগ্রহ করে।

'GTM' বিকল্পটি https://www.googletagmanager.com/gtm.js থেকে Google Tag Manager স্ক্রিপ্ট নিয়ে আসে।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। কোন কোন বিকল্প কাজ করে তা নিচে দেখুন।

বিকল্প

Option ধরন বিবরণ
id স্ট্রিং gtag পরিমাপ আইডি সহ 'GTAG' এবং ওয়েব কন্টেনার আইডি সহ 'GTM'-এর ক্ষেত্রে প্রযোজ্য (যেমন, GTM-XXXX)।
debug যেকোনও সত্য হলে, পরিমাপ স্ক্রিপ্টের ডিবাগ ভার্সনের জন্য অনুরোধ করে এবং ফেরত পাঠায়।
timeout number অনুরোধের টাইমআউট মিলিসেকেন্ডে; নন-পজিটিভ ভ্যালু উপেক্ষা করা হয়। অনুরোধের সময়সীমা পেরিয়ে গেলে, স্ক্রিপ্ট ভ্যালুর জন্য undefined এবং মেটাডেটা অবজেক্টের জন্য {} সহ কলব্যাক ইনভোক করা হবে।

চেনা যাচ্ছে না এমন বিকল্প কী উপেক্ষা করা হয়।

সম্পর্কিত অনুমতি

send_http অনুমতি প্রয়োজন। কমপক্ষে এগুলিতে অ্যাক্সেস দেওয়ার জন্য অনুমতি কনফিগার করতে হবে:

  • Google Domains-কে অনুমতি দিন

getRemoteAddress

যেখান থেকে অনুরোধ করা হয়েছে সেই IP অ্যাড্রেসের স্ট্রিং দেখায়, যেমন IPv4-এর জন্য 12.345.67.890 বা IPv6-এর জন্য 2001:0db8:85a3:0:0:8a2e:0370:7334, Forwarded এবং X-Forwarded-For-এর মতো অনুরোধের হেডার পড়ে। মনে রাখবেন: এই API, IP-এর উৎস খুঁজে বের করার জন্য যথাসাধ্য চেষ্টা করে, তবে এটি ফলাফলের নির্ভুলতার গ্যারেন্টি দিতে পারে না।

সিনট্যাক্স

getRemoteAddress();

সম্পর্কিত অনুমতি

read_request অনুমতি প্রয়োজন। অনুমতি এমনভাবে কনফিগার করতে হবে যাতে অন্তত এগুলির অ্যাক্সেস দেওয়া যায়:

  • হেডার Forwarded এবং X-Forwarded-For
  • রিমোট IP অ্যাড্রেস

getRequestBody

অনুরোধের বডি থাকলে সেটি স্ট্রিং হিসেবে রিটার্ন করে, না থাকলে undefined রিটার্ন করে।

সিনট্যাক্স

getRequestBody();

সম্পর্কিত অনুমতি

read_request


getRequestHeader

নামযুক্ত অনুরোধ হেডার থাকলে, তার ভ্যালু স্ট্রিং হিসেবে রিটার্ন করে অথবা undefined রিটার্ন করে। হেডার পুনরাবৃত্তি হলে, ফেরত দেওয়া মানগুলি ', '-এর সাথে একসাথে যোগ করা হয়।

উদাহরণ

const getRequestHeader = require('getRequestHeader');

const host = getRequestHeader('host');

সিনট্যাক্স

getRequestHeader(headerName);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
headerName স্ট্রিং হেডারের নাম। এই ভ্যালুতে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় না।

সংশ্লিষ্ট অনুমতি

read_request


getRequestMethod

অনুরোধের পদ্ধতি, যেমন 'GET' বা 'POST', স্ট্রিং হিসেবে দেখায়।

উদাহরণ

const getRequestMethod = require('getRequestMethod');

if (getRequestMethod() === 'POST') {
  // Handle the POST request here.
}

সিনট্যাক্স

getRequestMethod();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getRequestPath

কোয়েরি স্ট্রিং ছাড়া অনুরোধের পাথ রিটার্ন করে। যেমন, URL যদি '/foo?id=123' হয়, তাহলে এটি '/foo' রিটার্ন করে। পাথ থেকে সার্ভার কন্টেনার URL প্রিফিক্স অটোমেটিক বাদ দেয়। যেমন, সার্ভার কন্টেনার URL যদি https://example.com/analytics এবং অনুরোধের পাথ '/analytics/foo' হয়, তাহলে এটি '/foo' রিটার্ন করে।

উদাহরণ

const getRequestPath = require('getRequestPath');

const requestPath = getRequestPath();
if (requestPath === '/') {
  // Handle a request for the root path.
}

সিনট্যাক্স

getRequestPath();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryParameter

নামযুক্ত কোয়েরি স্ট্রিং প্যারামিটারের ডিকোড করা ভ্যালু স্ট্রিং হিসেবে ফেরত পাঠায়, অথবা প্যারামিটার না থাকলে undefined ফেরত পাঠায়। কোয়েরি স্ট্রিংয়ে প্যারামিটারটি রিপিট করা হলে, কোয়েরি স্ট্রিংয়ে দেখানো প্রথম ভ্যালুটি ফেরত দেওয়া হবে।

উদাহরণ

const getRequestQueryParameter = require('getRequestQueryParameter');

const query = getRequestQueryParameter('query');
if (query) {
  // Process query here.
}

সিনট্যাক্স

getRequestQueryParameter(name);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং কোয়েরি প্যারামিটারের নাম।

সম্পর্কিত অনুমতি

read_request


getRequestQueryParameters

ইনকামিং HTTP অনুরোধের কোয়েরি প্যারামিটারকে এমন একটি অবজেক্ট হিসেবে দেখায় যা কোয়েরি প্যারামিটারের নামকে সংশ্লিষ্ট মান বা মানগুলির সাথে ম্যাপ করে। প্যারামিটারের নাম ও ভ্যালু ডিকোড করা হয়েছে।

উদাহরণ

const getRequestQueryParameters = require('getRequestQueryParameters');

const queryParameters = getRequestQueryParameters();
if (queryParameters['search']) {
  // Handle the search query here.
  const maxResults = queryParameters['max_results'];
}

সিনট্যাক্স

getRequestQueryParameters();

সংশ্লিষ্ট অনুমতি

read_request


getRequestQueryString

অনুরোধের URL-এ কোয়েরি স্ট্রিং না থাকলে, লিডিং প্রশ্নচিহ্ন বাদ দিয়ে অনুরোধের কোয়েরিটি স্ট্রিং হিসেবে অথবা একটি খালি স্ট্রিং হিসেবে রিটার্ন করে।

উদাহরণ

const getRequestQueryString = require('getRequestQueryString');

const queryString = getRequestQueryString();
if (queryString !== '') {
  // Handle the query string.
}

সিনট্যাক্স

getRequestQueryString();

সংশ্লিষ্ট অনুমতি

read_request


getTimestamp

বন্ধ করে দেওয়া হয়েছে। getTimestampMillis ব্যবহার করুন।

সংখ্যা রিটার্ন করে যা Unix epoch থেকে মিলিসেকেন্ডে বর্তমান সময়কে দেখায়, এটি Date.now() রিটার্ন করে।

সিনট্যাক্স

getTimestamp();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getTimestampMillis

Date.now()-এর মাধ্যমে দেখানো, Unix epoch থেকে মিলিসেকেন্ডে বর্তমান সময়কে দেখায় এমন একটি সংখ্যা দেখায়।

সিনট্যাক্স

getTimestampMillis();

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


getType

প্রদত্ত মানের ধরন বর্ণনা করে এমন একটি স্ট্রিং প্রদান করে।

ইনপুটের ধরন ফেরত পাঠানো ভ্যালু
স্ট্রিং 'string'
নম্বর 'number'
বুলিয়ান 'boolean'
নাল 'null'
অনির্ধারিত 'undefined'
Array '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 যেকোনও ইনপুট ভ্যালু।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


hmacSha256

SHA-256 সহ হ্যাশ-ভিত্তিক মেসেজ যাচাইকরণ কোড (HMAC) ব্যবহার করে একটি এনকোড করা স্বাক্ষর গণনা করে। ডিফল্ট হিসেবে base64url এনকোডিং সেট করা থাকে।

এই API ব্যবহার করতে, সার্ভারে SGTM_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবেলকে নিম্নলিখিত ফর্ম্যাটে UTF-8 এনকোড করা JSON কী ফাইলের পাথে সেট করুন:

{
  "keys": {
    "key1": "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5",
    "key2": "OTg3NjU0MzIxMHp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2Jh",
    ...
  }
}

ভ্যালুগুলি হল base64-এনকোড করা HMAC কী। 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 অবজেক্ট ঐচ্ছিক API কনফিগারেশন। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ
outputEncoding স্ট্রিং রিটার্ন ভ্যালুর এনকোডিং ফর্ম্যাট নির্দিষ্ট করে। hex, base64 অথবা base64url ফর্ম্যাট কাজ করে। উল্লেখ করা না থাকলে base64url হল ডিফল্ট।

সংশ্লিষ্ট অনুমতি

use_custom_private_keys

ইমেজের ন্যূনতম ভার্সন

১.০.০


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 Console-এর Logs Explorer-এ এইসব লগ দেখা যায়। এই API-এর তৈরি করা লগ এন্ট্রি দেখতে, Logs Explorer থেকে logName =~ "stdout" কোয়েরি রান করুন।

উদাহরণ

const logToConsole = require('logToConsole');

const that = 123;
const those = { ... };
logToConsole('that is: ', that, ' and those is: ', those);

সিনট্যাক্স

logToConsole(argument1[, argument2, ...]);

প্যারামিটার

API এক বা একাধিক আর্গুমেন্ট নেয়, যার প্রতিটি প্রয়োজন হলে স্ট্রিংয়ে কনভার্ট করা হয় এবং কনসোলে লগ করা হয়।

সংশ্লিষ্ট অনুমতি

logging


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 অবজেক্টের মতো কোনও প্রদত্ত URL-এর কম্পোনেন্ট পার্ট থাকা একটি অবজেক্ট রিটার্ন করে।

এই API যেকোনও বিকৃত URL-এর জন্য undefined রিটার্ন করবে। সঠিকভাবে ফর্ম্যাট করা URL-এর ক্ষেত্রে, URL স্ট্রিংয়ে যেসব ফিল্ড নেই সেগুলির মান খালি স্ট্রিং হবে, অথবা 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 স্ট্রিং সম্পূর্ণ URL যা পার্স করা হবে।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


returnResponse

setCookie, setPixelResponse, setResponseBody, setResponseHeader এবং setResponseStatus সহ উত্তর পরিবর্তন করে এমন API ব্যবহার করে অন্যান্য টেমপ্লেটের মাধ্যমে আগে সেট করা উত্তর ফ্ল্যাশ করে। ডিফল্ট হিসেবে HTTP স্ট্যাটাস কোড 200, খালি বডি এবং কোনও হেডার থাকে না।

এই API ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার জন্য সাজেস্ট করা হয়।

সিনট্যাক্স

returnResponse();

উদাহরণ

runContainer উদাহরণ দেখুন।

সম্পর্কিত অনুমতি

return_response


runContainer

কোনও ইভেন্টের স্কোপে কন্টেনার লজিক (ভেরিয়েবল, ট্রিগার, ট্যাগ) রান করে। কন্টেনার এক্সিকিউশনের সময় এই API কল করা হলে, কন্টেনার আবার রান করা হয়।

onComplete এবং onStart কলব্যাক, bindToEvent নামের একটি ফাংশন রিসিভ করে। ইভেন্টের কন্টেক্সটে API রান করাতে bindToEvent ব্যবহার করুন। আরও বিবরণের জন্য addEventCallback উদাহরণ দেখুন।

এই API ক্লায়েন্ট টেমপ্লেট থেকে ব্যবহার করার জন্য সাজেস্ট করা হয়।

উদাহরণ

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 ফাংশন ট্যাগ ফায়ার করা শুরু হওয়ার আগে, সাথে সাথেই কলব্যাক ইনভোক করা হয়।

সম্পর্কিত অনুমতি

run_container


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

নির্দিষ্ট URL-এ HTTP GET অনুরোধ করে এবং অনুরোধ সম্পূর্ণ বা টাইম-আউট হয়ে গেলে প্রমিস রিটার্ন করে যা ফলাফলের সাথে সমাধান করে।

সমাধান করা ফলাফল হল এমন একটি অবজেক্ট যাতে তিনটি 'কী' থাকে: statusCode, headers, এবং body। অনুরোধটি ব্যর্থ হলে (যেমন, URL ভুল, হোস্টের কোনও রুট নেই, 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 স্ট্রিং অনুরোধ করা URL।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ
headers স্ট্রিং অতিরিক্ত অনুরোধের হেডার।
timeout number অনুরোধ বাতিল করার আগে, মিলিসেকেন্ডে টাইমআউট। ডিফল্ট হিসেবে 15000 সেট করা থাকে।
authorization অবজেক্ট googleapis.com-এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth-এ কল করার ঐচ্ছিক অনুমোদন অবজেক্ট।

সম্পর্কিত অনুমতি

send_http


sendHttpRequest

নির্দিষ্ট URL-এ HTTP অনুরোধ করে এবং একটি প্রমিস রিটার্ন করে যা অনুরোধ সম্পূর্ণ হলে বা টাইম-আউট হলে উত্তরের সাথে সমাধান করে।

সমাধান করা ফলাফল হল এমন একটি অবজেক্ট যাতে তিনটি কী থাকে: statusCode, headers, এবং body। অনুরোধটি ব্যর্থ হলে (যেমন, URL ভুল, হোস্টের কোনও রুট নেই, 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 স্ট্রিং অনুরোধ করা URL।
options অবজেক্ট ঐচ্ছিক অনুরোধের বিকল্প। (নিচে বিকল্প দেখুন।)
body স্ট্রিং ঐচ্ছিক অনুরোধের প্রধান অংশ।

বিকল্প

Option ধরন বিবরণ
headers স্ট্রিং অনুরোধের অতিরিক্ত হেডার।
method অবজেক্ট অনুরোধ করার পদ্ধতি। ডিফল্ট হিসেবে GET সেট করা থাকে।
timeout নম্বর অনুরোধ বাতিল করার আগে, মিলিসেকেন্ডে টাইমআউট। ডিফল্ট হিসেবে 15000 সেট করা থাকে।
authorization অবজেক্ট googleapis.com-এ অনুরোধ করার সময় অনুমোদন হেডার অন্তর্ভুক্ত করার জন্য getGoogleAuth-এ কল করার ঐচ্ছিক অনুমোদন অবজেক্ট।

সংশ্লিষ্ট অনুমতি

send_http


sendPixelFromBrowser

প্রদান করা URL-কে <img> ট্যাগ হিসেবে লোড করার জন্য ব্রাউজারে কমান্ড পাঠায়। এই কমান্ড প্রোটোকল Google Analytics-এর জন্য Google ট্যাগ এবং Google Analytics: GA ইভেন্ট ওয়েব ট্যাগে কাজ করে। আপনাকে অবশ্যই সার্ভার কন্টেনার URL কনফিগার করতে হবে। আরও বিবরণের জন্য নির্দেশাবলী দেখুন।

ইনকামিং অনুরোধে কমান্ড প্রোটোকল কাজ না করলে অথবা উত্তর আগেই ফ্ল্যাশ করা হয়ে গেলে, এই API false রিটার্ন করে। অন্যথায়, এই API true রিটার্ন করে।

উদাহরণ:

const sendPixelFromBrowser = require('sendPixelFromBrowser');

sendPixelFromBrowser('https://example.com/?id=123');

সিনট্যাক্স

sendPixelFromBrowser(url)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
url স্ট্রিং ব্রাউজারে পাঠানোর জন্য URL।

সংশ্লিষ্ট অনুমতি

send_pixel_from_browser


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 বুলিয়ান যদি অ্যাট্রিবিউট 'true' হয়, তাহলে কুকির মান এনকোড করা হবে না। ডিফল্ট হিসেবে false সেট করা থাকে।

বিকল্প

  • ডোমেন: যে হোস্টে কুকি পাঠানো হবে। বিশেষ মান 'auto' হিসেবে সেট করা হলে, নিম্নলিখিত স্ট্র্যাটেজি ব্যবহার করে হোস্ট অটোমেটিক গণনা করা হবে:

    • Forwarded হেডারের eTLD+1, যদি থাকে।
    • X-Forwarded-Host হেডারের eTLD+1, যদি থাকে।
    • Host হেডারের eTLD+1।
  • মেয়াদ শেষ হওয়ার তারিখ: কুকির সর্বাধিক মেয়াদ। এটি অবশ্যই UTC-ফর্ম্যাট করা তারিখের স্ট্রিং হতে হবে, যেমন "Sat, 26 Oct 1985 08:21:00 GMT"। expires এবং max-age দুটিই সেট করা থাকলে, max-age-এর অগ্রাধিকার আছে।

  • httpOnly: true হলে, জাভাস্ক্রিপ্টকে কুকি অ্যাক্সেস করতে দেয় না।

  • max-age: কুকির মেয়াদ শেষ হওয়ার আগে পর্যন্ত সেকেন্ডের সংখ্যা। শূন্য বা ঋণাত্মক সংখ্যা লিখলে কুকির মেয়াদ সঙ্গে সঙ্গে শেষ হয়ে যাবে। expires এবং max-age দুটিই সেট করা থাকলে, max-age-কে অগ্রাধিকার দেওয়া হয়।

  • পাথ: অনুরোধ করা URL-এ অবশ্যই একটি পাথ থাকতে হবে, অন্যথায় ব্রাউজার কুকি হেডার পাঠাবে না।

  • secure: true-এ সেট করা থাকলে, https: এন্ডপয়েন্ট থেকে অনুরোধ করা হলে তবেই কুকি সার্ভারে পাঠানো হয়।

  • sameSite: ক্রস-অরিজিন অনুরোধের সাথে কুকি পাঠানো যাবে না বলে দাবি করে। 'strict', 'lax' বা 'none' হতে হবে।

সংশ্লিষ্ট অনুমতি

set_cookie


setPixelResponse

রেসপন্স বডিকে 1x1 GIF-এ সেট করে, কন্টেন্ট-টাইপ হেডারকে 'image/gif'-এ সেট করে, ক্যাশিং হেডারকে এমনভাবে সেট করে যাতে ইউজার এজেন্ট রেসপন্স ক্যাশ না করে এবং রেসপন্স স্ট্যাটাসকে 200-এ সেট করে।

মনে রাখবেন, ক্লায়েন্টকে উত্তর ফেরত পাঠানোর জন্য returnResponse কল করতে হবে।

সিনট্যাক্স

setPixelResponse();

সম্পর্কিত অনুমতি

access_response অনুমতি প্রয়োজন। অনুমতি এমনভাবে কনফিগার করতে হবে যাতে অন্তত এগুলির অ্যাক্সেস দেওয়া যায়:

  • headers - নিম্নলিখিত কীগুলির অনুমতি দিতে হবে
    • content-type
    • cache-control
    • expires
    • pragma
  • body
  • status

setResponseBody

আর্গুমেন্টে রেসপন্স বডি সেট করে।

মনে রাখবেন যে ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতে হবে।

সিনট্যাক্স

setResponseBody(body[, encoding]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
body স্ট্রিং রেসপন্স বডি হিসেবে সেট করার ভ্যালু।
encoding স্ট্রিং প্রতিক্রিয়া বডির ক্যারেক্টার এনকোডিং (ডিফল্ট হিসেবে 'utf8')। কাজ করে এমন ভ্যালুর মধ্যে রয়েছে 'ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary', এবং 'hex'।

সংশ্লিষ্ট অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • body

setResponseHeader

ফেরত পাঠানো উত্তরের মধ্যে একটি হেডার সেট করে। এই নামের (কেস-ইনসেনসিটিভ) কোনও হেডার আগে এই API-এর মাধ্যমে সেট করা হয়ে থাকলে, পরের কলটি আগের কলকারীর সেট করা ভ্যালু ওভাররাইট বা মুছে দেবে।

মনে রাখবেন, ক্লায়েন্টকে উত্তর ফেরত পাঠানোর জন্য returnResponse কল করতে হবে।

সিনট্যাক্স

setResponseHeader(name, value);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
name স্ট্রিং হেডারের নাম। HTTP হেডার নামে ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় না, তাই হেডারের নাম ছোট হাতের অক্ষরে লেখা হবে।
value স্ট্রিং অনির্দিষ্ট হেডারের মান। এটি null বা undefined হলে, এটি রেসপন্স থেকে নামযুক্ত হেডার মুছে দেয় যা ফেরত দেওয়া হবে।

সম্পর্কিত অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত আইটেমে অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • headers

setResponseStatus

যে উত্তর ফেরত পাঠানো হবে তার HTTP স্ট্যাটাস কোড সেট করে।

মনে রাখবেন, ক্লায়েন্টকে উত্তর পাঠানোর জন্য returnResponse কল করতে হবে।

সিনট্যাক্স

setResponseStatus(statusCode);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
statusCode number HTTP স্ট্যাটাস কোড ফেরত দেওয়া হবে।

সম্পর্কিত অনুমতি

access_response অনুমতি প্রয়োজন। কমপক্ষে নিম্নলিখিত আইটেমে অ্যাক্সেসের অনুমতি দিতে কনফিগার করতে হবে:

  • status

sha256

ইনপুটের SHA-256 ডাইজেস্ট গণনা করে এবং base64-এ এনকোড করা ডাইজেস্ট সহ একটি কলব্যাককে ইনভোক করে, যদি না options অবজেক্টটি একটি আলাদা আউটপুট এনকোডিং নির্দিষ্ট করে।

এই API সিগনেচার ও আচরণ ওয়েব কন্টেনারের sha256 API-এর সাথে মেলে; তবে, সার্ভার কন্টেনারের কাস্টম টেমপ্লেটকে আরও সহজ কোডের জন্য sha256Sync API ব্যবহার করতে হবে।

উদাহরণ

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 ফাংশন options অবজেক্ট অন্য কোনও আউটপুট এনকোডিং নির্দিষ্ট না করলে, base64-এ এনকোড করা, ফলাফল ডাইজেস্ট সহ কল করা হয়।
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" নামের "data" অংশটি বোঝায় যে এই API ব্যবহার করে শুধুমাত্র সাধারণ, ফাংশন নয় এমন ডেটা টাইপ সেভ করা যেতে পারে। 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);
});

সংশ্লিষ্ট অনুমতি

access_template_storage


testRegex

createRegex API-এর মাধ্যমে তৈরি করা regex-এর সাথে স্ট্রিং টেস্ট করে। regex ম্যাচ করলে 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 API থেকে পাওয়া, পরীক্ষা করার জন্য regex।
string স্ট্রিং টেস্ট করার জন্য টেস্ট স্ট্রিং।

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


toBase64

কোনও স্ট্রিংকে base64 বা base64url হিসেবে এনকোড করে। ডিফল্ট হিসেবে base64 এনকোডিং ব্যবহার করা হয়।

সিনট্যাক্স

toBase64(input, options);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
input স্ট্রিং এনকোড করার জন্য স্ট্রিং।
options অবজেক্ট API কনফিগারেশন ঐচ্ছিক। (নিচে বিকল্প দেখুন।)

বিকল্প

Option ধরন বিবরণ ন্যূনতম ভার্সন
urlEncoding বুলিয়ান সত্য হলে, ফলাফলটি base64url ফর্ম্যাট ব্যবহার করে এনকোড করা হবে। ১.০.০

উদাহরণ

const toBase64 = require('toBase64');

const base64Hello = toBase64('hello');
const base64UrlHello = toBase64('hello', {urlEncoding: true});

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


BigQuery

BigQuery ফাংশন প্রদান করে এমন একটি অবজেক্ট রিটার্ন করে।

BigQuery.insert ফাংশনটি BigQuery টেবিলে ডেটা লেখার অনুমতি দেয়। এটি একটি প্রমিস রিটার্ন করে যা সফলভাবে যোগ করার পরে সমাধান করে বা কোনও সমস্যা হলে প্রত্যাখ্যান করে।

যোগ করা হয়ে গেলে, কোনও আর্গুমেন্ট ছাড়াই প্রমিস রিজলভ হয়ে যায়।

যোগ করা না গেলে, প্রমিস অবজেক্টের একটি তালিকা সহ বাতিল করে দেয়, যেখানে সমস্যার কারণ এবং সমস্যা হলে সম্ভবত একটি রো অবজেক্ট থাকে। অনুরোধের কিছু অংশ সফলভাবে সম্পূর্ণ হতে পারে, তবে অন্যান্য অংশ নাও হতে পারে। এই ক্ষেত্রে, প্রতিটি সারির জন্য ত্রুটির তালিকা সহ প্রমিস বাতিল করা হয়। কোন সারিগুলি যোগ করা হয়েছে তা আলাদা করতে সাহায্য করার জন্য একটি সারি অবজেক্ট থাকে (নিচে ত্রুটির উদাহরণ দেখুন)। আরও তথ্যের জন্য ত্রুটি মেসেজ সংক্রান্ত BigQuery-এর ডকুমেন্টেশন দেখুন।

সিনট্যাক্স

BigQuery.insert(connectionInfo, rows[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
connectionInfo অবজেক্ট BigQuery টেবিলের সাথে কানেক্ট করার জন্য প্রয়োজনীয় তথ্য নির্ধারণ করে। একটি ঐচ্ছিক প্যারামিটার এবং দুটি প্রয়োজনীয় প্যারামিটার আছে:
  • projectId - ঐচ্ছিক Google Cloud Platform প্রোজেক্ট আইডি। বাদ দেওয়া হলে, projectId এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_CLOUD_PROJECT থেকে ততক্ষণ পর্যন্ত ফিরিয়ে আনা হয় যতক্ষণ পর্যন্ত প্রোজেক্ট আইডির জন্য access_bigquery অনুমতি সেটিং * বা GOOGLE_CLOUD_PROJECT-এ সেট করা থাকে। সার্ভার কন্টেনার Google Cloud-এ রান করলে, GOOGLE_CLOUD_PROJECT আগে থেকেই Google Cloud প্রোজেক্টের আইডিতে সেট করা থাকবে।
  • datasetId - BigQuery ডেটাসেট আইডি।
  • tableId - 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);

সংশ্লিষ্ট অনুমতি

access_bigquery


Firestore

Firestore ফাংশন প্রদান করে এমন একটি অবজেক্ট রিটার্ন করে।

এই API শুধুমাত্র নেটিভ মোডে Firestore-এ কাজ করে, Datastore মোডে Firestore-এ নয়। এছাড়াও, API শুধুমাত্র ডিফল্ট ডেটাবেস ব্যবহার করার ক্ষেত্রে কাজ করে।

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 একটি প্রমিস রিটার্ন করে যা যোগ করা বা পরিবর্তন করা ডকুমেন্টের আইডিতে রেজোলভ হয়। ট্রানজ্যাকশন বিকল্প ব্যবহার করা হলে, API এখনও প্রমিস রিটার্ন করে, কিন্তু এতে আইডি থাকবে না কারণ রাইটগুলি ব্যাচ করা হয়।

সিনট্যাক্স

Firestore.write(path, input[, options]);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
path স্ট্রিং ডকুমেন্ট বা কালেকশনের পাথ। '/' দিয়ে শুরু বা শেষ করা যাবে না।
input অবজেক্ট ডকুমেন্টে লেখার জন্য মান। মার্জ করার বিকল্প সেট করা থাকলে, API ইনপুট থেকে ডকুমেন্টে কী মার্জ করবে।
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 Array কোয়েরি শর্তাবলীর একটি অ্যারে। প্রতিটি কোয়েরি তিনটি ভ্যালু সহ অ্যারের ফর্ম্যাটে আসে: কী, অপারেটর এবং expectedValue। 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 number ঐচ্ছিক। কোয়েরি থেকে পাওয়া ফলাফলের সর্বাধিক সংখ্যা পরিবর্তন করে, ডিফল্ট মান ৫।
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 প্রোজেক্ট আইডি। বাদ দেওয়া হলে, যতক্ষণ না পর্যন্ত access_firestore প্রোজেক্ট আইডির জন্য অনুমতি সেটিংস * বা GOOGLE_CLOUD_PROJECT হিসেবে সেট করা হচ্ছে, ততক্ষণ পর্যন্ত projectId এনভায়রনমেন্ট ভেরিয়েবল 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 সমস্যার কোড অন্তর্ভুক্ত থাকতে পারে, তবে এর মধ্যেই সীমিত নয়।

সংশ্লিষ্ট অনুমতি

access_firestore


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

নিম্নলিখিত API একসাথে কাজ করে যাতে কন্টেনারের বিভিন্ন অংশের মধ্যে মেসেজ পাস করা যায়।


addMessageListener

এমন একটি ফাংশন যোগ করে যা নির্দিষ্ট ধরনের মেসেজ শোনে। এই ধরনের কোনও মেসেজ sendMessage API (সাধারণত কোনও ট্যাগের মাধ্যমে) ব্যবহার করে পাঠানো হলে, কলব্যাক সিঙ্ক্রোনাসভাবে রান করবে। কলব্যাক দুটি প্যারামিটার সহ রান করে:

  1. messageType:string
  2. message:Object

ক্লায়েন্টে কলব্যাক যোগ করা হলে, ক্লায়েন্ট তৈরি করা সব ইভেন্ট জুড়ে কলব্যাক মেসেজ পাবে। কলব্যাক যদি শুধুমাত্র নির্দিষ্ট ইভেন্ট থেকে মেসেজ রিসিভ করে, তাহলে runContainer API-এর onStart ফাংশনে bindToEvent ব্যবহার করে এই API-কে ইভেন্টের সাথে বাইন্ড করুন। উদাহরণ দেখুন।

সিনট্যাক্স

const addMessageListener = require('addMessageListener');

addMessageListener('send_pixel', (messageType, message) => {
  // This will be run whenever something sends a 'send_pixel' message.
});

প্যারামিটার

প্যারামিটার ধরন বিবরণ
messageType স্ট্রিং যে ধরনের মেসেজ শুনতে হবে। মানটি স্ট্রিং না হলে, এটি স্ট্রিংয়ে রূপান্তরিত হবে।
callback ফাংশন প্রযোজ্য মেসেজের ধরন অনুযায়ী মেসেজ পাঠানো হলে, কলব্যাক রান করে। কলব্যাক কোনও ফাংশন না হলে, API কিছুই করবে না।

উদাহরণ

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 অনুমতি প্রয়োজন। অনুমতি দেওয়ার জন্য কনফিগারেশন অবশ্যই কমপক্ষে:

  • Usagelisten বা listen_and_send সহ মেসেজের ধরন।

hasMessageListener

প্রদত্ত মেসেজের ধরনের জন্য মেসেজ লিসেনার যোগ করা হলে, 'ট্রু' রিটার্ন করে। অন্যথায়, false রিটার্ন করে।

সিনট্যাক্স

const hasMessageListener = require('hasMessageListener');

hasMessageListener('send_pixel');

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।


sendMessage

রেজিস্টার করা লিসনারকে নির্দিষ্ট ধরনের মেসেজ পাঠায়। এটি কন্টেনার রান করা ক্লায়েন্টকে ট্যাগ থেকে মেসেজ পাঠানোর জন্য ব্যবহার করা যেতে পারে।

সিনট্যাক্স

const sendMessage = require('sendMessage');

sendMessage('send_pixel', {url: 'https://analytics.example.com/collect'});

প্যারামিটার

প্যারামিটার ধরন বিবরণ
messageType স্ট্রিং মেসেজের ধরন যা পাঠাতে হবে। মানটি স্ট্রিং না হলে, এটিকে স্ট্রিংয়ে পরিবর্তন করা হবে।
message অবজেক্ট যে মেসেজ পাঠাতে হবে। মেসেজটি অবজেক্ট না হলে, API কিছু করবে না।

সম্পর্কিত অনুমতি

use_message অনুমতি প্রয়োজন। অনুমতি দেওয়ার জন্য অন্তত নিম্নলিখিত অনুমতি কনফিগার করতে হবে:

  • listen_and_send-এর Usage বা 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) এমন অবজেক্ট হলে, যা ফ্রোজেন নয়, তাহলে এটি true রিটার্ন করে, এমনকি দ্বিতীয় ইনপুট ভ্যালু (keyToDelete) এমন কী নির্দিষ্ট করলেও যা নেই। অন্য সব ক্ষেত্রে এটি 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 যেকোনও যে অবজেক্টের মান গণনা করতে হবে। ইনপুট কোনও অবজেক্ট না হলে, এটি একটি অবজেক্টে জোরপূর্বক পরিবর্তন করা হবে।

Object.entries

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের কী/ভ্যালু পেয়ার গণনা করতে হবে। ইনপুট অবজেক্ট না হলে, এটি অবজেক্টে পরিবর্তন করা হবে।

Object.freeze

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্ট ফ্রিজ করতে হবে। ইনপুট কোনও অবজেক্ট না হলে, এটি ফ্রোজেন অবজেক্ট হিসেবে বিবেচিত হবে।

Object.delete

প্যারামিটার ধরন বিবরণ
objectInput যেকোনও যে অবজেক্টের কী মুছতে হবে।
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

এমন একটি অবজেক্ট রিটার্ন করে যা প্রমিজের সাথে ইন্টার‍্যাক্ট করার পদ্ধতি প্রদান করে।

প্রমিস, জাভাস্ক্রিপ্ট প্রমিসের সমতুল্য। প্রতিটি ইনস্ট্যান্সে তিনটি পদ্ধতি আছে যা একটি Promise রিটার্ন করে। এটি কোনও 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 Array ভ্যালু বা প্রমিজের অ্যারে। ইনপুট যদি প্রমিস না হয়, তাহলে ইনপুট এমনভাবে পাস করা হয় যেন এটি প্রমিসের সমাধান করা ভ্যালু। ইনপুট অ্যারে না হলে সমস্যা দেখায়।

উদাহরণ

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 ফাংশন দুটি ফাংশন -- resolve ও reject -- সহ একটি ফাংশন আহ্বান করা হয়। সংশ্লিষ্ট প্যারামিটারটি কল করা হলে, রিটার্ন করা প্রমিসটি সমাধান বা বাতিল করা হবে। রিজলভার কোনও ফাংশন না হলে সমস্যা দেখায়।

উদাহরণ

const Promise = require('Promise');

return Promise.create((resolve, reject) => {
  // Do asynchronous work that eventually calls resolve() or reject()
});

সংশ্লিষ্ট অনুমতি

কোনওটিই নয়।

Test API

Google Tag Manager-এ কাস্টম টেমপ্লেটের জন্য টেস্ট তৈরি করতে, এইসব API স্যান্ডবক্স করা JavaScript টেস্টের সাথে কাজ করে। এইসব টেস্ট API-তে require() স্টেটমেন্টের প্রয়োজন নেই। [কাস্টম টেমপ্লেট টেস্ট সম্পর্কে আরও জানুন]।


assertApi

একটি ম্যাচিং অবজেক্ট রিটার্ন করে যা প্রদত্ত API সম্পর্কে সাবলীলভাবে অ্যাসার্শন করতে ব্যবহার করা যেতে পারে।

সিনট্যাক্স

assertApi(apiName)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
apiName স্ট্রিং চেক করার জন্য API-এর নাম; 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, Google-এর [Truth] লাইব্রেরির উপর ভিত্তি করে তৈরি করা হয়েছে। এটি এমন একটি অবজেক্ট রিটার্ন করে যা সাবজেক্টের ভ্যালু সম্পর্কে সাবলীলভাবে অ্যাসারশন করতে ব্যবহার করা যেতে পারে। অ্যাসার্শন ব্যর্থ হলে পরীক্ষাটি অবিলম্বে বন্ধ হয়ে যাবে এবং এটিকে ব্যর্থ হিসেবে চিহ্নিত করা হবে। তবে, একটি টেস্টে ব্যর্থ হলে অন্য টেস্ট কেসে তার প্রভাব পড়বে না।

সিনট্যাক্স

assertThat(actual, opt_message)

প্যারামিটার

প্যারামিটার ধরন বিবরণ
actual যেকোনও ফ্লুয়েন্ট চেক করার জন্য যে ভ্যালু ব্যবহার করা হবে।
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) Asserts that the subject is equal to the given value. এটি একটি মান তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভলি তুলনা করা হয়।
isNotEqualTo(expected) সাবজেক্ট প্রদত্ত মানের সমান নয় বলে দাবি করে। এটি হল ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভ পদ্ধতিতে তুলনা করা হয়।
isAnyOf(...expected) নিশ্চিত করে যে সাবজেক্ট প্রদত্ত ভ্যালুর মধ্যে একটির সমান। এটি হল ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভ পদ্ধতিতে তুলনা করা হয়।
isNoneOf(...expected) নিশ্চিত করে যে সাবজেক্ট প্রদত্ত কোনও ভ্যালুর সমান নয়। এটি একটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভলি তুলনা করা হয়।
isStrictlyEqualTo(expected) দাবি করে যে সাবজেক্টটি প্রদত্ত মানের সাথে হুবহু সমান (===)।
isNotStrictlyEqualTo(expected) দাবি করে যে সাবজেক্টটি প্রদত্ত মানের সাথে কঠোরভাবে সমান (!==) নয়।
isGreaterThan(expected) অর্ডার করা তুলনার ক্ষেত্রে, সাবজেক্ট প্রদত্ত ভ্যালুর চেয়ে বেশি (>) হলে তা অ্যাসার্ট করে।
isGreaterThanOrEqualTo(expected) অর্ডার করা তুলনার ক্ষেত্রে সাবজেক্ট প্রদত্ত ভ্যালুর থেকে বেশি বা সমান (>=) কিনা তা নিশ্চিত করে।
isLessThan(expected) নিশ্চিত করে যে, একটি অর্ডার করা তুলনার ক্ষেত্রে, সাবজেক্ট প্রদত্ত ভ্যালুর চেয়ে কম (<)।
isLessThanOrEqualTo(expected) দাবি করে যে সাবজেক্টটি একটি ক্রমবদ্ধ তুলনার ক্ষেত্রে প্রদত্ত ভ্যালুর (<=) সমান বা তার চেয়ে ছোট।
contains(...expected) নিশ্চিত করে যে সাবজেক্ট হল একটি অ্যারে বা স্ট্রিং যাতে যেকোনও ক্রমে প্রদত্ত সব ভ্যালু থাকে। এটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট পুনরাবৃত্তিমূলকভাবে তুলনা করা হয়।
doesNotContain(...expected) Asserts that the subject is an array or string that contains none of the given values. এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভ পদ্ধতিতে তুলনা করা হয়।
containsExactly(...expected) নিশ্চিত করে যে সাবজেক্ট হল এমন একটি অ্যারে যাতে প্রদত্ত সব ভ্যালু যেকোনও ক্রমে থাকে এবং অন্য কোনও ভ্যালু থাকে না। এটি ভ্যালুর তুলনা, রেফারেন্সের তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্ট রিকার্সিভলি তুলনা করা হয়।
doesNotContainExactly(...expected) নিশ্চিত করে যে সাবজেক্ট হল এমন একটি অ্যারে যাতে প্রদত্ত ভ্যালু থেকে আলাদা ভ্যালুর সেট যেকোনও ক্রমে থাকে। এটি ভ্যালু তুলনা, রেফারেন্স তুলনা নয়। অবজেক্ট ও অ্যারের কন্টেন্টকে রিকাসিভ পদ্ধতিতে তুলনা করা হয়।
hasLength(expected) নিশ্চিত করে যে সাবজেক্টটি প্রদত্ত দৈর্ঘ্য সহ একটি অ্যারে বা স্ট্রিং। ভ্যালু অ্যারে বা স্ট্রিং না হলে অ্যাসার্শন সবসময় ব্যর্থ হয়।
isEmpty() সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যা খালি (দৈর্ঘ্য = 0) বলে দাবি করে। ভ্যালু অ্যারে বা স্ট্রিং না হলে অ্যাসারশন সবসময় ব্যর্থ হয়।
isNotEmpty() সাবজেক্টটি একটি অ্যারে বা স্ট্রিং যা খালি নয় তা নিশ্চিত করে (দৈর্ঘ্য > ০)। মানটি অ্যারে বা স্ট্রিং না হলে অ্যাসারশন সবসময় ব্যর্থ হয়।
isArray() সাবজেক্টের ধরন যে অ্যারে তা নিশ্চিত করে।
isBoolean() সাবজেক্টের ধরন বুলিয়ান বলে দাবি করে।
isFunction() Asserts that the type of the subject is a function.
isNumber() Asserts that the type of the subject is a number.
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 আপনাকে স্যান্ডবক্স করা API-এর আচরণ ওভাররাইড করার অনুমতি দেয়। মক API টেমপ্লেট কোডে ব্যবহার করা নিরাপদ, তবে এটি শুধুমাত্র টেস্ট মোডে কাজ করে। প্রতিটি টেস্ট চালানোর আগে মক রিসেট করা হয়।

সিনট্যাক্স

mock(apiName, returnValue);

প্যারামিটার

প্যারামিটার ধরন বিবরণ
apiName স্ট্রিং মক করার জন্য API-এর নাম; require()-এ পাস করা স্ট্রিংয়ের মতো একই স্ট্রিং
returnValue যেকোনও 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 API আপনাকে স্যান্ডবক্স করা API-এর আচরণ ওভাররাইড করতে দেয় যা একটি অবজেক্ট রিটার্ন করে। টেমপ্লেট কোডে API ব্যবহার করা নিরাপদ, তবে এটি শুধুমাত্র টেস্ট মোডে কাজ করে। প্রতিটি টেস্ট চালানোর আগে মক রিসেট করা হয়।

সিনট্যাক্স

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'});