From cf590f2e193bffba1de849a0342ef1094228b8df Mon Sep 17 00:00:00 2001 From: Justin Dretvic Date: Wed, 24 Jun 2020 21:53:12 +0200 Subject: [PATCH] Upload Aufgabe 09 --- .vscode/settings.json | 3 + Aufgaben/Aufgabe_09_2020-06-24/client.js | 96 +++++++++++++++ Aufgaben/Aufgabe_09_2020-06-24/client.js.map | 1 + Aufgaben/Aufgabe_09_2020-06-24/client.ts | 119 +++++++++++++++++++ Aufgaben/Aufgabe_09_2020-06-24/form.html | 32 +++++ Aufgaben/Aufgabe_09_2020-06-24/server.js | 42 +++++++ Aufgaben/Aufgabe_09_2020-06-24/server.js.map | 1 + Aufgaben/Aufgabe_09_2020-06-24/server.ts | 46 +++++++ Steckbrief/steckbrief.htm | 2 + favicon.ico | Bin 0 -> 76702 bytes package.json | 6 +- 11 files changed, 346 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/client.js create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/client.js.map create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/client.ts create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/form.html create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/server.js create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/server.js.map create mode 100644 Aufgaben/Aufgabe_09_2020-06-24/server.ts create mode 100644 favicon.ico diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f673a71 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5502 +} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/client.js b/Aufgaben/Aufgabe_09_2020-06-24/client.js new file mode 100644 index 0000000..cdfe4ec --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/client.js @@ -0,0 +1,96 @@ +"use strict"; +var clientSide; +(function (clientSide) { + document.querySelector("#getJson").addEventListener("click", communicateJson); + document.querySelector("#getHtml").addEventListener("click", communicateHtml); + //communicate("https://theoneandgis.herokuapp.com/"); + async function communicate(_path) { + let formData = new FormData(document.forms[0]); + let url = "https://theoneandgis.herokuapp.com" + _path; + //let url: string = "http://localhost:8100" + _path; + let query = new URLSearchParams(formData); + url += "?" + query.toString(); + let response = await fetch(url); + let responseUrl; + if (_path == "/json") { + responseUrl = await response.json(); + console.log(responseUrl); + document.getElementById("htmlResponse").innerHTML = JSON.stringify(responseUrl); + } + if (_path == "/html") { + let responseUrl = await response.text(); + console.log("html-log: " + responseUrl); + document.getElementById("htmlResponse").innerHTML = responseUrl; + } + } + function communicateJson() { + communicate("/json"); + } + function communicateHtml() { + communicate("/html"); + } +})(clientSide || (clientSide = {})); +/*namespace tutorial09 { + + /*console.log(formData.get("vorname")); + + for (let entry of formData) { + console.log(entry); + console.log("name: " + entry[0]); + console.log("value: " + entry[1]); + } + + // Trennlinie + + (document.querySelector("#getHtml")).addEventListener("click", startCommunication); + + function startCommunication(): void { + communicate("http://localhost:8100"); + } + + async function communicate(_url: RequestInfo): Promise { + + // let response: Response = await fetch(_url); + // let jsonObj = await response.json(); + + let formData: FormData = new FormData(document.forms[0]); + let formquery: URLSearchParams = new URLSearchParams(formData); + _url += "?" + formquery.toString(); + console.log("_url: " + _url); + //let url: string = "https://theoneandgis.herokuapp.com/"; + //let query: URLSearchParams = new URLSearchParams(formData); + + //url += "?" + query.toString(); + + //debugger; + + //let response: Response = await fetch(_url); + let response: Response = await fetch("Data.json"); + console.log("response: " + response); + console.log(response); + let theAnswer: string = await response.text; + //let text: string = theAnswer + + + console.log("theAnswer: " + theAnswer); + //let query: URLSearchParams = new URLSearchParams(theAnswer); + //console.log(query.toString()); + //console.log( new URLSearchParams(theAnswer).values() ); + //console.log(query.keys() ); + //let queryvorname: string = query.get("/?vorname")!; + //let querynachname: string = query.get("nachname")!; + + //console.log(queryvorname); + //console.log(querynachname); + + (document.querySelector("#htmlResponse")).innerHTML = `${theAnswer}`; + + + // await fetch(url); + console.log(theAnswer); + } + + console.log("hello"); + +}*/ +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/client.js.map b/Aufgaben/Aufgabe_09_2020-06-24/client.js.map new file mode 100644 index 0000000..5dd67e4 --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"client.js","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":";AACA,IAAU,UAAU,CAuCnB;AAvCD,WAAU,UAAU;IAEI,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/E,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEnG,qDAAqD;IAErD,KAAK,UAAU,WAAW,CAAC,KAAa;QAEpC,IAAI,QAAQ,GAAa,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,GAAG,GAAW,oCAAoC,GAAG,KAAK,CAAC;QAC/D,oDAAoD;QACpD,IAAI,KAAK,GAAoB,IAAI,eAAe,CAAM,QAAQ,CAAC,CAAC;QAEhE,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,QAAQ,GAAa,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,WAAmB,CAAC;QAExB,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACR,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAE,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SACrG;QAED,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,IAAI,WAAW,GAAW,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;YACvB,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAE,CAAC,SAAS,GAAG,WAAW,CAAC;SACrF;IACL,CAAC;IAED,SAAS,eAAe;QACpB,WAAW,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,SAAS,eAAe;QACpB,WAAW,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;AAEL,CAAC,EAvCS,UAAU,KAAV,UAAU,QAuCnB;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG"} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/client.ts b/Aufgaben/Aufgabe_09_2020-06-24/client.ts new file mode 100644 index 0000000..330399e --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/client.ts @@ -0,0 +1,119 @@ + +namespace clientSide { + + (document.querySelector("#getJson")).addEventListener("click", communicateJson); + (document.querySelector("#getHtml")).addEventListener("click", communicateHtml); + + //communicate("https://theoneandgis.herokuapp.com/"); + + async function communicate(_path: string): Promise { + + let formData: FormData = new FormData(document.forms[0]); + let url: string = "https://theoneandgis.herokuapp.com" + _path; + //let url: string = "http://localhost:8100" + _path; + let query: URLSearchParams = new URLSearchParams(formData); + + url += "?" + query.toString(); + + let response: Response = await fetch(url); + let responseUrl: string; + + if (_path == "/json") { + responseUrl = await response.json(); + console.log(responseUrl); + (document.getElementById("htmlResponse")).innerHTML = JSON.stringify(responseUrl); + } + + if (_path == "/html") { + let responseUrl: string = await response.text(); + console.log("html-log: " + responseUrl); + (document.getElementById("htmlResponse")).innerHTML = responseUrl; + } + } + + function communicateJson(): void { + communicate("/json"); + } + function communicateHtml(): void { + communicate("/html"); + } + +} + + + + + + + + + + + + + +/*namespace tutorial09 { + + /*console.log(formData.get("vorname")); + + for (let entry of formData) { + console.log(entry); + console.log("name: " + entry[0]); + console.log("value: " + entry[1]); + } + + // Trennlinie + + (document.querySelector("#getHtml")).addEventListener("click", startCommunication); + + function startCommunication(): void { + communicate("http://localhost:8100"); + } + + async function communicate(_url: RequestInfo): Promise { + + // let response: Response = await fetch(_url); + // let jsonObj = await response.json(); + + let formData: FormData = new FormData(document.forms[0]); + let formquery: URLSearchParams = new URLSearchParams(formData); + _url += "?" + formquery.toString(); + console.log("_url: " + _url); + //let url: string = "https://theoneandgis.herokuapp.com/"; + //let query: URLSearchParams = new URLSearchParams(formData); + + //url += "?" + query.toString(); + + //debugger; + + //let response: Response = await fetch(_url); + let response: Response = await fetch("Data.json"); + console.log("response: " + response); + console.log(response); + let theAnswer: string = await response.text; + //let text: string = theAnswer + + + console.log("theAnswer: " + theAnswer); + //let query: URLSearchParams = new URLSearchParams(theAnswer); + //console.log(query.toString()); + //console.log( new URLSearchParams(theAnswer).values() ); + //console.log(query.keys() ); + //let queryvorname: string = query.get("/?vorname")!; + //let querynachname: string = query.get("nachname")!; + + //console.log(queryvorname); + //console.log(querynachname); + + (document.querySelector("#htmlResponse")).innerHTML = `${theAnswer}`; + + + // await fetch(url); + console.log(theAnswer); + } + + console.log("hello"); + +}*/ + + diff --git a/Aufgaben/Aufgabe_09_2020-06-24/form.html b/Aufgaben/Aufgabe_09_2020-06-24/form.html new file mode 100644 index 0000000..219dfce --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/form.html @@ -0,0 +1,32 @@ + + + + + + + Formulare Kapitel 09 + + + +
+
+
+
+
+ + + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/server.js b/Aufgaben/Aufgabe_09_2020-06-24/server.js new file mode 100644 index 0000000..d119c92 --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/server.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ServerSide = void 0; +const Http = require("http"); +const url = require("url"); +var ServerSide; +(function (ServerSide) { + console.log("Starting server"); + let port = Number(process.env.PORT); + // der als numerisches Objekt abgespeichert werden soll + if (!port) + port = 8100; + let server = Http.createServer(); + server.addListener("request", handleRequest); + server.addListener("listening", handleListen); + server.listen(port); + function handleListen() { + console.log("Listening"); + } + function handleRequest(_request, _response) { + console.log("http://localhost:8100" + `${_request.url}`); + let myData = url.parse(`${_request.url}`, true); + let myQuery = myData.query; + let splitThis = _request.url.slice(0, 5); + let myJsonString = JSON.stringify(myQuery); + // Damit ich im Hinterkopf behalte, dass das so funktioniert + // console.log("myQuery.vorname: " + myQuery.vorname ); + // console.log("myQuery.nachname: " + myQuery.nachname); + if (splitThis == "/html") { + _response.setHeader("content-type", "application/json"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + } + else if (splitThis == "/json") { + _response.setHeader("content-type", "text/html"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + } + console.log(myJsonString); + _response.write(myJsonString); + _response.end(); + } +})(ServerSide = exports.ServerSide || (exports.ServerSide = {})); +//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/server.js.map b/Aufgaben/Aufgabe_09_2020-06-24/server.js.map new file mode 100644 index 0000000..e9e6fa0 --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/server.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,2BAA2B;AAG3B,IAAiB,UAAU,CAyC1B;AAzCD,WAAiB,UAAU;IACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAW,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,uDAAuD;IACvD,IAAI,CAAC,IAAI;QACL,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,MAAM,GAAgB,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7C,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpB,SAAS,YAAY;QACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,aAAa,CAAC,QAA8B,EAAE,SAA8B;QACjF,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAEzD,IAAI,MAAM,GAA2B,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,GAAmB,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,SAAS,GAAoB,QAAQ,CAAC,GAAI,CAAC,KAAK,CAAC,CAAC,EAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,YAAY,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnD,4DAA4D;QAC5D,uDAAuD;QACvD,wDAAwD;QAExD,IAAI,SAAS,IAAI,OAAO,EAAE;YACtB,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YACxD,SAAS,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;SAC3D;aACI,IAAI,SAAS,IAAI,OAAO,EAAE;YAC3B,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACjD,SAAS,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;SAC3D;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9B,SAAS,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;AACL,CAAC,EAzCgB,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAyC1B"} \ No newline at end of file diff --git a/Aufgaben/Aufgabe_09_2020-06-24/server.ts b/Aufgaben/Aufgabe_09_2020-06-24/server.ts new file mode 100644 index 0000000..082b4f1 --- /dev/null +++ b/Aufgaben/Aufgabe_09_2020-06-24/server.ts @@ -0,0 +1,46 @@ +import * as Http from "http"; +import * as url from "url"; +import { ParsedUrlQuery } from "querystring"; + +export namespace ServerSide { + console.log("Starting server"); + let port: number = Number(process.env.PORT); + // der als numerisches Objekt abgespeichert werden soll + if (!port) + port = 8100; + + let server: Http.Server = Http.createServer(); + server.addListener("request", handleRequest); + server.addListener("listening", handleListen); + server.listen(port); + + function handleListen(): void { + console.log("Listening"); + } + + function handleRequest(_request: Http.IncomingMessage, _response: Http.ServerResponse): void { + console.log("http://localhost:8100" + `${_request.url}`); + + let myData: url.UrlWithParsedQuery = url.parse(`${_request.url}`, true); + let myQuery: ParsedUrlQuery = myData.query; + let splitThis: string = (_request.url).slice(0 , 5); + let myJsonString: string = JSON.stringify(myQuery); + + // Damit ich im Hinterkopf behalte, dass das so funktioniert + // console.log("myQuery.vorname: " + myQuery.vorname ); + // console.log("myQuery.nachname: " + myQuery.nachname); + + if (splitThis == "/html") { + _response.setHeader("content-type", "application/json"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + } + else if (splitThis == "/json") { + _response.setHeader("content-type", "text/html"); + _response.setHeader("Access-Control-Allow-Origin", "*"); + } + + console.log(myJsonString); + _response.write(myJsonString); + _response.end(); + } +} diff --git a/Steckbrief/steckbrief.htm b/Steckbrief/steckbrief.htm index 3599c4a..32a81c8 100644 --- a/Steckbrief/steckbrief.htm +++ b/Steckbrief/steckbrief.htm @@ -15,6 +15,8 @@ body { Github Reposiroty → Issues
+ Aufgabe_09_2020-06-24 & + Server.ts
Aufgabe_08_2020-06-17
Aufgabe_07_2020-06-10
Aufgabe_06_2020-06-03
diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4108b1ca23e27e2a4e96b43711596a0275fc0947 GIT binary patch literal 76702 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 vcCIesk0bha>%rJOo{fVwt#qaqk=+F94fn@p| literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 7172b64..04674f2 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,12 @@ "version": "1.0.0", "description": "Diese Datei soll mir helfen, mit Heruko arbeiten zu können.", "main": "index.js", - "dependencies": {}, + "dependencies": { + "@types/node": "^14.0.13" + }, "devDependencies": {}, "scripts": { - "start": "node Aufgaben/Aufgabe_08_2020-06-17/server.js" + "start": "node Aufgaben/Aufgabe_09_2020-06-24/server.js" }, "repository": { "type": "git",