This commit is contained in:
@@ -1,24 +1,43 @@
|
||||
// TODO: imports
|
||||
import dns from 'node:dns';
|
||||
import color from 'chalk';
|
||||
import util from 'node:util';
|
||||
|
||||
const IP_V = 4; // we use IP protocol version 4
|
||||
const URL = 'google.de';
|
||||
|
||||
// TODO: your modifications
|
||||
|
||||
// 1.
|
||||
// const getIpBy = () => {};
|
||||
const getIpBy = (url, ip = 4) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
dns.lookup(url, ip, (error, data) => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve({ address: data, family: ip });
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 2.
|
||||
// Promises Unterobjekt von Node
|
||||
// const getPromisesIpBy = () => {};
|
||||
const getPromisesIpBy = (url, ip = 4) => {
|
||||
return dns.promises.lookup(url, ip);
|
||||
};
|
||||
|
||||
// 3.
|
||||
// Promisify Helferfunktion
|
||||
// const getPromisifyIpBy =
|
||||
|
||||
const getPromisifyIpBy = util.promisify(dns.lookup);
|
||||
// 4.
|
||||
// Async await
|
||||
// const getAsyncIpBy =
|
||||
const getAsyncIpBy = async (url, ip) => {
|
||||
try {
|
||||
const result = await dns.promises.lookup(url, ip);
|
||||
return result;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
throw new Error(err);
|
||||
}
|
||||
};
|
||||
|
||||
// Test Cases:
|
||||
// =============================
|
||||
@@ -55,23 +74,20 @@ getAsyncIpBy(URL, IP_V)
|
||||
});
|
||||
|
||||
/* Übung 13: Das Telefonbuch des Internets
|
||||
|
||||
Vielleicht hast du einmal die Webseite www.nodejs.com besucht? Dann hat dein Computer die so genannte IP-Adresse des Servers www.nodejs.com herausgefunden.
|
||||
|
||||
|
||||
Vielleicht hast du einmal die Webseite www.nodejs.com besucht? Dann hat dein Computer die so genannte IP-Adresse des Servers www.nodejs.org herausgefunden.
|
||||
|
||||
Ähnlich wie ein Telefonbuch ordnet das Domain Name System (DNS) jedem Server (Host) eine eindeutige IP-Adresse zu, unter der er über das Internet erreichbar ist.
|
||||
|
||||
|
||||
Die Node.js-API bietet eine Funktion, um Namen im DNS nachzuschlagen: dns.lookup(…).
|
||||
|
||||
|
||||
Die Übung besteht nun darin, obiges Beispiel so umzuschreiben, dass der Aufruf von dns.lookup(…) in eine Wrapper-Funkion verpackt wird.
|
||||
|
||||
|
||||
Es sollen drei verschiedene Lösungen erstellt werden:
|
||||
|
||||
|
||||
1. Ausführliche Variante mit eigenem Promise-Objekt als Ummantelung
|
||||
|
||||
2. Kurze Variante mit Promises-Unterobjekt (dns.promises)
|
||||
|
||||
2. Kurze Variante mit Promises-Unterobjekt (dns.promises)
|
||||
3. Promisify-Variante mit util.promisify(…)
|
||||
|
||||
4. Async await Variante
|
||||
|
||||
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user