MCPcopy
hub / github.com/goenning/google-indexing-script / getPublishMetadata

Function getPublishMetadata

src/shared/gsc.ts:238โ€“283  ยท  view source on GitHub โ†—
(accessToken: string, url: string, options?: { retriesOnRateLimit: number })

Source from the content-addressed store, hash-verified

236 * @returns The status of the request.
237 */
238export async function getPublishMetadata(accessToken: string, url: string, options?: { retriesOnRateLimit: number }) {
239 const response = await fetchRetry(
240 `https://indexing.googleapis.com/v3/urlNotifications/metadata?url=${encodeURIComponent(url)}`,
241 {
242 method: "GET",
243 headers: {
244 "Content-Type": "application/json",
245 Authorization: `Bearer ${accessToken}`,
246 },
247 }
248 );
249
250 if (response.status === 403) {
251 console.error(`๐Ÿ” This service account doesn't have access to this site.`);
252 console.error(`Response was: ${response.status}`);
253 console.error(await response.text());
254 }
255
256 if (response.status === 429) {
257 if (options?.retriesOnRateLimit && options?.retriesOnRateLimit > 0) {
258 const RPM_WATING_TIME = (QUOTA.rpm.retries - options.retriesOnRateLimit + 1) * QUOTA.rpm.waitingTime; // increase waiting time for each retry
259 console.log(
260 `๐Ÿšฆ Rate limit exceeded for read requests. Retries left: ${options.retriesOnRateLimit}. Waiting for ${
261 RPM_WATING_TIME / 1000
262 }sec.`
263 );
264 await new Promise((resolve) => setTimeout(resolve, RPM_WATING_TIME));
265 await getPublishMetadata(accessToken, url, { retriesOnRateLimit: options.retriesOnRateLimit - 1 });
266 } else {
267 console.error("๐Ÿšฆ Rate limit exceeded, try again later.");
268 console.error("");
269 console.error(" Quota: https://developers.google.com/search/apis/indexing-api/v3/quota-pricing#quota");
270 console.error(" Usage: https://console.cloud.google.com/apis/enabled");
271 console.error("");
272 process.exit(1);
273 }
274 }
275
276 if (response.status >= 500) {
277 console.error(`โŒ Failed to get publish metadata.`);
278 console.error(`Response was: ${response.status}`);
279 console.error(await response.text());
280 }
281
282 return response.status;
283}
284
285/**
286 * Requests indexing for the given URL.

Callers 1

indexFunction ยท 0.90

Calls 1

fetchRetryFunction ยท 0.90

Tested by

no test coverage detected