Check Discovery

Check if discovery drin

by Lissandro Dittmar

HTML

<div id="banner-message">
  <p>Start discovery check</p>
  <button>Start check</button>
</div>
<div style="background-color: white;">
  <ol id="listeSuccess">
  
  </ol>
  <ol id="liste">
  
  </ol>
  <span id="result"></span>
</div>

CSS

i {
  color: #669FAB;
}

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#banner-message {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

const githubToken = "";

let adapterList;
let dicoveryList;

const test = true;

const ignoreType = ["visualization-icons", "visualization-widgets"];


$("button").on("click", function () {
    start();
});

function GithubInteractor(token) {
    this.token = token;
}

const interactor = new GithubInteractor(githubToken);


const start = async function () {
	await startFunc();
}

const startFunc = async function () {
	dicoveryList = await findAllDiscoveryAdapters();
  adapterList = await getOldDiscoveryList();
  await updateAllAdapters();  
}

async function findAllDiscoveryAdapters() {
	let resultList = ['ioBroker.js-controller', 'ioBroker.admin', 'ioBroker.discovery'];
	const filesListJson = await getDataV4(getDiscoverySearchQL);
  if(filesListJson && filesListJson.data && filesListJson.data.repository){  
  	filesListJson.data.repository.object.entries.forEach(async function (file) {
         const name = "ioBroker." + file.name.slice(0, -3);
         resultList.push(name);
    });
  }	
  return resultList;
}

async function getOldDiscoveryList() {
    const link = "https://raw.githubusercontent.com/ioBrokerChecker/testData/master/discoveryData.json";
    try {
        return await (await fetch(link, {cache: "no-cache"})).json();
    } catch (e) {
        return null;
    }
}

async function getAdapterList() {
    const link = "https://raw.githubusercontent.com/ioBroker/ioBroker.repositories/master/sources-dist-stable.json";
    try {
        return await (await fetch(link, {cache: "no-cache"})).json();
    } catch (e) {
        return null;
    }
}


async function getDataV4(query) {
    return await (await fetch('https://api.github.com/graphql', {
        method: 'POST',
        headers: new Headers({
            'Content-Type': 'application/json',
            'Authorization': 'bearer ' + interactor.token
        }),
        body: JSON.stringify({query: query})
    })).json();
}

function addComminityText(full_name) {
    if...