aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar kytwb <kytwb@pm.me>2022-01-07 12:29:51 +0100
committerLibravatar kytwb <kytwb@pm.me>2022-01-07 12:29:51 +0100
commita53d5f8ab5c089f0f8ab19125db4c6f7b4058373 (patch)
tree565bf9b8f62f05dcfd9b1b2be50223a52c2b5cb0
parentReview recipes routes, fix download recipe response type (diff)
downloadferdium-server-a53d5f8ab5c089f0f8ab19125db4c6f7b4058373.tar.gz
ferdium-server-a53d5f8ab5c089f0f8ab19125db4c6f7b4058373.tar.zst
ferdium-server-a53d5f8ab5c089f0f8ab19125db4c6f7b4058373.zip
Add recipes update
-rw-r--r--README.md2
-rw-r--r--app/Controllers/Http/RecipeController.js21
-rw-r--r--package-lock.json51
-rw-r--r--package.json1
4 files changed, 69 insertions, 6 deletions
diff --git a/README.md b/README.md
index 6b65937..80b76e7 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ A custom server allows you to manage the data of all registered users yourself a
34- [x] User dashboard 34- [x] User dashboard
35- [x] Export/import data to other Ferdi-servers 35- [x] Export/import data to other Ferdi-servers
36- [x] Password recovery 36- [x] Password recovery
37- [ ] Recipe update 37- [x] Recipe update
38 38
39## Deploying the App 39## Deploying the App
40 40
diff --git a/app/Controllers/Http/RecipeController.js b/app/Controllers/Http/RecipeController.js
index a2b129d..07cd430 100644
--- a/app/Controllers/Http/RecipeController.js
+++ b/app/Controllers/Http/RecipeController.js
@@ -9,6 +9,7 @@ const Env = use('Env');
9const targz = require('targz'); 9const targz = require('targz');
10const path = require('path'); 10const path = require('path');
11const fs = require('fs-extra'); 11const fs = require('fs-extra');
12const semver = require('semver');
12 13
13const compress = (src, dest) => new Promise((resolve, reject) => { 14const compress = (src, dest) => new Promise((resolve, reject) => {
14 targz.compress({ 15 targz.compress({
@@ -166,8 +167,24 @@ class RecipeController {
166 ); 167 );
167 } 168 }
168 169
169 update({ response }) { 170 update({ request, response }) {
170 return response.send([]); 171 const updates = [];
172 const recipes = request.all();
173 const allJson = fs.readJsonSync(path.join(
174 Helpers.appRoot(), 'recipes', 'all.json',
175 ));
176
177 for (const recipe of Object.keys(recipes)) {
178 const version = recipes[recipe];
179
180 // Find recipe in local recipe repository
181 const localRecipe = allJson.find(r => r.id === recipe);
182 if (localRecipe && semver.lt(version, localRecipe.version)) {
183 updates.push(recipe);
184 }
185 }
186
187 return response.send(updates);
171 } 188 }
172 189
173 // Download a recipe 190 // Download a recipe
diff --git a/package-lock.json b/package-lock.json
index 7225bf1..837334f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1681,6 +1681,13 @@
1681 "semver": "^5.5.0", 1681 "semver": "^5.5.0",
1682 "shebang-command": "^1.2.0", 1682 "shebang-command": "^1.2.0",
1683 "which": "^1.2.9" 1683 "which": "^1.2.9"
1684 },
1685 "dependencies": {
1686 "semver": {
1687 "version": "5.7.1",
1688 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1689 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
1690 }
1684 } 1691 }
1685 }, 1692 },
1686 "csrf": { 1693 "csrf": {
@@ -3560,6 +3567,11 @@
3560 "version": "2.1.2", 3567 "version": "2.1.2",
3561 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3568 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3562 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 3569 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
3570 },
3571 "semver": {
3572 "version": "5.7.1",
3573 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
3574 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
3563 } 3575 }
3564 } 3576 }
3565 }, 3577 },
@@ -4256,6 +4268,13 @@
4256 "rimraf": "^2.6.1", 4268 "rimraf": "^2.6.1",
4257 "semver": "^5.3.0", 4269 "semver": "^5.3.0",
4258 "tar": "^4" 4270 "tar": "^4"
4271 },
4272 "dependencies": {
4273 "semver": {
4274 "version": "5.7.1",
4275 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
4276 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
4277 }
4259 } 4278 }
4260 }, 4279 },
4261 "node-req": { 4280 "node-req": {
@@ -4307,6 +4326,14 @@
4307 "resolve": "^1.10.0", 4326 "resolve": "^1.10.0",
4308 "semver": "2 || 3 || 4 || 5", 4327 "semver": "2 || 3 || 4 || 5",
4309 "validate-npm-package-license": "^3.0.1" 4328 "validate-npm-package-license": "^3.0.1"
4329 },
4330 "dependencies": {
4331 "semver": {
4332 "version": "5.7.1",
4333 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
4334 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
4335 "dev": true
4336 }
4310 } 4337 }
4311 }, 4338 },
4312 "normalize-url": { 4339 "normalize-url": {
@@ -5606,9 +5633,22 @@
5606 "integrity": "sha1-JHEQ7yLM+JexOj8KvdtSeCOTzWo=" 5633 "integrity": "sha1-JHEQ7yLM+JexOj8KvdtSeCOTzWo="
5607 }, 5634 },
5608 "semver": { 5635 "semver": {
5609 "version": "5.7.1", 5636 "version": "7.3.5",
5610 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 5637 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
5611 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 5638 "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
5639 "requires": {
5640 "lru-cache": "^6.0.0"
5641 },
5642 "dependencies": {
5643 "lru-cache": {
5644 "version": "6.0.0",
5645 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
5646 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
5647 "requires": {
5648 "yallist": "^4.0.0"
5649 }
5650 }
5651 }
5612 }, 5652 },
5613 "send": { 5653 "send": {
5614 "version": "0.16.2", 5654 "version": "0.16.2",
@@ -6980,6 +7020,11 @@
6980 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 7020 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
6981 "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 7021 "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
6982 }, 7022 },
7023 "yallist": {
7024 "version": "4.0.0",
7025 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
7026 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
7027 },
6983 "youch": { 7028 "youch": {
6984 "version": "2.0.10", 7029 "version": "2.0.10",
6985 "resolved": "https://registry.npmjs.org/youch/-/youch-2.0.10.tgz", 7030 "resolved": "https://registry.npmjs.org/youch/-/youch-2.0.10.tgz",
diff --git a/package.json b/package.json
index e587f41..d31ef21 100644
--- a/package.json
+++ b/package.json
@@ -44,6 +44,7 @@
44 "mysql": "2.18.1", 44 "mysql": "2.18.1",
45 "node-fetch": "^2.6.1", 45 "node-fetch": "^2.6.1",
46 "pg": "^8.0.3", 46 "pg": "^8.0.3",
47 "semver": "7.3.5",
47 "sqlite3": "^4.1.0", 48 "sqlite3": "^4.1.0",
48 "targz": "^1.0.1", 49 "targz": "^1.0.1",
49 "uuid": "^8.3.2" 50 "uuid": "^8.3.2"