diff options
author | mhatvan <markus_hatvan@aon.at> | 2021-08-05 08:58:28 +0200 |
---|---|---|
committer | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-08-05 08:05:49 +0000 |
commit | 305c2c5ecb49a1349be2efb1ef557d61da9a64dc (patch) | |
tree | 19a05ed4ddfc1e5b5bb7fc3ecc071ad562da820f /src/internal-server/app/Controllers/Http | |
parent | refactor: minor refactoring: solve name-clash of env vars vs vars in the program (diff) | |
download | ferdium-app-305c2c5ecb49a1349be2efb1ef557d61da9a64dc.tar.gz ferdium-app-305c2c5ecb49a1349be2efb1ef557d61da9a64dc.tar.zst ferdium-app-305c2c5ecb49a1349be2efb1ef557d61da9a64dc.zip |
refactor: general code improvements
- replace deprecated fs.exists with fs.existsSync
- replace console.log with debug
- replace hardcoded FERDI_VERSION in start.js with dynamic one from package.json
- correct JSDoc annotations in Handler.js
- simplify macOSPermissions.js
- updates to various eslint rules
- add FileReader to known globals
Diffstat (limited to 'src/internal-server/app/Controllers/Http')
-rw-r--r-- | src/internal-server/app/Controllers/Http/ServiceController.js | 150 |
1 files changed, 74 insertions, 76 deletions
diff --git a/src/internal-server/app/Controllers/Http/ServiceController.js b/src/internal-server/app/Controllers/Http/ServiceController.js index 36d20c70c..c30e9e040 100644 --- a/src/internal-server/app/Controllers/Http/ServiceController.js +++ b/src/internal-server/app/Controllers/Http/ServiceController.js | |||
@@ -1,7 +1,5 @@ | |||
1 | const Service = use('App/Models/Service'); | 1 | const Service = use('App/Models/Service'); |
2 | const { | 2 | const { validateAll } = use('Validator'); |
3 | validateAll, | ||
4 | } = use('Validator'); | ||
5 | const Env = use('Env'); | 3 | const Env = use('Env'); |
6 | 4 | ||
7 | const uuid = require('uuid/v4'); | 5 | const uuid = require('uuid/v4'); |
@@ -10,10 +8,7 @@ const fs = require('fs-extra'); | |||
10 | 8 | ||
11 | class ServiceController { | 9 | class ServiceController { |
12 | // Create a new service for user | 10 | // Create a new service for user |
13 | async create({ | 11 | async create({ request, response }) { |
14 | request, | ||
15 | response, | ||
16 | }) { | ||
17 | // Validate user input | 12 | // Validate user input |
18 | const validation = await validateAll(request.all(), { | 13 | const validation = await validateAll(request.all(), { |
19 | name: 'required|string', | 14 | name: 'required|string', |
@@ -33,7 +28,10 @@ class ServiceController { | |||
33 | let serviceId; | 28 | let serviceId; |
34 | do { | 29 | do { |
35 | serviceId = uuid(); | 30 | serviceId = uuid(); |
36 | } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop | 31 | } while ( |
32 | (await Service.query().where('serviceId', serviceId).fetch()).rows | ||
33 | .length > 0 | ||
34 | ); // eslint-disable-line no-await-in-loop | ||
37 | 35 | ||
38 | await Service.create({ | 36 | await Service.create({ |
39 | serviceId, | 37 | serviceId, |
@@ -64,13 +62,14 @@ class ServiceController { | |||
64 | } | 62 | } |
65 | 63 | ||
66 | // List all services a user has created | 64 | // List all services a user has created |
67 | async list({ | 65 | async list({ response }) { |
68 | response, | ||
69 | }) { | ||
70 | const services = (await Service.all()).rows; | 66 | const services = (await Service.all()).rows; |
71 | // Convert to array with all data Franz wants | 67 | // Convert to array with all data Franz wants |
72 | const servicesArray = services.map((service) => { | 68 | const servicesArray = services.map(service => { |
73 | const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; | 69 | const settings = |
70 | typeof service.settings === 'string' | ||
71 | ? JSON.parse(service.settings) | ||
72 | : service.settings; | ||
74 | 73 | ||
75 | return { | 74 | return { |
76 | customRecipe: false, | 75 | customRecipe: false, |
@@ -84,7 +83,9 @@ class ServiceController { | |||
84 | spellcheckerLanguage: '', | 83 | spellcheckerLanguage: '', |
85 | workspaces: [], | 84 | workspaces: [], |
86 | ...JSON.parse(service.settings), | 85 | ...JSON.parse(service.settings), |
87 | iconUrl: settings.iconId ? `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${settings.iconId}` : null, | 86 | iconUrl: settings.iconId |
87 | ? `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${settings.iconId}` | ||
88 | : null, | ||
88 | id: service.serviceId, | 89 | id: service.serviceId, |
89 | name: service.name, | 90 | name: service.name, |
90 | recipeId: service.recipeId, | 91 | recipeId: service.recipeId, |
@@ -95,11 +96,7 @@ class ServiceController { | |||
95 | return response.send(servicesArray); | 96 | return response.send(servicesArray); |
96 | } | 97 | } |
97 | 98 | ||
98 | async edit({ | 99 | async edit({ request, response, params }) { |
99 | request, | ||
100 | response, | ||
101 | params, | ||
102 | }) { | ||
103 | if (request.file('icon')) { | 100 | if (request.file('icon')) { |
104 | // Upload custom service icon | 101 | // Upload custom service icon |
105 | await fs.ensureDir(path.join(Env.get('USER_PATH'), 'icons')); | 102 | await fs.ensureDir(path.join(Env.get('USER_PATH'), 'icons')); |
@@ -108,19 +105,19 @@ class ServiceController { | |||
108 | types: ['image'], | 105 | types: ['image'], |
109 | size: '2mb', | 106 | size: '2mb', |
110 | }); | 107 | }); |
111 | const { | 108 | const { id } = params; |
112 | id, | 109 | const service = (await Service.query().where('serviceId', id).fetch()) |
113 | } = params; | 110 | .rows[0]; |
114 | const service = (await Service.query() | 111 | const settings = |
115 | .where('serviceId', id).fetch()).rows[0]; | 112 | typeof service.settings === 'string' |
116 | const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; | 113 | ? JSON.parse(service.settings) |
114 | : service.settings; | ||
117 | 115 | ||
118 | // Generate new icon ID | 116 | // Generate new icon ID |
119 | let iconId; | 117 | let iconId; |
120 | do { | 118 | do { |
121 | iconId = uuid() + uuid(); | 119 | iconId = uuid() + uuid(); |
122 | // eslint-disable-next-line no-await-in-loop | 120 | } while (fs.existsSync(path.join(Env.get('USER_PATH'), 'icons', iconId))); |
123 | } while (await fs.exists(path.join(Env.get('USER_PATH'), 'icons', iconId))); | ||
124 | 121 | ||
125 | await icon.move(path.join(Env.get('USER_PATH'), 'icons'), { | 122 | await icon.move(path.join(Env.get('USER_PATH'), 'icons'), { |
126 | name: iconId, | 123 | name: iconId, |
@@ -135,23 +132,29 @@ class ServiceController { | |||
135 | ...settings, | 132 | ...settings, |
136 | ...{ | 133 | ...{ |
137 | iconId, | 134 | iconId, |
138 | customIconVersion: settings && settings.customIconVersion ? settings.customIconVersion + 1 : 1, | 135 | customIconVersion: |
136 | settings && settings.customIconVersion | ||
137 | ? settings.customIconVersion + 1 | ||
138 | : 1, | ||
139 | }, | 139 | }, |
140 | }; | 140 | }; |
141 | 141 | ||
142 | // Update data in database | 142 | // Update data in database |
143 | await (Service.query() | 143 | await Service.query() |
144 | .where('serviceId', id)).update({ | 144 | .where('serviceId', id) |
145 | name: service.name, | 145 | .update({ |
146 | settings: JSON.stringify(newSettings), | 146 | name: service.name, |
147 | }); | 147 | settings: JSON.stringify(newSettings), |
148 | }); | ||
148 | 149 | ||
149 | return response.send({ | 150 | return response.send({ |
150 | data: { | 151 | data: { |
151 | id, | 152 | id, |
152 | name: service.name, | 153 | name: service.name, |
153 | ...newSettings, | 154 | ...newSettings, |
154 | iconUrl: `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${newSettings.iconId}`, | 155 | iconUrl: `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${ |
156 | newSettings.iconId | ||
157 | }`, | ||
155 | userId: 1, | 158 | userId: 1, |
156 | }, | 159 | }, |
157 | status: ['updated'], | 160 | status: ['updated'], |
@@ -159,29 +162,30 @@ class ServiceController { | |||
159 | } | 162 | } |
160 | // Update service info | 163 | // Update service info |
161 | const data = request.all(); | 164 | const data = request.all(); |
162 | const { | 165 | const { id } = params; |
163 | id, | ||
164 | } = params; | ||
165 | 166 | ||
166 | // Get current settings from db | 167 | // Get current settings from db |
167 | const serviceData = (await Service.query() | 168 | const serviceData = (await Service.query().where('serviceId', id).fetch()) |
168 | .where('serviceId', id).fetch()).rows[0]; | 169 | .rows[0]; |
169 | 170 | ||
170 | const settings = { | 171 | const settings = { |
171 | ...typeof serviceData.settings === 'string' ? JSON.parse(serviceData.settings) : serviceData.settings, | 172 | ...(typeof serviceData.settings === 'string' |
173 | ? JSON.parse(serviceData.settings) | ||
174 | : serviceData.settings), | ||
172 | ...data, | 175 | ...data, |
173 | }; | 176 | }; |
174 | 177 | ||
175 | // Update data in database | 178 | // Update data in database |
176 | await (Service.query() | 179 | await Service.query() |
177 | .where('serviceId', id)).update({ | 180 | .where('serviceId', id) |
178 | name: data.name, | 181 | .update({ |
179 | settings: JSON.stringify(settings), | 182 | name: data.name, |
180 | }); | 183 | settings: JSON.stringify(settings), |
184 | }); | ||
181 | 185 | ||
182 | // Get updated row | 186 | // Get updated row |
183 | const service = (await Service.query() | 187 | const service = (await Service.query().where('serviceId', id).fetch()) |
184 | .where('serviceId', id).fetch()).rows[0]; | 188 | .rows[0]; |
185 | 189 | ||
186 | return response.send({ | 190 | return response.send({ |
187 | data: { | 191 | data: { |
@@ -195,34 +199,29 @@ class ServiceController { | |||
195 | }); | 199 | }); |
196 | } | 200 | } |
197 | 201 | ||
198 | async icon({ | 202 | async icon({ params, response }) { |
199 | params, | 203 | const { id } = params; |
200 | response, | ||
201 | }) { | ||
202 | const { | ||
203 | id, | ||
204 | } = params; | ||
205 | 204 | ||
206 | const iconPath = path.join(Env.get('USER_PATH'), 'icons', id); | 205 | const iconPath = path.join(Env.get('USER_PATH'), 'icons', id); |
207 | if (!await fs.exists(iconPath)) { | 206 | if (!fs.existsSync(iconPath)) { |
208 | return response.status(404).send({ | 207 | return response.status(404).send({ |
209 | status: 'Icon doesn\'t exist', | 208 | status: "Icon doesn't exist", |
210 | }); | 209 | }); |
211 | } | 210 | } |
212 | 211 | ||
213 | return response.download(iconPath); | 212 | return response.download(iconPath); |
214 | } | 213 | } |
215 | 214 | ||
216 | async reorder({ | 215 | async reorder({ request, response }) { |
217 | request, | ||
218 | response, | ||
219 | }) { | ||
220 | const data = request.all(); | 216 | const data = request.all(); |
221 | 217 | ||
222 | for (const service of Object.keys(data)) { | 218 | for (const service of Object.keys(data)) { |
223 | // Get current settings from db | 219 | // Get current settings from db |
224 | const serviceData = (await Service.query() // eslint-disable-line no-await-in-loop | 220 | const serviceData = ( |
225 | .where('serviceId', service).fetch()).rows[0]; | 221 | await Service.query() // eslint-disable-line no-await-in-loop |
222 | .where('serviceId', service) | ||
223 | .fetch() | ||
224 | ).rows[0]; | ||
226 | 225 | ||
227 | const settings = { | 226 | const settings = { |
228 | ...JSON.parse(serviceData.settings), | 227 | ...JSON.parse(serviceData.settings), |
@@ -230,8 +229,8 @@ class ServiceController { | |||
230 | }; | 229 | }; |
231 | 230 | ||
232 | // Update data in database | 231 | // Update data in database |
233 | await (Service.query() // eslint-disable-line no-await-in-loop | 232 | await Service.query() // eslint-disable-line no-await-in-loop |
234 | .where('serviceId', service)) | 233 | .where('serviceId', service) |
235 | .update({ | 234 | .update({ |
236 | settings: JSON.stringify(settings), | 235 | settings: JSON.stringify(settings), |
237 | }); | 236 | }); |
@@ -240,8 +239,11 @@ class ServiceController { | |||
240 | // Get new services | 239 | // Get new services |
241 | const services = (await Service.all()).rows; | 240 | const services = (await Service.all()).rows; |
242 | // Convert to array with all data Franz wants | 241 | // Convert to array with all data Franz wants |
243 | const servicesArray = services.map((service) => { | 242 | const servicesArray = services.map(service => { |
244 | const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; | 243 | const settings = |
244 | typeof service.settings === 'string' | ||
245 | ? JSON.parse(service.settings) | ||
246 | : service.settings; | ||
245 | 247 | ||
246 | return { | 248 | return { |
247 | customRecipe: false, | 249 | customRecipe: false, |
@@ -255,7 +257,9 @@ class ServiceController { | |||
255 | spellcheckerLanguage: '', | 257 | spellcheckerLanguage: '', |
256 | workspaces: [], | 258 | workspaces: [], |
257 | ...JSON.parse(service.settings), | 259 | ...JSON.parse(service.settings), |
258 | iconUrl: settings.iconId ? `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${settings.iconId}` : null, | 260 | iconUrl: settings.iconId |
261 | ? `http://127.0.0.1:${Env.get('PORT')}/v1/icon/${settings.iconId}` | ||
262 | : null, | ||
259 | id: service.serviceId, | 263 | id: service.serviceId, |
260 | name: service.name, | 264 | name: service.name, |
261 | recipeId: service.recipeId, | 265 | recipeId: service.recipeId, |
@@ -266,19 +270,13 @@ class ServiceController { | |||
266 | return response.send(servicesArray); | 270 | return response.send(servicesArray); |
267 | } | 271 | } |
268 | 272 | ||
269 | update({ | 273 | update({ response }) { |
270 | response, | ||
271 | }) { | ||
272 | return response.send([]); | 274 | return response.send([]); |
273 | } | 275 | } |
274 | 276 | ||
275 | async delete({ | 277 | async delete({ params, response }) { |
276 | params, | ||
277 | response, | ||
278 | }) { | ||
279 | // Update data in database | 278 | // Update data in database |
280 | await (Service.query() | 279 | await Service.query().where('serviceId', params.id).delete(); |
281 | .where('serviceId', params.id)).delete(); | ||
282 | 280 | ||
283 | return response.send({ | 281 | return response.send({ |
284 | message: 'Sucessfully deleted service', | 282 | message: 'Sucessfully deleted service', |