From d03f0d054eaefd9593bd504d16f967d91472faea Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:26:14 +0200 Subject: [PATCH 1/9] Add sync viewer layer background API handler --- src/api/sync-viewer-layer-background.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/api/sync-viewer-layer-background.js diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js new file mode 100644 index 0000000..db8ec9a --- /dev/null +++ b/src/api/sync-viewer-layer-background.js @@ -0,0 +1,12 @@ +import { withServerDefaults } from '../lib/with-server-defaults' + +export const handler = withServerDefaults(async (event, _) => { + /* Protect this endpoint by using a token */ + if (process.env.SYNC_LAYER_API_TOKEN !== event.headers['x-api-key']) { + return { + statusCode: 401, + } + } + + console.log('Syncing layer', JSON.parse(event.body, null, 2)) +}) From 52656a150fed11e3262cac0eaa489e7ab343ccac Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Tue, 30 Jul 2024 11:34:31 +0200 Subject: [PATCH 2/9] Add sync and fetch viewer layer functionalities --- src/api/sync-viewer-layer-background.js | 196 +++++++++++++++++++++++- src/api/viewer-layer.js | 49 ++++++ src/lib/fetch-viewer-layer-xml.js | 184 ++++++++++++++++++++++ 3 files changed, 428 insertions(+), 1 deletion(-) create mode 100644 src/api/viewer-layer.js create mode 100644 src/lib/fetch-viewer-layer-xml.js diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index db8ec9a..9d8308f 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -1,4 +1,53 @@ +import { Geonetwork } from '../lib/geonetwork' +import { datocmsRequest } from '../lib/datocms' +import { addThumbnailsToRecord } from '../lib/add-thumbnails-to-record' import { withServerDefaults } from '../lib/with-server-defaults' +import { buildMenuTree } from '../lib/build-menu-tree' +import { findGeonetworkInstances } from '../lib/find-geonetwork-instances' +import { fetchViewerLayerXML } from '../lib/fetch-viewer-layer-xml' +import { formatMenusRecursive } from '../lib/format-menu' +import Mailjet from 'node-mailjet' + +const mailjet = new Mailjet({ + apiKey: process.env.MAILJET_API_TOKEN, + apiSecret: process.env.MAILJET_API_SECRET, +}) + +const viewersWithLayersQuery = /* graphql */ ` +query viewersWithLayers ($first: IntType, $skip: IntType = 0, $locale: SiteLocale = nl) { + menus: allMenus(first: $first, skip: $skip, locale: $locale) { + id + geonetwork { + baseUrl + username + password + } + errorNotificationContacts { + email + } + children: viewerLayers { + id + } + parent { + id + } + } + _allMenusMeta { + count + } +}` + +const viewerLayerByIdQuery = /* graphql */ ` +query LayerById($id: ItemId) { + viewerLayer(filter: {id: {eq: $id}}) { + layer { + thumbnails { + filename + url + } + } + } +}` export const handler = withServerDefaults(async (event, _) => { /* Protect this endpoint by using a token */ @@ -8,5 +57,150 @@ export const handler = withServerDefaults(async (event, _) => { } } - console.log('Syncing layer', JSON.parse(event.body, null, 2)) + const layerData = JSON.parse(event.body) + + const layerId = layerData.entity.id + + const { menus } = await datocmsRequest({ + query: viewersWithLayersQuery, + }) + const formattedMenus = formatMenusRecursive(menus) + const menuTree = buildMenuTree(formattedMenus) + + try { + await syncViewerLayers(menuTree, layerData.event_type, layerId) + } + catch (e) { + console.log('The following error occured', e.message) + + // for (let email of findEmailContactsForLayerId(menuTree, layerId)) { + // console.log('Sending email to', email) + + // await mailjet.post('send', { version: 'v3.1' }).request({ + // Messages: [ + // { + // From: { + // Email: process.env.MAILJET_FROM_EMAIL, + // }, + // To: [ + // { + // Email: email, + // }, + // ], + // Subject: `Fout bij opslaan metadata voor laag ${layerId}`, + // HTMLPart: e.message, + // }, + // ], + // }) + // } + } + }) + +async function syncViewerLayers(menuTree, eventType, viewerLayerId) { + const geonetworkInstances = findGeonetworkInstances(menuTree, viewerLayerId) + + const geonetworkInstancesArray = Array.from(geonetworkInstances) + + const xml = await fetchViewerLayerXML({ id: layerId }) + + // Can occur when no update needs to be done (because there is no factsheet or inspireMetadata) + if (xml === null) { + return + } + + const requestsPromises = geonetworkInstancesArray.map( + async ([_, geonetworkInstance]) => { + const { baseUrl, username, password } = geonetworkInstance + + const geonetwork = new Geonetwork( + baseUrl + 'geonetwork/srv/api', + username, + password + ) + + switch (eventType) { + case 'create': { + await geonetwork.recordsRequest({ + url: '?publishToAll=true', + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + body: xml, + }) + + break + } + + case 'publish': { + await geonetwork.recordsRequest({ + url: '?uuidProcessing=OVERWRITE&publishToAll=true', + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + body: xml, + }) + + break + } + } + + switch (eventType) { + case 'create': + case 'publish': + const { + layer: { thumbnails }, + } = await datocmsRequest({ + query: viewerLayerByIdQuery, + variables: { id: layerId }, + }) + + await addThumbnailsToRecord(thumbnails, layerId, geonetwork) + } + } + ) + + const results = await Promise.allSettled(requestsPromises) + + const errors = results.filter(result => result.status === 'rejected') + + if (errors.length) { + const errorMessage = `` + throw new Error(errorMessage) + } + +} + +function findEmailContactsForLayerId(menuTree, layerId) { + const contacts = new Set() + + menuTree.forEach((viewer) => { + + const findInMenu = (menu) => { + const { children } = menu + + if (children) { + children.forEach((child) => { + + if (child.layer.id === layerId) { + const { errorNotificationContacts } = viewer + + if (errorNotificationContacts.length) { + for (let { email } of errorNotificationContacts) { + contacts.add(email) + } + } + } + + findInMenu(child) + }) + } + } + + findInMenu(viewer) + }) + + return contacts +} diff --git a/src/api/viewer-layer.js b/src/api/viewer-layer.js new file mode 100644 index 0000000..cc43139 --- /dev/null +++ b/src/api/viewer-layer.js @@ -0,0 +1,49 @@ +import convert from 'xml-js' +import { withServerDefaults } from '../lib/with-server-defaults' +import { contentTypes } from '../lib/constants' +import { fetchViewerLayerXML } from '../lib/fetch-viewer-layer-xml' + +export const handler = withServerDefaults(async (event, _) => { + const { id, format } = event.queryStringParameters + + if (!id) { + return { + statusCode: 404, + body: JSON.stringify({ error: 'id query parameter is required' }), + } + } + + if (!format) { + return { + statusCode: 404, + body: JSON.stringify({ error: 'format query parameter is required' }), + } + } + + if (!['json', 'xml'].includes(format)) { + return { + statusCode: 400, + body: JSON.stringify({ + error: + 'format query parameter must be one of the following values: json|xml', + }), + } + } + + let formatted = await fetchViewerLayerXML({ + id, + }) + + if (format === 'json') { + formatted = convert.xml2json(formatted, { + compact: true, + }) + } + + return { + body: formatted, + headers: { + 'content-type': contentTypes[format], + }, + } +}) diff --git a/src/lib/fetch-viewer-layer-xml.js b/src/lib/fetch-viewer-layer-xml.js new file mode 100644 index 0000000..346ef70 --- /dev/null +++ b/src/lib/fetch-viewer-layer-xml.js @@ -0,0 +1,184 @@ +import { datocmsRequest } from './datocms' +import https from 'https' +import { format as formatInspireMetadataXml } from './format-inspire-metadata-xml' +import { format as formatFactsheetXml } from './format-factsheet-xml' +import fetch from 'node-fetch' +import convert from 'xml-js' + +const query = /* graphql */ ` +query LayerById($id: ItemId) { + viewerLayer(filter: {id: {eq: $id}}) { + id + useFactsheetAsMetadata + inspireMetadata { + _updatedAt + citationTitle + citationDateDate + citationDateDatetype + electronicmailaddress + role + organisationname + abstract + identificationinfoStatus + topiccategories { + topicCategoryItem + } + descriptivekeywordsKeywords { + title + } + resourceconstraintsAccessconstraints + resourceconstraintsUseconstraints + mdSpatialrepresentationtypecode + thesaurusname + thesaurusdatum + thesaurusdatumType + resourceconstraintsUseconstraints + hierarchylevel + lineageStatement + metadatastandardname + metadatastandardversion + links { + protocol + url + name + description + } + } + factsheets { + _updatedAt + id + title + titelNaamMeetMonitorprogramma + urlOriginalFile + naamAansturendeOrganisatie + datumVoltooiing + datumVanDeBron + datumtypeVanDeBron + samenvatting + identificationinfoStatus + doelWaarvoorDataWordenVerzameld + onderwerp { + topicCategoryItem + } + naamUitvoerendeDienstOrganisatie + rolContactpersoon + geografischGebied + toepassingsschaal + gebruiksbeperkingen + overigeBeperkingenInGebruik + themas { + title + } + temporeleDekking + hierarchieniveau + volledigheid + nauwkeurigheid + algemeneBeschrijvingVanHerkomst + inwinningsmethode + beschrijvingUitgevoerdeBewerkingen + meetvariabelen + meetmethodiek + soortDataset + kostenOpJaarbasis + soortenoverzicht + habitats + } + links { + protocol + url + name + description + } + pointOfContactOrganisations { + organisationName + email + rol + } + layer { + name + url + layer + indexableWfsProperties + } + } +} +` + +function recursivelyFindLayer(layers, name) { + const layerList = Array.isArray(layers) + ? layers + : [layers] + + for (let layer of layerList) { + if (layer.Name && layer.Name._text === name) { + return layer + } + + if (layer.Layer) { + const foundLayer = recursivelyFindLayer(layer.Layer, name) + if (foundLayer) { + return foundLayer + } + } + } + + return null +} + +export async function fetchViewerLayerXML({ id }) { + const { viewerLayer: { + layer, + ...viewerLayer + } } = await datocmsRequest({ query, variables: { id } }) + + console.log(layer) + + const data = { + layer: { + ...layer, + ...viewerLayer, + } + } + + const getCapabilitiesUrl = `${data.layer.url}?service=WMS&request=GetCapabilities` + + const httpsAgent = new https.Agent({ + rejectUnauthorized: false, + }) + + const capabilitiesXml = await fetch(getCapabilitiesUrl, { + agent: httpsAgent, + }).then((res) => res.text()) + + const capabilities = JSON.parse( + convert.xml2json(capabilitiesXml, { + compact: true, + }) + ) + + const layerInfo = recursivelyFindLayer(capabilities.WMS_Capabilities.Capability.Layer, data.layer.layer) + + let formatted = null + + if (data.layer.useFactsheetAsMetadata) { + const factsheet = data.layer.factsheets[0] + + if (factsheet) { + formatted = formatFactsheetXml({ + id, + layerInfo, + layer: data.layer, + factsheet, + }) + } + + } else if (data.layer.inspireMetadata) { + formatted = formatInspireMetadataXml({ + id, + layerInfo, + layer: data.layer, + }) + } + + return formatted +} From d6b3cf43c61a397c8b69aec09317d179e117f18a Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:08:07 +0200 Subject: [PATCH 3/9] Refactor variable names for layer ID handling --- src/api/sync-viewer-layer-background.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index 9d8308f..3fb2be1 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -59,7 +59,7 @@ export const handler = withServerDefaults(async (event, _) => { const layerData = JSON.parse(event.body) - const layerId = layerData.entity.id + const viewerLayerId = layerData.entity.id const { menus } = await datocmsRequest({ query: viewersWithLayersQuery, @@ -68,7 +68,7 @@ export const handler = withServerDefaults(async (event, _) => { const menuTree = buildMenuTree(formattedMenus) try { - await syncViewerLayers(menuTree, layerData.event_type, layerId) + await syncViewerLayers(menuTree, layerData.event_type, viewerLayerId) } catch (e) { console.log('The following error occured', e.message) @@ -102,7 +102,7 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { const geonetworkInstancesArray = Array.from(geonetworkInstances) - const xml = await fetchViewerLayerXML({ id: layerId }) + const xml = await fetchViewerLayerXML({ id: viewerLayerId }) // Can occur when no update needs to be done (because there is no factsheet or inspireMetadata) if (xml === null) { @@ -151,13 +151,15 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { case 'create': case 'publish': const { - layer: { thumbnails }, + viewerLayer: { + layer: { thumbnails }, + } } = await datocmsRequest({ query: viewerLayerByIdQuery, - variables: { id: layerId }, + variables: { id: viewerLayerId }, }) - await addThumbnailsToRecord(thumbnails, layerId, geonetwork) + await addThumbnailsToRecord(thumbnails, viewerLayerId, geonetwork) } } ) From ec73eadb7cb0b79e90e9d385660fffaf4b4120de Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:20:43 +0200 Subject: [PATCH 4/9] add log --- src/api/sync-viewer-layer-background.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index 3fb2be1..c725a9a 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -102,6 +102,8 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { const geonetworkInstancesArray = Array.from(geonetworkInstances) + console.log(geonetworkInstancesArray) + const xml = await fetchViewerLayerXML({ id: viewerLayerId }) // Can occur when no update needs to be done (because there is no factsheet or inspireMetadata) From 96331f43b2cd8d0ee55fa75c6afe28ef1f10361a Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Tue, 30 Jul 2024 16:18:35 +0200 Subject: [PATCH 5/9] Remove debug log from syncViewerLayers --- src/api/sync-viewer-layer-background.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index c725a9a..3fb2be1 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -102,8 +102,6 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { const geonetworkInstancesArray = Array.from(geonetworkInstances) - console.log(geonetworkInstancesArray) - const xml = await fetchViewerLayerXML({ id: viewerLayerId }) // Can occur when no update needs to be done (because there is no factsheet or inspireMetadata) From f84caccf784697efc13cea5a615c4e27884af7e7 Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Wed, 31 Jul 2024 10:57:04 +0200 Subject: [PATCH 6/9] Simplify thumbnail fetch in syncViewerLayers --- src/api/sync-viewer-layer-background.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index 3fb2be1..88d4ff3 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -150,16 +150,14 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { switch (eventType) { case 'create': case 'publish': - const { - viewerLayer: { - layer: { thumbnails }, - } - } = await datocmsRequest({ + const { viewerLayer } = await datocmsRequest({ query: viewerLayerByIdQuery, variables: { id: viewerLayerId }, }) - await addThumbnailsToRecord(thumbnails, viewerLayerId, geonetwork) + console.log('viewerLayer', viewerLayer) + + await addThumbnailsToRecord(viewerLayer?.layer?.thumbnails, viewerLayerId, geonetwork) } } ) From 3cfc367f5d9f3801fe42b7e6c30746c8f441d614 Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:41:43 +0200 Subject: [PATCH 7/9] Update sync logic and error handling for viewer layers --- src/api/sync-viewer-layer-background.js | 98 +++++++++++++++++-------- src/lib/fetch-layer-xml.js | 2 - src/lib/fetch-viewer-layer-xml.js | 2 - src/lib/find-geonetwork-instances.js | 6 +- 4 files changed, 73 insertions(+), 35 deletions(-) diff --git a/src/api/sync-viewer-layer-background.js b/src/api/sync-viewer-layer-background.js index 88d4ff3..aa13b48 100644 --- a/src/api/sync-viewer-layer-background.js +++ b/src/api/sync-viewer-layer-background.js @@ -7,14 +7,15 @@ import { findGeonetworkInstances } from '../lib/find-geonetwork-instances' import { fetchViewerLayerXML } from '../lib/fetch-viewer-layer-xml' import { formatMenusRecursive } from '../lib/format-menu' import Mailjet from 'node-mailjet' +import fs from 'fs'; const mailjet = new Mailjet({ apiKey: process.env.MAILJET_API_TOKEN, apiSecret: process.env.MAILJET_API_SECRET, }) -const viewersWithLayersQuery = /* graphql */ ` -query viewersWithLayers ($first: IntType, $skip: IntType = 0, $locale: SiteLocale = nl) { +const viewersWithViewerLayersQuery = /* graphql */ ` +query viewersWithViewerLayersQuery ($first: IntType, $skip: IntType = 0, $locale: SiteLocale = nl) { menus: allMenus(first: $first, skip: $skip, locale: $locale) { id geonetwork { @@ -57,46 +58,87 @@ export const handler = withServerDefaults(async (event, _) => { } } - const layerData = JSON.parse(event.body) + const data = JSON.parse(event.body) - const viewerLayerId = layerData.entity.id + const id = data.entity.id const { menus } = await datocmsRequest({ - query: viewersWithLayersQuery, + query: viewersWithViewerLayersQuery, + preview: true }) const formattedMenus = formatMenusRecursive(menus) const menuTree = buildMenuTree(formattedMenus) try { - await syncViewerLayers(menuTree, layerData.event_type, viewerLayerId) + const type = data.related_entities.find(entity => entity.type === 'item_type').attributes.api_key + + if (type === 'viewer_layer') { + await syncViewerLayers(menuTree, data.event_type, id) + } else if (type === 'menu') { + await syncViewer(menuTree, data.event_type, id) + } } catch (e) { console.log('The following error occured', e.message) - // for (let email of findEmailContactsForLayerId(menuTree, layerId)) { - // console.log('Sending email to', email) - - // await mailjet.post('send', { version: 'v3.1' }).request({ - // Messages: [ - // { - // From: { - // Email: process.env.MAILJET_FROM_EMAIL, - // }, - // To: [ - // { - // Email: email, - // }, - // ], - // Subject: `Fout bij opslaan metadata voor laag ${layerId}`, - // HTMLPart: e.message, - // }, - // ], - // }) - // } - } + for (let email of findEmailContactsForLayerId(menuTree, layerId)) { + console.log('Sending email to', email) + await mailjet.post('send', { version: 'v3.1' }).request({ + Messages: [ + { + From: { + Email: process.env.MAILJET_FROM_EMAIL, + }, + To: [ + { + Email: email, + }, + ], + Subject: `Fout bij opslaan metadata voor laag ${layerId}`, + HTMLPart: e.message, + }, + ], + }) + } + } }) +async function syncViewer(menuTree, eventType, viewerId) { + const viewerLayers = new Set() + + const findChilrenInMenu = (menu, viewerId) => { + const { children } = menu + + if (children) { + children.forEach((child) => { + if (child.id === viewerId && child.children) { + child.children.forEach((viewerLayer) => { + viewerLayers.add(viewerLayer.id) + }) + } + + findChilrenInMenu(child, viewerId) + }) + } + } + + menuTree.forEach((viewer) => { + findChilrenInMenu(viewer, viewerId) + }) + + const viewerLayersArray = Array.from(viewerLayers) + + + const requestsPromises = viewerLayersArray.map( + async (viewerLayerId) => { + await syncViewerLayers(menuTree, eventType, viewerLayerId) + } + ) + + const results = await Promise.allSettled(requestsPromises) +} + async function syncViewerLayers(menuTree, eventType, viewerLayerId) { const geonetworkInstances = findGeonetworkInstances(menuTree, viewerLayerId) @@ -155,8 +197,6 @@ async function syncViewerLayers(menuTree, eventType, viewerLayerId) { variables: { id: viewerLayerId }, }) - console.log('viewerLayer', viewerLayer) - await addThumbnailsToRecord(viewerLayer?.layer?.thumbnails, viewerLayerId, geonetwork) } } diff --git a/src/lib/fetch-layer-xml.js b/src/lib/fetch-layer-xml.js index f42b0f4..7d23809 100644 --- a/src/lib/fetch-layer-xml.js +++ b/src/lib/fetch-layer-xml.js @@ -130,8 +130,6 @@ export async function fetchLayerXML({ id }) { ...viewerLayer } } = await datocmsRequest({ query, variables: { id } }) - console.log(layer) - const data = { layer: { ...layer, diff --git a/src/lib/fetch-viewer-layer-xml.js b/src/lib/fetch-viewer-layer-xml.js index 346ef70..a5bbb94 100644 --- a/src/lib/fetch-viewer-layer-xml.js +++ b/src/lib/fetch-viewer-layer-xml.js @@ -131,8 +131,6 @@ export async function fetchViewerLayerXML({ id }) { ...viewerLayer } } = await datocmsRequest({ query, variables: { id } }) - console.log(layer) - const data = { layer: { ...layer, diff --git a/src/lib/find-geonetwork-instances.js b/src/lib/find-geonetwork-instances.js index 2b33b58..99fc36e 100644 --- a/src/lib/find-geonetwork-instances.js +++ b/src/lib/find-geonetwork-instances.js @@ -1,13 +1,15 @@ -export function findGeonetworkInstances(menuTree, layerId) { +export function findGeonetworkInstances(menuTree, id) { const geonetworkInstances = new Map() + console.log('searching for geonetwork instances with id', id) + menuTree.forEach((viewer) => { const findInMenu = (menu) => { const { children } = menu if (children) { children.forEach((child) => { - if (child.id === layerId) { + if (child.id === id) { const { geonetwork } = viewer if (geonetwork) { From 493c5bd67cb7408317d3648ac6eac7245e785ed5 Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Fri, 2 Aug 2024 14:03:57 +0200 Subject: [PATCH 8/9] remove log --- src/lib/find-geonetwork-instances.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/find-geonetwork-instances.js b/src/lib/find-geonetwork-instances.js index 99fc36e..513a05a 100644 --- a/src/lib/find-geonetwork-instances.js +++ b/src/lib/find-geonetwork-instances.js @@ -1,8 +1,6 @@ export function findGeonetworkInstances(menuTree, id) { const geonetworkInstances = new Map() - console.log('searching for geonetwork instances with id', id) - menuTree.forEach((viewer) => { const findInMenu = (menu) => { const { children } = menu From 7cd0027fd4064ef903c9ca0c58d667aba419160d Mon Sep 17 00:00:00 2001 From: sjoerdbeentjes <11621275+sjoerdbeentjes@users.noreply.github.com> Date: Fri, 2 Aug 2024 14:05:50 +0200 Subject: [PATCH 9/9] update environment --- src/lib/datocms.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/datocms.js b/src/lib/datocms.js index 068a38a..208fea5 100644 --- a/src/lib/datocms.js +++ b/src/lib/datocms.js @@ -26,7 +26,7 @@ function executeFetch(query, variables = {}, preview = false) { headers: { 'Content-Type': 'application/json', Authorization: process.env.DATO_API_TOKEN, - 'X-Environment': 'main-test-env', + 'X-Environment': 'production', }, body: JSON.stringify({ query, variables }), })