dummy

by Albin Larsson

JavaScript

// Detta är ett ganska minimalt exempel på användning av SOCH
// Notera att det saknas felhantering vid HTTP fel
// Notera även att sochSearch() inte stödjer paginering och att den använder presentationsformatet
// Det går att klistra in detta exempel direkt i webbläsarens konsol
// Det går inte att göra frågor från andra HTTPS resurser


// API-nyckel
const apiKey = 'test';

// hjälp funktion för att göra http frågor och parsa JSON
const fetchSoch = async (url) => await (await fetch(url, { headers: new Headers({ 'Accept': 'application/json' }) })).json();

// funktion för att göra en enkel sökning
const sochSearch = async (query) => {
  const json = await fetchSoch(`http://kulturarvsdata.se/ksamsok/api?x-api=${apiKey}&method=search&query=${query}&recordSchema=presentation`);
  return json.result.records.record.map(r => r['pres:item']);
}

// Hämta ett object via en URI (JSON-LD)
fetchSoch('http://kulturarvsdata.se/raa/bbrp/21620000011565').then(data => {
  // snyggt fint JavaScript object 
  console.log(data);
}).catch(reason => {
  // nätverksfel av någon typ
  console.error(reason.message);
});

// genomför en sökning efter "runsten"
// här kan du också skriva CQL frågor (item="sten yxa" AND place=gotland)
sochSearch('runsten').then(data => {
  // loopa igenom snygg fin JavaScript array med listade object
  data.forEach(record => {
    // logga objekt
    //console.log(record);
    console.log(record['pres:representations']['pres:representation'][0]['content']);
    // skriv ut specifikt element ur objektet
    //console.log(record['pres:dataQuality']);
    // skriv ut specifikt element till HTML
    // document.querySelector('#elementId').innerText = record['pres:itemLabel'];
  });
}).catch(reason => {
  // nätverksfel av någon typ
  console.error(reason.message);
});