diff options
Diffstat (limited to 'src/api/server/ServerApi.js')
-rw-r--r-- | src/api/server/ServerApi.js | 80 |
1 files changed, 49 insertions, 31 deletions
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index b5042525a..fb0495b19 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js | |||
@@ -1,6 +1,16 @@ | |||
1 | /* eslint-disable global-require */ | ||
1 | import { join } from 'path'; | 2 | import { join } from 'path'; |
2 | import tar from 'tar'; | 3 | import tar from 'tar'; |
3 | import { readdirSync, statSync, writeFileSync, copySync, ensureDirSync, pathExistsSync, readJsonSync, removeSync } from 'fs-extra'; | 4 | import { |
5 | readdirSync, | ||
6 | statSync, | ||
7 | writeFileSync, | ||
8 | copySync, | ||
9 | ensureDirSync, | ||
10 | pathExistsSync, | ||
11 | readJsonSync, | ||
12 | removeSync, | ||
13 | } from 'fs-extra'; | ||
4 | import { require as remoteRequire } from '@electron/remote'; | 14 | import { require as remoteRequire } from '@electron/remote'; |
5 | 15 | ||
6 | import ServiceModel from '../../models/Service'; | 16 | import ServiceModel from '../../models/Service'; |
@@ -12,7 +22,14 @@ import UserModel from '../../models/User'; | |||
12 | import { sleep } from '../../helpers/async-helpers'; | 22 | import { sleep } from '../../helpers/async-helpers'; |
13 | 23 | ||
14 | import { SERVER_NOT_LOADED } from '../../config'; | 24 | import { SERVER_NOT_LOADED } from '../../config'; |
15 | import { osArch, osPlatform, asarRecipesPath, userDataRecipesPath, userDataPath, ferdiVersion } from '../../environment'; | 25 | import { |
26 | osArch, | ||
27 | osPlatform, | ||
28 | asarRecipesPath, | ||
29 | userDataRecipesPath, | ||
30 | userDataPath, | ||
31 | ferdiVersion, | ||
32 | } from '../../environment'; | ||
16 | import apiBase from '../apiBase'; | 33 | import apiBase from '../apiBase'; |
17 | import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; | 34 | import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; |
18 | 35 | ||
@@ -310,22 +327,22 @@ export default class ServerApi { | |||
310 | // Recipes | 327 | // Recipes |
311 | async getInstalledRecipes() { | 328 | async getInstalledRecipes() { |
312 | const recipesDirectory = getRecipeDirectory(); | 329 | const recipesDirectory = getRecipeDirectory(); |
313 | const paths = readdirSync(recipesDirectory) | 330 | const paths = readdirSync(recipesDirectory).filter( |
314 | .filter( | 331 | file => |
315 | file => | 332 | statSync(join(recipesDirectory, file)).isDirectory() && |
316 | statSync(join(recipesDirectory, file)).isDirectory() && | 333 | file !== 'temp' && |
317 | file !== 'temp' && | 334 | file !== 'dev', |
318 | file !== 'dev', | 335 | ); |
319 | ); | ||
320 | 336 | ||
321 | this.recipes = paths | 337 | this.recipes = paths |
322 | .map(id => { | 338 | .map(id => { |
323 | // eslint-disable-next-line | 339 | // eslint-disable-next-line import/no-dynamic-require |
324 | const Recipe = require(id)(RecipeModel); | 340 | const Recipe = require(id)(RecipeModel); |
325 | return new Recipe(loadRecipeConfig(id)); | 341 | return new Recipe(loadRecipeConfig(id)); |
326 | }) | 342 | }) |
327 | .filter(recipe => recipe.id); | 343 | .filter(recipe => recipe.id); |
328 | 344 | ||
345 | // eslint-disable-next-line unicorn/prefer-spread | ||
329 | this.recipes = this.recipes.concat(this._getDevRecipes()); | 346 | this.recipes = this.recipes.concat(this._getDevRecipes()); |
330 | 347 | ||
331 | debug('StubServerApi::getInstalledRecipes resolves', this.recipes); | 348 | debug('StubServerApi::getInstalledRecipes resolves', this.recipes); |
@@ -425,8 +442,8 @@ export default class ServerApi { | |||
425 | removeSync(join(recipesDirectory, recipeId, 'recipe.tar.gz')); | 442 | removeSync(join(recipesDirectory, recipeId, 'recipe.tar.gz')); |
426 | 443 | ||
427 | return id; | 444 | return id; |
428 | } catch (err) { | 445 | } catch (error) { |
429 | console.error(err); | 446 | console.error(error); |
430 | 447 | ||
431 | return false; | 448 | return false; |
432 | } | 449 | } |
@@ -434,7 +451,9 @@ export default class ServerApi { | |||
434 | 451 | ||
435 | // News | 452 | // News |
436 | async getLatestNews() { | 453 | async getLatestNews() { |
437 | const url = `${apiBase(true)}/news?platform=${osPlatform}&arch=${osArch}&version=${ferdiVersion}`; | 454 | const url = `${apiBase( |
455 | true, | ||
456 | )}/news?platform=${osPlatform}&arch=${osArch}&version=${ferdiVersion}`; | ||
438 | const request = await sendAuthRequest(url); | 457 | const request = await sendAuthRequest(url); |
439 | if (!request.ok) throw request; | 458 | if (!request.ok) throw request; |
440 | const data = await request.json(); | 459 | const data = await request.json(); |
@@ -494,7 +513,7 @@ export default class ServerApi { | |||
494 | debug('ServerApi::getLegacyServices resolves', services); | 513 | debug('ServerApi::getLegacyServices resolves', services); |
495 | return services; | 514 | return services; |
496 | } | 515 | } |
497 | } catch (err) { | 516 | } catch { |
498 | console.error('ServerApi::getLegacyServices no config found'); | 517 | console.error('ServerApi::getLegacyServices no config found'); |
499 | } | 518 | } |
500 | 519 | ||
@@ -523,8 +542,8 @@ export default class ServerApi { | |||
523 | } | 542 | } |
524 | 543 | ||
525 | return new ServiceModel(service, recipe); | 544 | return new ServiceModel(service, recipe); |
526 | } catch (e) { | 545 | } catch (error) { |
527 | debug(e); | 546 | debug(error); |
528 | return null; | 547 | return null; |
529 | } | 548 | } |
530 | } | 549 | } |
@@ -559,7 +578,7 @@ export default class ServerApi { | |||
559 | 578 | ||
560 | return recipe; | 579 | return recipe; |
561 | }), | 580 | }), |
562 | ).catch(err => console.error("Can't load recipe", err)); | 581 | ).catch(error => console.error("Can't load recipe", error)); |
563 | } | 582 | } |
564 | 583 | ||
565 | _mapRecipePreviewModel(recipes) { | 584 | _mapRecipePreviewModel(recipes) { |
@@ -567,8 +586,8 @@ export default class ServerApi { | |||
567 | .map(recipe => { | 586 | .map(recipe => { |
568 | try { | 587 | try { |
569 | return new RecipePreviewModel(recipe); | 588 | return new RecipePreviewModel(recipe); |
570 | } catch (e) { | 589 | } catch (error) { |
571 | console.error(e); | 590 | console.error(error); |
572 | return null; | 591 | return null; |
573 | } | 592 | } |
574 | }) | 593 | }) |
@@ -580,8 +599,8 @@ export default class ServerApi { | |||
580 | .map(newsItem => { | 599 | .map(newsItem => { |
581 | try { | 600 | try { |
582 | return new NewsModel(newsItem); | 601 | return new NewsModel(newsItem); |
583 | } catch (e) { | 602 | } catch (error) { |
584 | console.error(e); | 603 | console.error(error); |
585 | return null; | 604 | return null; |
586 | } | 605 | } |
587 | }) | 606 | }) |
@@ -591,22 +610,21 @@ export default class ServerApi { | |||
591 | _getDevRecipes() { | 610 | _getDevRecipes() { |
592 | const recipesDirectory = getDevRecipeDirectory(); | 611 | const recipesDirectory = getDevRecipeDirectory(); |
593 | try { | 612 | try { |
594 | const paths = readdirSync(recipesDirectory) | 613 | const paths = readdirSync(recipesDirectory).filter( |
595 | .filter( | 614 | file => |
596 | file => | 615 | statSync(join(recipesDirectory, file)).isDirectory() && |
597 | statSync(join(recipesDirectory, file)).isDirectory() && | 616 | file !== 'temp', |
598 | file !== 'temp', | 617 | ); |
599 | ); | ||
600 | 618 | ||
601 | const recipes = paths | 619 | const recipes = paths |
602 | .map(id => { | 620 | .map(id => { |
603 | let Recipe; | 621 | let Recipe; |
604 | try { | 622 | try { |
605 | // eslint-disable-next-line | 623 | // eslint-disable-next-line import/no-dynamic-require |
606 | Recipe = require(id)(RecipeModel); | 624 | Recipe = require(id)(RecipeModel); |
607 | return new Recipe(loadRecipeConfig(id)); | 625 | return new Recipe(loadRecipeConfig(id)); |
608 | } catch (err) { | 626 | } catch (error) { |
609 | console.error(err); | 627 | console.error(error); |
610 | } | 628 | } |
611 | 629 | ||
612 | return false; | 630 | return false; |
@@ -624,7 +642,7 @@ export default class ServerApi { | |||
624 | }); | 642 | }); |
625 | 643 | ||
626 | return recipes; | 644 | return recipes; |
627 | } catch (err) { | 645 | } catch { |
628 | debug('Could not load dev recipes'); | 646 | debug('Could not load dev recipes'); |
629 | return false; | 647 | return false; |
630 | } | 648 | } |