From ba07b9311fecec471ad14ae5ec549f5823ec4c42 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Fri, 14 Feb 2020 15:34:33 +0100 Subject: [PATCH 01/13] WiP Signed url error. --- app/views/publishPhotos.ejs | 4 +++- index.js | 34 ++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index 651862f..5acef77 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -57,12 +57,14 @@ var c = ""; function uploadFile(file) { $("#status").html('Starting Upload...') - url = c + url = c; + console.log("RADIL" + file); fetch(url, { method: 'PUT', body: file }) .then(response => response.text()) + .then (console.log()) .catch(error => $("#status").html(error) ) .then(response => $("#status").html('File uploaded successfully: ' + filename)); diff --git a/index.js b/index.js index f662853..7742726 100644 --- a/index.js +++ b/index.js @@ -75,26 +75,24 @@ async function generateSignedUrl() { //generateSignedUrl().catch(console.error); app.get("/generateSignedURL", (req, res) => { - console.log("Started server function!"); + async function generateSignedUrl() { + console.log("Started server function!"); - const options = { - version: "v2", - action: "write", - expires: Date.now() + 86400000 - }; - const filename = req.query.filename; + const options = { + version: "v2", + action: "write", + expires: Date.now() + 86400000 + }; + const filename = req.query.filename; - console.log("Filename: ", filename); - console.log("Bucket name:", bucket.name); + console.log("Filename: ", filename); + console.log("Bucket name:", bucket.name); - const url = bucket.file(filename).getSignedUrl(options, function(err, url) { - if (err) { - console.error(err); - return; - } - return url; - }); + const [url] = await bucket.file(filename).getSignedUrl(options); - console.log(`The signed url for ${filename} is ${url}.`); - res.send(url); + console.log(`The signed url for ${filename} is ${url}.`); + res.send(url); + } + + generateSignedUrl().catch(console.error); }); From cbb3c1f9545bd022a6cd0cdef2ad37951830cedc Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Fri, 14 Feb 2020 22:27:41 +0100 Subject: [PATCH 02/13] Signed URL change. --- app/views/publishPhotos.ejs | 12 ++++++++++-- index.js | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index 5acef77..39d956c 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -61,12 +61,20 @@ var c = ""; console.log("RADIL" + file); fetch(url, { method: 'PUT', + headers: { + "content-type": "image/png" + }, + mode: 'cors', body: file }) .then(response => response.text()) - .then (console.log()) + .then (response => { + console.log(response); + return response; + } + ) .catch(error => $("#status").html(error) ) - .then(response => $("#status").html('File uploaded successfully: ' + filename)); + .then(response => $("#status").html('File uploaded successfully: ' + filename + response.text())); } \ No newline at end of file diff --git a/index.js b/index.js index 7742726..f83e728 100644 --- a/index.js +++ b/index.js @@ -79,7 +79,10 @@ app.get("/generateSignedURL", (req, res) => { console.log("Started server function!"); const options = { - version: "v2", + GoogleAccessID: + " kivi-original-photos-id@marketalarm.iam.gserviceaccount.com", + PrivateKey: "dd909e0aeef15920e7fc18229ce421246c143f90", + version: "v4", action: "write", expires: Date.now() + 86400000 }; From 57df42dd057ec76a9f58c7af6a48b73709b9a952 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Sun, 16 Feb 2020 01:06:53 +0100 Subject: [PATCH 03/13] WiP CORS Issue. --- index.js | 20 ++++++++++++++------ marketalarm-262e746e533c.json | 12 ++++++++++++ marketalarm-cors.json | 8 ++++++++ marketalarm-dd909e0aeef1.json | 12 ------------ 4 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 marketalarm-262e746e533c.json create mode 100644 marketalarm-cors.json delete mode 100644 marketalarm-dd909e0aeef1.json diff --git a/index.js b/index.js index f83e728..1495b4e 100644 --- a/index.js +++ b/index.js @@ -55,8 +55,15 @@ setInterval(crawl, CRAWLER_INTERVAL * 1000); setInterval(checkUpNotify, 1000 * 60 * 60 * 24); //Google storage req -const storage = new Storage(); -const BUCKET_NAME = "kivi_original_photos"; +const PROJECT_ID = "marketalarm"; +const KEY_FILENAME = "marketalarm-262e746e533c.json"; //relative path +const BUCKET_NAME = "marketalarm-photos"; + +const storage = new Storage({ + projectId: PROJECT_ID, + keyFilename: KEY_FILENAME +}); + const bucket = storage.bucket(BUCKET_NAME); /* async function generateSignedUrl() { @@ -79,11 +86,12 @@ app.get("/generateSignedURL", (req, res) => { console.log("Started server function!"); const options = { - GoogleAccessID: - " kivi-original-photos-id@marketalarm.iam.gserviceaccount.com", - PrivateKey: "dd909e0aeef15920e7fc18229ce421246c143f90", - version: "v4", + // GoogleAccessID: + // " kivi-original-photos-id@marketalarm.iam.gserviceaccount.com", + // PrivateKey: "dd909e0aeef15920e7fc18229ce421246c143f90", + version: "v2", action: "write", + contentType: "image/*", expires: Date.now() + 86400000 }; const filename = req.query.filename; diff --git a/marketalarm-262e746e533c.json b/marketalarm-262e746e533c.json new file mode 100644 index 0000000..1aaa350 --- /dev/null +++ b/marketalarm-262e746e533c.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "marketalarm", + "private_key_id": "262e746e533ce0437dd550c4bc709d879df1a8ff", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC/9hpeJGAG5pN2\nYiIeWuyabVO9cHhzi7mlUcfyHmQKoDEcdVYC8iv2sle0Me/SjnK53AaxRBKGXEXy\nS00dKCEw9DkAmG6kTm3R7dduG/uu3jCr29xp2v8ttLtIBt7lq55g1FfqngNX9xcX\nNmkYf6f1LMiAEX5utkwGEiVOXk2kzUQiHTjmcE1XTSIQTAuFLZd9UsUDYKhLjwob\nu5UsCbIhoBeWmKcTun/MsKBocmpOoSl4GGMqt3orgvKedbCyzuA0r8AJ3rnFp2x0\n9APgvqnUy9WrKvM+TB0u3MDmvOfPUDxzu0/o2e5ZcrD2LkbFrB7nX41mKjk4Z1dN\nOIcW9k0BAgMBAAECggEAP6QYXtDBc1g7WFq1hAnR+mq3gg1JKcmPnUMNPnSb5zfv\nwEcYYnamY64BzLBnmY93cq4DG/79A0WRPQCBCuMUifXV9iATQm7sEta+/vbRDMsG\nKNwF6aRcyGrsUjdQ66Tnp6OOmC6V3jKBmcUEt8YOyYZ03JywJYVTlAmtC5vRMwr0\ny7DGE1lPYkfJnLiZLJHNXLABT+wPWCmbmOArBEHh9Ea9cJ7lsVJJw+YvRGU8bt7i\nDqEwT44O0w/WU31Wts4OUNA7o+ynheGHoYH4grIW1pEJmHKyNJRU/2CNAbFk+iJU\n8h5uZ/2BDGA+Nc0aeomVOCvdLEr1l/MRd9owZQKGXwKBgQD0/KAjdtVrMARrlaUo\nUHoJpHfc7GFC3pqybXVx1Q6Axk5WZr0wa7a4UmlxVvXcYkH8swfyle73K1gQlqy0\nUumznAt5yWFyKn+Og4nMmRplC0dn5JjYoZUskqEnMTyM85DY1l56smOZV1DeH0FE\nbKS6M2pEJx7Ran9iJBnIYguNpwKBgQDIlz71We7M1RIsfZVNvU5BrLPWI+4jS3g/\ni37Rbhlq9WHpWTuV8pFInYmFrFXehNfEgg4sIQeQ7ouQXorKYW37pfF/BekBhMTL\nmnpdBcJ+7NSQcfzuqrSltq764XNW4CmO+uRaRW7F9HSQVXVKsgITlzDP6Qa6sCFb\nKrb5rL81FwKBgCR3MfL1bkD9LbtB1AqTKAclZv4IZVXJwqcKae/escDzQ5fSxRhf\nAByhj7ZiJkh+i6nskCNItAAwgHQ/qUdSDB1C/eZL1mhi8QeqhqlgpLAjpKZPPX0J\nWCYBUWF/D68/VfEgv4Ft6itZ9tyJNHLV5RMeMhQg6pJrUrit/PR5u5SDAoGAVD/i\nO57IQ9QCTBl7CinGoqLs7bYtoTljih0G6OO7XUcvFplaA4LcLomsZy6Y6lsVXP3b\nAgHlcaQfjkWHObVuQlHSeq16zh57oaCCYGu44yKJrRmTSJL+SNPP7qOelBCWo+0Q\n2DFtc0tXYf/iwbq+UIgiAlE3eFXdzLLGI1vA+4UCgYAKhZbtn3hPOEpBixHKsF5h\n8Whz7+T+0XcAZ2D7bYqipSH+pMLDCgBaoAtvR6y1OJ8yWIVyVgRYaz8GGjEcPIWB\n0nSGfW771fyL+aMDK/69iOUu2opHl/ivbD9Bx6+zRZU4UsSHYmwBIWzHpWZcULCB\nz8gyCCcySL444h0frGPDeQ==\n-----END PRIVATE KEY-----\n", + "client_email": "marketalarm-photos@marketalarm.iam.gserviceaccount.com", + "client_id": "104397210403856258050", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/marketalarm-photos%40marketalarm.iam.gserviceaccount.com" +} diff --git a/marketalarm-cors.json b/marketalarm-cors.json new file mode 100644 index 0000000..2af91b2 --- /dev/null +++ b/marketalarm-cors.json @@ -0,0 +1,8 @@ +[ + { + "maxAgeSeconds": 3600, + "method": ["*"], + "origin": ["*"], + "responseHeader": ["*"] + } +] diff --git a/marketalarm-dd909e0aeef1.json b/marketalarm-dd909e0aeef1.json deleted file mode 100644 index df7c80e..0000000 --- a/marketalarm-dd909e0aeef1.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "marketalarm", - "private_key_id": "dd909e0aeef15920e7fc18229ce421246c143f90", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLedKH5aM2yOo5\nPh8XRl8HsGZOdq4RveBT8ulJw33KexMckvCkRctSJkRPdbXF3I+N25/WihiUKEXy\nBlVqmDOCEM4qo4/sLllN7hxsoGdIGhnMEAzf8vO1/+NBdErKdu6lRW84GY29gVTH\nQBv54gMcbr2jvBW9qGqmx0Tn0DI0w3BLDd45Sz/yqhE42jmYLDEZ96E1uOR1jlG7\nwdaVlv0r3xdgmV51SjeZevlJxbWFjYCO7UXzhkvldklAjEK2Bgf0hkx9GPUHlo8u\n4TAePLXw35vx7wfrFG8cfDoPPAcB3O5WEzxX9z9/bdG4OZchcTWhguUfEGQ9Oq8Y\n3qnRpg+HAgMBAAECggEAFUWtpGZ2Cz6y+fwMHQ9O1Qt0jqRqq1Ep+CzPhdYpuvbl\n9xlHjiz7xiFZB+Oa9s4Jtf9tdOzoB+kz8ssFuAikbeca3qtN2xe3X2XS0+prEcck\nxkgxSGJqZy8Sz598SDFp3p5lM7y8LEEun0wNALFHuPu82LbLoRHP4JK5mfCSpyBN\nztXE+WFTFsNubgE3kqhZopVXXfQ+Wl43Gfx9jnFkFvxonL23soPP8JLd/Px7rsIZ\nFcaxCGjw3YsuEc3vSO6M7HY2rSx9ho+uSX9XpEb50p6bHXBTAb0ESE4Xf/uslVA5\nCqCxkzf7wB4RzveR6gLrDeTlg4Y5zN+Ioxzq6+8vSQKBgQDlGrAghbfAN6NemR8n\naiYTZ+cvZMigYuy9jSNMnCLmTYDe66r9+PWfT0jQdwaUFmhSbC3939goBAUiZlB9\nAfP4ygFR/TLJXHSXAt6c/9+VpU78lRbGCqs/RGSvH7NyObwSd1wzRXOXtzegXtjf\nz0hSYcOAZljayTEt/RX3fpERzwKBgQDjXOuB6dFRqEmNtetmB4qxBk1stHaFstiG\nG2Rcis09IlCPb0uom7wOxo0CBq8J/3QZWOouwkiXzaMoy8X/UuSJWJ8g0hgGhtNl\n/zlwSnLxaxpWdrP1zQ4vltcdmwc0oDGCjoXbUsJ3L7K/quRfdM1vyEcfNWkdxCus\nY6ugQ7isyQKBgQDN/lcKhvCWxfAAaJEYcVrW6/90H5w8iXXvYO2yPlkq1djfluph\n/O1sVm9T8RFbKWKXaWlY8WF7aVHsgi4wmAbzVT4mqBB3+Mdj2FKsu2wfM0l31d1q\nJ8Gd2zLkOw6vz7WIrQWbnAC5EyXS7jT113xhhkGwO1X9MhUkEoEjzQtHBQKBgGAK\nzGEgiA9aa1e1VS7QWMHWy7XztW1c0yIzR/3flDsS17z/YpJi1tnW/ZGxiRdMFZrv\neF0wLMITV6zQB1+HgIqUKQQQO53mLj6TxYutp0hb2dBUbEiUyj1IFq6m4jBUyxU/\nZ0PyfbsjJvrYEYhRKsbhb0m7oh+00k4L/F/Cu6whAoGAK/lwGbnxx4b+2bHLizol\nC1SCWfehwopZ6+RJDlh+nmdotLHqoJUuywQ4w1+3IfR4gfzsDsOo4hctyNDZXvK/\n5xDR5WpCXNDi1xLDajU5DcHPu+IqltvXe/KUEnEQdogIwsQMigp/MTNDy4tqVbaf\nDDaHojsNuJRgD2iek9vuciw=\n-----END PRIVATE KEY-----\n", - "client_email": "kivi-original-photos-id@marketalarm.iam.gserviceaccount.com", - "client_id": "105188302286128652978", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/kivi-original-photos-id%40marketalarm.iam.gserviceaccount.com" -} From 57329b0311410239b0d6d9f0e5eaa4cba6f700b0 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Sun, 16 Feb 2020 12:11:18 +0100 Subject: [PATCH 04/13] CORS error still! --- app/views/publishPhotos.ejs | 7 +++---- index.js | 26 ++++---------------------- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index 39d956c..e8cd4ff 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -9,8 +9,8 @@
\ No newline at end of file diff --git a/index.js b/index.js index 1495b4e..3fd2256 100644 --- a/index.js +++ b/index.js @@ -58,40 +58,23 @@ setInterval(checkUpNotify, 1000 * 60 * 60 * 24); const PROJECT_ID = "marketalarm"; const KEY_FILENAME = "marketalarm-262e746e533c.json"; //relative path const BUCKET_NAME = "marketalarm-photos"; - +//Tried implicitly creating with env credentials and direktcly as here const storage = new Storage({ projectId: PROJECT_ID, keyFilename: KEY_FILENAME }); const bucket = storage.bucket(BUCKET_NAME); -/* -async function generateSignedUrl() { - const options = { - version: "v2", - action: "write", - expires: Date.now() + 86400000 - }; - - const [url] = bucket.file("aFile").getSignedUrl(options); - - console.log(`The signed url for aFile is ${url}.`); - return url; -}*/ - -//generateSignedUrl().catch(console.error); app.get("/generateSignedURL", (req, res) => { async function generateSignedUrl() { console.log("Started server function!"); const options = { - // GoogleAccessID: - // " kivi-original-photos-id@marketalarm.iam.gserviceaccount.com", - // PrivateKey: "dd909e0aeef15920e7fc18229ce421246c143f90", - version: "v2", + //Tried to define Google ID and private key while debugging + version: "v2", //tried v4 also action: "write", - contentType: "image/*", + contentType: "image/*", //tried without and with specific image/png ex. expires: Date.now() + 86400000 }; const filename = req.query.filename; @@ -104,6 +87,5 @@ app.get("/generateSignedURL", (req, res) => { console.log(`The signed url for ${filename} is ${url}.`); res.send(url); } - generateSignedUrl().catch(console.error); }); From 17f0e6443c0d36d80948ccd7694c259995db20a1 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Tue, 18 Feb 2020 13:35:56 +0100 Subject: [PATCH 05/13] Changed CORS options. --- index.js | 2 +- marketalarm-cors.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 3fd2256..626c786 100644 --- a/index.js +++ b/index.js @@ -84,7 +84,7 @@ app.get("/generateSignedURL", (req, res) => { const [url] = await bucket.file(filename).getSignedUrl(options); - console.log(`The signed url for ${filename} is ${url}.`); + console.log(`The signed url is ${url}.`); res.send(url); } generateSignedUrl().catch(console.error); diff --git a/marketalarm-cors.json b/marketalarm-cors.json index 2af91b2..355e679 100644 --- a/marketalarm-cors.json +++ b/marketalarm-cors.json @@ -1,8 +1,8 @@ [ { - "maxAgeSeconds": 3600, - "method": ["*"], - "origin": ["*"], - "responseHeader": ["*"] + "origin": ["http://localhost"], + "responseHeader": ["Content-Type"], + "method": ["GET", "HEAD", "DELETE"], + "maxAgeSeconds": 3600 } ] From c11248e100dabab4ba8af7af4c360815eb836119 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Tue, 18 Feb 2020 21:40:40 +0100 Subject: [PATCH 06/13] Included npm cors. --- index.js | 3 +++ package-lock.json | 14 ++++++++++++++ package.json | 1 + 3 files changed, 18 insertions(+) diff --git a/index.js b/index.js index 626c786..9d6dbdd 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ const forceSSL = require("./app/helpers/forceSSL"); const { Storage } = require("@google-cloud/storage"); const validate = require("validate.js"); +const cors = require("cors"); const { APP_PORT, @@ -35,6 +36,8 @@ app.use("/", routes); app.use("/assets", express.static("./app/public")); +app.use(cors()); + app.listen(APP_PORT, () => console.log(`Example app listening on port ${APP_PORT}!`) ); diff --git a/package-lock.json b/package-lock.json index 58ecc85..ecf26b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -865,6 +865,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", @@ -3381,6 +3390,11 @@ "resolved": "https://registry.npmjs.org/obj-extend/-/obj-extend-0.1.0.tgz", "integrity": "sha1-u0SKR3X7les0p4H5CLusLfI9u1s=" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", diff --git a/package.json b/package.json index 0741340..613a522 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "bluebird": "^3.5.5", "cheerio": "^1.0.0-rc.2", "compression": "^1.7.4", + "cors": "^2.8.5", "dotenv": "^7.0.0", "ejs": "^2.6.1", "eslint-plugin-prettier": "^3.1.2", From b13b4bc7c2af97e39a9fe873c4fe18ccacf8940c Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Tue, 18 Feb 2020 23:49:00 +0100 Subject: [PATCH 07/13] CORS error tryouts. --- app/views/publishPhotos.ejs | 5 +++-- index.js | 14 ++++++++++---- marketalarm-cors.json | 10 +++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index e8cd4ff..24da85e 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -58,10 +58,10 @@ function uploadFile(file) { $("#status").html('Starting Upload...') url = c; - fetch(url, { + fetch(url, { method: 'PUT', headers: { - "content-type": "image/png" + "content-type": "image/*" }, mode: 'cors', body: file @@ -75,5 +75,6 @@ .catch(error => $("#status").html(error) ) .then(response => $("#status").html('File uploaded successfully: ' + filename + 'Response:' + response.text())); + } \ No newline at end of file diff --git a/index.js b/index.js index 9d6dbdd..8861c34 100644 --- a/index.js +++ b/index.js @@ -23,6 +23,8 @@ const { const app = express(); +app.use(cors()); + app.use(forceSSL()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); @@ -36,8 +38,6 @@ app.use("/", routes); app.use("/assets", express.static("./app/public")); -app.use(cors()); - app.listen(APP_PORT, () => console.log(`Example app listening on port ${APP_PORT}!`) ); @@ -77,7 +77,8 @@ app.get("/generateSignedURL", (req, res) => { //Tried to define Google ID and private key while debugging version: "v2", //tried v4 also action: "write", - contentType: "image/*", //tried without and with specific image/png ex. + "Content-Type": "image/*", + //contentType: "image/*", //tried without and with specific image/png ex. expires: Date.now() + 86400000 }; const filename = req.query.filename; @@ -88,7 +89,12 @@ app.get("/generateSignedURL", (req, res) => { const [url] = await bucket.file(filename).getSignedUrl(options); console.log(`The signed url is ${url}.`); - res.send(url); + + res.header("Access-Control-Allow-Origin", "http://localhost:5000"); + res.header("Access-Control-Allow-Methods", "PUT,OPTIONS"); + res.header("Access-Control-Allow-Headers", "Content-Type, Origin"); + res.header("Access-Control-Max-Age", "86400000"); + res.status(200).send(url); } generateSignedUrl().catch(console.error); }); diff --git a/marketalarm-cors.json b/marketalarm-cors.json index 355e679..784c4e9 100644 --- a/marketalarm-cors.json +++ b/marketalarm-cors.json @@ -1,8 +1,12 @@ [ { - "origin": ["http://localhost"], - "responseHeader": ["Content-Type"], - "method": ["GET", "HEAD", "DELETE"], + "origin": ["*"], + "responseHeader": [ + "Content-Type", + "Access-Control-Allow-Origin", + "x-goog-resumable" + ], + "method": ["GET", "HEAD", "DELETE", "POST", "PUT", "OPTIONS"], "maxAgeSeconds": 3600 } ] From bbd9dab30d90881fcd71629c0cee56b83615760b Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Wed, 26 Feb 2020 14:56:00 +0100 Subject: [PATCH 08/13] Upload image file to bucket success. --- app/views/publishPhotos.ejs | 9 +++------ index.js | 14 +++----------- marketalarm-262e746e533c.json | 12 ------------ marketalarm-d4b71394407e.json | 12 ++++++++++++ 4 files changed, 18 insertions(+), 29 deletions(-) delete mode 100644 marketalarm-262e746e533c.json create mode 100644 marketalarm-d4b71394407e.json diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index 24da85e..b824a4f 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -55,26 +55,23 @@ return false; } - function uploadFile(file) { + function uploadFile(file) { $("#status").html('Starting Upload...') url = c; fetch(url, { method: 'PUT', - headers: { - "content-type": "image/*" - }, + headers: new Headers({'content-type': 'image/*'}), mode: 'cors', body: file }) .then(response => response.text()) .then (response => { - console.log(response); return response; } ) .catch(error => $("#status").html(error) ) - .then(response => $("#status").html('File uploaded successfully: ' + filename + 'Response:' + response.text())); + .then(response => $("#status").html('File uploaded successfully: ' + filename )); } \ No newline at end of file diff --git a/index.js b/index.js index 8861c34..5bb27be 100644 --- a/index.js +++ b/index.js @@ -59,13 +59,10 @@ setInterval(checkUpNotify, 1000 * 60 * 60 * 24); //Google storage req const PROJECT_ID = "marketalarm"; -const KEY_FILENAME = "marketalarm-262e746e533c.json"; //relative path +const KEY_FILENAME = ""; //relative path const BUCKET_NAME = "marketalarm-photos"; //Tried implicitly creating with env credentials and direktcly as here -const storage = new Storage({ - projectId: PROJECT_ID, - keyFilename: KEY_FILENAME -}); +const storage = new Storage(); const bucket = storage.bucket(BUCKET_NAME); @@ -77,8 +74,7 @@ app.get("/generateSignedURL", (req, res) => { //Tried to define Google ID and private key while debugging version: "v2", //tried v4 also action: "write", - "Content-Type": "image/*", - //contentType: "image/*", //tried without and with specific image/png ex. + contentType: "image/*", //tried without and with specific image/png ex. expires: Date.now() + 86400000 }; const filename = req.query.filename; @@ -90,10 +86,6 @@ app.get("/generateSignedURL", (req, res) => { console.log(`The signed url is ${url}.`); - res.header("Access-Control-Allow-Origin", "http://localhost:5000"); - res.header("Access-Control-Allow-Methods", "PUT,OPTIONS"); - res.header("Access-Control-Allow-Headers", "Content-Type, Origin"); - res.header("Access-Control-Max-Age", "86400000"); res.status(200).send(url); } generateSignedUrl().catch(console.error); diff --git a/marketalarm-262e746e533c.json b/marketalarm-262e746e533c.json deleted file mode 100644 index 1aaa350..0000000 --- a/marketalarm-262e746e533c.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "marketalarm", - "private_key_id": "262e746e533ce0437dd550c4bc709d879df1a8ff", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC/9hpeJGAG5pN2\nYiIeWuyabVO9cHhzi7mlUcfyHmQKoDEcdVYC8iv2sle0Me/SjnK53AaxRBKGXEXy\nS00dKCEw9DkAmG6kTm3R7dduG/uu3jCr29xp2v8ttLtIBt7lq55g1FfqngNX9xcX\nNmkYf6f1LMiAEX5utkwGEiVOXk2kzUQiHTjmcE1XTSIQTAuFLZd9UsUDYKhLjwob\nu5UsCbIhoBeWmKcTun/MsKBocmpOoSl4GGMqt3orgvKedbCyzuA0r8AJ3rnFp2x0\n9APgvqnUy9WrKvM+TB0u3MDmvOfPUDxzu0/o2e5ZcrD2LkbFrB7nX41mKjk4Z1dN\nOIcW9k0BAgMBAAECggEAP6QYXtDBc1g7WFq1hAnR+mq3gg1JKcmPnUMNPnSb5zfv\nwEcYYnamY64BzLBnmY93cq4DG/79A0WRPQCBCuMUifXV9iATQm7sEta+/vbRDMsG\nKNwF6aRcyGrsUjdQ66Tnp6OOmC6V3jKBmcUEt8YOyYZ03JywJYVTlAmtC5vRMwr0\ny7DGE1lPYkfJnLiZLJHNXLABT+wPWCmbmOArBEHh9Ea9cJ7lsVJJw+YvRGU8bt7i\nDqEwT44O0w/WU31Wts4OUNA7o+ynheGHoYH4grIW1pEJmHKyNJRU/2CNAbFk+iJU\n8h5uZ/2BDGA+Nc0aeomVOCvdLEr1l/MRd9owZQKGXwKBgQD0/KAjdtVrMARrlaUo\nUHoJpHfc7GFC3pqybXVx1Q6Axk5WZr0wa7a4UmlxVvXcYkH8swfyle73K1gQlqy0\nUumznAt5yWFyKn+Og4nMmRplC0dn5JjYoZUskqEnMTyM85DY1l56smOZV1DeH0FE\nbKS6M2pEJx7Ran9iJBnIYguNpwKBgQDIlz71We7M1RIsfZVNvU5BrLPWI+4jS3g/\ni37Rbhlq9WHpWTuV8pFInYmFrFXehNfEgg4sIQeQ7ouQXorKYW37pfF/BekBhMTL\nmnpdBcJ+7NSQcfzuqrSltq764XNW4CmO+uRaRW7F9HSQVXVKsgITlzDP6Qa6sCFb\nKrb5rL81FwKBgCR3MfL1bkD9LbtB1AqTKAclZv4IZVXJwqcKae/escDzQ5fSxRhf\nAByhj7ZiJkh+i6nskCNItAAwgHQ/qUdSDB1C/eZL1mhi8QeqhqlgpLAjpKZPPX0J\nWCYBUWF/D68/VfEgv4Ft6itZ9tyJNHLV5RMeMhQg6pJrUrit/PR5u5SDAoGAVD/i\nO57IQ9QCTBl7CinGoqLs7bYtoTljih0G6OO7XUcvFplaA4LcLomsZy6Y6lsVXP3b\nAgHlcaQfjkWHObVuQlHSeq16zh57oaCCYGu44yKJrRmTSJL+SNPP7qOelBCWo+0Q\n2DFtc0tXYf/iwbq+UIgiAlE3eFXdzLLGI1vA+4UCgYAKhZbtn3hPOEpBixHKsF5h\n8Whz7+T+0XcAZ2D7bYqipSH+pMLDCgBaoAtvR6y1OJ8yWIVyVgRYaz8GGjEcPIWB\n0nSGfW771fyL+aMDK/69iOUu2opHl/ivbD9Bx6+zRZU4UsSHYmwBIWzHpWZcULCB\nz8gyCCcySL444h0frGPDeQ==\n-----END PRIVATE KEY-----\n", - "client_email": "marketalarm-photos@marketalarm.iam.gserviceaccount.com", - "client_id": "104397210403856258050", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/marketalarm-photos%40marketalarm.iam.gserviceaccount.com" -} diff --git a/marketalarm-d4b71394407e.json b/marketalarm-d4b71394407e.json new file mode 100644 index 0000000..672a051 --- /dev/null +++ b/marketalarm-d4b71394407e.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "marketalarm", + "private_key_id": "d4b71394407eb3dba9e431851dab60b198d6985d", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDTE6dkFr0bzDXg\n7ghMxkzq8cajqqqes9JZVqsXh+b/kFJYmEImFUILJJZdI080KM2sEYsIapBCxhMP\nFH017f/gfH3jnRbp3c70hghNh8noSTsq7kPA4l25o8GQnJ6AS+nhy8umPjb4KzX9\nkmC6OOD4P8mAmGqhoUv4s2jld1cXNur6NJjCpjEd2cH3SUbI71oA3V/4W8aK4dvS\n660kLY0PRt7mCiITe0hbTUBZY48W2ijZ7wM2r0HUtPG9XEeGMGmNsC+qD2oWxUU3\nvnm7l1fEIUvLYF4GrLRDJDSkpChBXNcWhoGV2AOvuTc+yghU2+lJWqrKcpLlI23E\nlVJjt9UhAgMBAAECggEABatr8sxq+SQOf9hSIe3Me9Kc1nunrC42scFHRKBNxahJ\ndXw5B9FQPh738Cqhk0xEz6hlrln1Agj6HhRIz8U0r9R+z4TRRr6kfnWmBZAMShu0\nC4JW448abpAYx8CQ/CvRmq2GlF+/M+QBeqpLS8gPzyaKTB/5IBaKG8Bn0fXXQZ2e\n7RaTpGx62jq79omPwiKz0PMVBGZrzPu8Z4tW47muV51osdKSNVgsXb4gCZl28zN2\n6zzY1ZK7u89MesY8joILMHm8cw0oyv9o+RVGEa1I1nq2q1A8ftZny4p7kUA/ITZX\nEZ6SCOP87z9HeVCr8lzexcovD8uZCOTYpcfotlSjGQKBgQD1VVGU2bzExiV0XQGc\n8n6m4TR6Y9zwXBiQPe0rXPZhvsj8QMTXk+L0ejCo4m7NF1dEyH6u+qX6wjNL1Hm9\nN/ZuDFqYtd9w6cQ8CtDZ6QZIE60k6tLQhMNRNMvHdMfedq+VOz3LX6TdyTnv8dP3\nbEsD8wIfFd6t5wNgeZkbKsNxBwKBgQDcQQsUppjglGpUoz7lGHKbFcKMPpIj9fMY\nfze1DXeTAtHGxGm2F10WZvxOEs4DCOUllBlarL5xDAJIJHk/NYlgnI6MJXMLro6d\nsb4iNTUuJKdqAijyOaZQUADJpdYKGwu5y66PUOuojWFV9kiamquXduJ9jzOa1vr1\nSJPUy2YGlwKBgQDNJrpgwa8z0QozAy89Ih68x+fNTMLNkAXOYKp6L3OsixCguDyi\nlP0dOSyFnUvQXutQDmS5R8oSJeElURk4HJsKrXP47WVak3DQUK8S+eSR0zpfe6os\nSkjWGFMriEE2i4MKRI7JCULhX8r+FfgNl9YnCEfG3M/oFhzhyO06JYlncwKBgF6n\nBSAGyEQbA+cDkI/bhcToAQdMDHmvxJyOb147P1vKJmSJG/TI7ZQnBd53blkXhYI0\ntwCko+LpCkH+iqyDUVpXbVsE7P/kMB3MuKzyuLvvvJJuAzK1W6e/+daukeEd5lge\nFBI68EsrFt1eTa1DMuKQkJzs4Xx1TrwCSKV2E45ZAoGBAIZkXyAOhwqCxwDF7B69\nt/7CWs0gPGqp6lFO7fgt7jPmcmSEr/xgUbBDFwd7D49jpXVgCEtr1Bd6MItlu/Ns\nXgXyOa5LPQmglF7UtnvuQLASBy5X6boKaf3sz7I5eho1kXczPGQUHfR5e0DaTND3\nTi2NLIAUci8T7hc8mONdeEHD\n-----END PRIVATE KEY-----\n", + "client_email": "marketalarm-photos-service-acc@marketalarm.iam.gserviceaccount.com", + "client_id": "115644068453290488813", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/marketalarm-photos-service-acc%40marketalarm.iam.gserviceaccount.com" +} From 96bc66ef7b4e0396201ea22eb815994270d2593b Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Mon, 9 Mar 2020 18:00:31 +0100 Subject: [PATCH 09/13] Dropzone implemented. --- app/public/main.css | 10 +++ app/views/layout.ejs | 12 +++- app/views/publishPhotos.ejs | 90 ++++++++++++++++-------- package-lock.json | 133 +++++++++++++++--------------------- package.json | 2 +- 5 files changed, 140 insertions(+), 107 deletions(-) diff --git a/app/public/main.css b/app/public/main.css index 2f53359..afb8c00 100644 --- a/app/public/main.css +++ b/app/public/main.css @@ -169,3 +169,13 @@ h3 { left: auto; right: auto; } + +.dropzone { + background: white; + border-radius: 10px; + border: 4px dashed #02adba; + border-image: none; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} diff --git a/app/views/layout.ejs b/app/views/layout.ejs index 2b89910..af86f5d 100644 --- a/app/views/layout.ejs +++ b/app/views/layout.ejs @@ -9,14 +9,21 @@ gtag('js', new Date()); gtag('config', '<%= process.env.GA_ID %>'); - + + + + + + @@ -48,6 +55,9 @@ <% } else { %> Kivi.ba <% } %> + + + diff --git a/app/views/publishPhotos.ejs b/app/views/publishPhotos.ejs index b824a4f..6dc21f1 100644 --- a/app/views/publishPhotos.ejs +++ b/app/views/publishPhotos.ejs @@ -8,30 +8,62 @@
+****************************** +
+
+ +
+ +
+ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ecf26b5..ba4349f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ } }, "@google-cloud/common": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.3.0.tgz", - "integrity": "sha512-nmIyi3q/FL2j6ZJ61xK/863DoJEZayI2/W/iCgwrCYUYsem277XO45MBTAimjgiKBCA0c9InmQyfT48h/IK4jg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.4.0.tgz", + "integrity": "sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==", "requires": { "@google-cloud/projectify": "^1.0.0", "@google-cloud/promisify": "^1.0.0", @@ -48,9 +48,9 @@ "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==" }, "@google-cloud/storage": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.3.1.tgz", - "integrity": "sha512-/i7tAcUZDQNDs8/+oN+U2mOXdWdP2eld0pFKLkpthmWmaD89JQlrgHAFL7uvlgCSbaD7YxgbSyJebgd6YBgMgQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.5.0.tgz", + "integrity": "sha512-ZLFcR6CiP1AnYBA9eTtASF9Dy3wjYmGx+HZiy/LsIPN41wyBTn9yAjIOxRHiteqzX3uQzZ+VJNCB/DmTU33CeQ==", "requires": { "@google-cloud/common": "^2.1.1", "@google-cloud/paginator": "^2.0.0", @@ -82,9 +82,9 @@ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" }, "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -188,9 +188,27 @@ } }, "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", + "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } }, "ajv": { "version": "6.10.0", @@ -1492,9 +1510,9 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fast-text-encoding": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", - "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz", + "integrity": "sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ==" }, "fill-range": { "version": "4.0.0", @@ -2155,13 +2173,13 @@ } }, "gaxios": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.0.tgz", - "integrity": "sha512-VgC4JKJQAAAGK5rFZbPcS5mXsdIYVMIUJOxMjSOkYdfhB74R0L6y8PFQDdS0r1ObG6hdP11e71EjHh3xbI+6fQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.2.tgz", + "integrity": "sha512-K/+py7UvKRDaEwEKlLiRKrFr+wjGjsMz5qH7Vs549QJS7cpSCOT/BbWL7pzqECflc46FcNPipjSfB+V1m8PAhw==", "requires": { "abort-controller": "^3.0.0", "extend": "^3.0.2", - "https-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", "node-fetch": "^2.3.0" }, @@ -2174,9 +2192,9 @@ } }, "gcp-metadata": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.3.1.tgz", - "integrity": "sha512-RrASg1HaVAxoB9Q/8sYfJ++v9PMiiqIgOrOxZeagMgS4osZtICT1lKBx2uvzYgwetxj8i6K99Z0iuKMg7WraTg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz", + "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==", "requires": { "gaxios": "^2.1.0", "json-bigint": "^0.3.0" @@ -2196,11 +2214,11 @@ }, "dependencies": { "configstore": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.0.tgz", - "integrity": "sha512-eE/hvMs7qw7DlcB5JPRnthmrITuHMmACUJAp89v6PT6iOqzoLS7HRWhBtuHMlhNHo2AhUSA/3Dh1bKNJHcublQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "requires": { - "dot-prop": "^5.1.0", + "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", @@ -2248,9 +2266,9 @@ } }, "write-file-atomic": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", - "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -2336,15 +2354,16 @@ } }, "google-auth-library": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.9.2.tgz", - "integrity": "sha512-rBE1YTOZ3/Hu6Mojkr+UUmbdc/F28hyMGYEGxjyfVA9ZFmq12oqS3AeftX4h9XpdVIcxPooSo8hECYGT6B9XqQ==", + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz", + "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==", "requires": { "arrify": "^2.0.0", "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", "fast-text-encoding": "^1.0.0", "gaxios": "^2.1.0", - "gcp-metadata": "^3.3.0", + "gcp-metadata": "^3.4.0", "gtoken": "^4.1.0", "jws": "^4.0.0", "lru-cache": "^5.0.0" @@ -2572,14 +2591,6 @@ "debug": "4" }, "dependencies": { - "agent-base": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", - "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", - "requires": { - "debug": "4" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2606,11 +2617,11 @@ } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "agent-base": "5", + "agent-base": "6", "debug": "4" }, "dependencies": { @@ -4529,38 +4540,6 @@ "node-fetch": "^2.2.0", "stream-events": "^1.0.5", "uuid": "^3.3.2" - }, - "dependencies": { - "agent-base": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", - "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } } }, "term-size": { diff --git a/package.json b/package.json index 613a522..69ff7f1 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "2checkout-node": "0.0.1", - "@google-cloud/storage": "^4.3.1", + "@google-cloud/storage": "^4.5.0", "@sendgrid/mail": "^6.3.1", "aws-sdk": "^2.422.0", "bluebird": "^3.5.5", From 5f674230e1f74ee2f573361a2a40ee8b7aec4a27 Mon Sep 17 00:00:00 2001 From: Naida Vatric Date: Mon, 9 Mar 2020 23:30:37 +0100 Subject: [PATCH 10/13] Real estate input clean up. --- app/common/publishEnums.js | 105 ++++++++++++++------------- app/controllers/publishRealEstate.js | 3 + app/public/main.css | 12 ++- app/views/publishAdditionalData.ejs | 11 ++- app/views/publishBasicData.ejs | 4 +- app/views/publishEnd.ejs | 19 ++--- app/views/publishLocation.ejs | 3 +- app/views/publishPhotos.ejs | 103 +------------------------- app/views/publishRealEstate.ejs | 91 ++++++++++++++++++++++- index.js | 17 ++--- 10 files changed, 182 insertions(+), 186 deletions(-) diff --git a/app/common/publishEnums.js b/app/common/publishEnums.js index 93f6073..e98f361 100644 --- a/app/common/publishEnums.js +++ b/app/common/publishEnums.js @@ -6,16 +6,6 @@ const { } = require("./enums"); const BASIC_BOOLEAN_PUBLISH = [ - { - dbField: "balcony", - title: "Balkon", - categoriesToShow: [ - AD_CATEGORY.FLAT, - AD_CATEGORY.HOUSE, - AD_CATEGORY.APARTMENT, - AD_CATEGORY.COTTAGE - ] - }, { dbField: "newBuilding", title: "Novogradnja", @@ -28,6 +18,17 @@ const BASIC_BOOLEAN_PUBLISH = [ AD_CATEGORY.GARAGE ] }, + { + dbField: "balcony", + title: "Balkon", + categoriesToShow: [ + AD_CATEGORY.FLAT, + AD_CATEGORY.HOUSE, + AD_CATEGORY.APARTMENT, + AD_CATEGORY.COTTAGE + ] + }, + { dbField: "elevator", title: "Lift", @@ -51,6 +52,34 @@ const BASIC_BOOLEAN_PUBLISH = [ ]; const BASIC_INPUT_PUBLISH = [ + { + dbField: "title", + title: "Naslov", + categoriesToShow: [ + AD_CATEGORY.FLAT, + AD_CATEGORY.HOUSE, + AD_CATEGORY.APARTMENT, + AD_CATEGORY.COTTAGE, + AD_CATEGORY.OFFICE, + AD_CATEGORY.LAND, + AD_CATEGORY.GARAGE + ], + constraint: ["required"] + }, + { + dbField: "shortDescription", + title: "Opis", + categoriesToShow: [ + AD_CATEGORY.FLAT, + AD_CATEGORY.HOUSE, + AD_CATEGORY.APARTMENT, + AD_CATEGORY.COTTAGE, + AD_CATEGORY.OFFICE, + AD_CATEGORY.LAND, + AD_CATEGORY.GARAGE + ], + constraint: [] + }, { dbField: "price", title: "Cijena (KM)", @@ -85,6 +114,20 @@ const BASIC_INPUT_PUBLISH = [ categoriesToShow: [AD_CATEGORY.HOUSE, AD_CATEGORY.COTTAGE], constraint: ["numerical"] }, + { + dbField: "streetName", + title: "Adresa", + categoriesToShow: [ + AD_CATEGORY.FLAT, + AD_CATEGORY.HOUSE, + AD_CATEGORY.APARTMENT, + AD_CATEGORY.COTTAGE, + AD_CATEGORY.OFFICE, + AD_CATEGORY.LAND, + AD_CATEGORY.GARAGE + ], + constraint: [] + }, { dbField: "numberOfRooms", title: "Broj soba", @@ -117,48 +160,6 @@ const BASIC_INPUT_PUBLISH = [ AD_CATEGORY.OFFICE ], constraint: ["integer"] - }, - { - dbField: "title", - title: "Naslov", - categoriesToShow: [ - AD_CATEGORY.FLAT, - AD_CATEGORY.HOUSE, - AD_CATEGORY.APARTMENT, - AD_CATEGORY.COTTAGE, - AD_CATEGORY.OFFICE, - AD_CATEGORY.LAND, - AD_CATEGORY.GARAGE - ], - constraint: ["required"] - }, - { - dbField: "shortDescription", - title: "Opis", - categoriesToShow: [ - AD_CATEGORY.FLAT, - AD_CATEGORY.HOUSE, - AD_CATEGORY.APARTMENT, - AD_CATEGORY.COTTAGE, - AD_CATEGORY.OFFICE, - AD_CATEGORY.LAND, - AD_CATEGORY.GARAGE - ], - constraint: [] - }, - { - dbField: "streetName", - title: "Adresa", - categoriesToShow: [ - AD_CATEGORY.FLAT, - AD_CATEGORY.HOUSE, - AD_CATEGORY.APARTMENT, - AD_CATEGORY.COTTAGE, - AD_CATEGORY.OFFICE, - AD_CATEGORY.LAND, - AD_CATEGORY.GARAGE - ], - constraint: [] } ]; diff --git a/app/controllers/publishRealEstate.js b/app/controllers/publishRealEstate.js index 8bb66a5..b072551 100644 --- a/app/controllers/publishRealEstate.js +++ b/app/controllers/publishRealEstate.js @@ -243,6 +243,9 @@ const postPublishInputs = async (req, res) => { //Contact email saved in other table const contactEmail = req.body.email || ""; + const imageUrlsArray = req.body.imageUrls || []; + console.log(imageUrlsArray); + realEstate.balcony = balcony; realEstate.elevator = elevator; realEstate.newBuilding = newBuilding; diff --git a/app/public/main.css b/app/public/main.css index afb8c00..d2ba8e1 100644 --- a/app/public/main.css +++ b/app/public/main.css @@ -164,7 +164,6 @@ h3 { } .custom-col { - width: 18%; margin-left: auto; left: auto; right: auto; @@ -175,7 +174,16 @@ h3 { border-radius: 10px; border: 4px dashed #02adba; border-image: none; - max-width: 500px; + max-width: 100%; margin-left: auto; margin-right: auto; } + +.dz-progress { + /* progress bar covers file name */ + display: none; +} + +h3.custom-h3 { + font-size: 20px; +} diff --git a/app/views/publishAdditionalData.ejs b/app/views/publishAdditionalData.ejs index 6e57174..7a5a21d 100644 --- a/app/views/publishAdditionalData.ejs +++ b/app/views/publishAdditionalData.ejs @@ -1,7 +1,7 @@
<% for (const input of additionalInputInputs){ %> -
+