aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/server/ServerApi.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/server/ServerApi.js')
-rw-r--r--src/api/server/ServerApi.js79
1 files changed, 45 insertions, 34 deletions
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index b5042525a..e321f9372 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -1,7 +1,17 @@
1/* eslint-disable global-require */
1import { join } from 'path'; 2import { join } from 'path';
2import tar from 'tar'; 3import tar from 'tar';
3import { readdirSync, statSync, writeFileSync, copySync, ensureDirSync, pathExistsSync, readJsonSync, removeSync } from 'fs-extra'; 4import {
4import { require as remoteRequire } from '@electron/remote'; 5 readdirSync,
6 statSync,
7 writeFileSync,
8 copySync,
9 ensureDirSync,
10 pathExistsSync,
11 readJsonSync,
12 removeSync,
13} from 'fs-extra';
14import fetch from 'electron-fetch';
5 15
6import ServiceModel from '../../models/Service'; 16import ServiceModel from '../../models/Service';
7import RecipePreviewModel from '../../models/RecipePreview'; 17import RecipePreviewModel from '../../models/RecipePreview';
@@ -12,7 +22,9 @@ import UserModel from '../../models/User';
12import { sleep } from '../../helpers/async-helpers'; 22import { sleep } from '../../helpers/async-helpers';
13 23
14import { SERVER_NOT_LOADED } from '../../config'; 24import { SERVER_NOT_LOADED } from '../../config';
15import { osArch, osPlatform, asarRecipesPath, userDataRecipesPath, userDataPath, ferdiVersion } from '../../environment'; 25import { osArch, osPlatform } from '../../environment';
26import { userDataRecipesPath, userDataPath, ferdiVersion } from '../../environment-remote';
27import { asarRecipesPath } from '../../helpers/asar-helpers';
16import apiBase from '../apiBase'; 28import apiBase from '../apiBase';
17import { prepareAuthRequest, sendAuthRequest } from '../utils/auth'; 29import { prepareAuthRequest, sendAuthRequest } from '../utils/auth';
18 30
@@ -28,8 +40,6 @@ const debug = require('debug')('Ferdi:ServerApi');
28 40
29module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory()); 41module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory());
30 42
31const { default: fetch } = remoteRequire('electron-fetch');
32
33export default class ServerApi { 43export default class ServerApi {
34 recipePreviews = []; 44 recipePreviews = [];
35 45
@@ -310,22 +320,22 @@ export default class ServerApi {
310 // Recipes 320 // Recipes
311 async getInstalledRecipes() { 321 async getInstalledRecipes() {
312 const recipesDirectory = getRecipeDirectory(); 322 const recipesDirectory = getRecipeDirectory();
313 const paths = readdirSync(recipesDirectory) 323 const paths = readdirSync(recipesDirectory).filter(
314 .filter( 324 file =>
315 file => 325 statSync(join(recipesDirectory, file)).isDirectory() &&
316 statSync(join(recipesDirectory, file)).isDirectory() && 326 file !== 'temp' &&
317 file !== 'temp' && 327 file !== 'dev',
318 file !== 'dev', 328 );
319 );
320 329
321 this.recipes = paths 330 this.recipes = paths
322 .map(id => { 331 .map(id => {
323 // eslint-disable-next-line 332 // eslint-disable-next-line import/no-dynamic-require
324 const Recipe = require(id)(RecipeModel); 333 const Recipe = require(id)(RecipeModel);
325 return new Recipe(loadRecipeConfig(id)); 334 return new Recipe(loadRecipeConfig(id));
326 }) 335 })
327 .filter(recipe => recipe.id); 336 .filter(recipe => recipe.id);
328 337
338 // eslint-disable-next-line unicorn/prefer-spread
329 this.recipes = this.recipes.concat(this._getDevRecipes()); 339 this.recipes = this.recipes.concat(this._getDevRecipes());
330 340
331 debug('StubServerApi::getInstalledRecipes resolves', this.recipes); 341 debug('StubServerApi::getInstalledRecipes resolves', this.recipes);
@@ -425,8 +435,8 @@ export default class ServerApi {
425 removeSync(join(recipesDirectory, recipeId, 'recipe.tar.gz')); 435 removeSync(join(recipesDirectory, recipeId, 'recipe.tar.gz'));
426 436
427 return id; 437 return id;
428 } catch (err) { 438 } catch (error) {
429 console.error(err); 439 console.error(error);
430 440
431 return false; 441 return false;
432 } 442 }
@@ -434,7 +444,9 @@ export default class ServerApi {
434 444
435 // News 445 // News
436 async getLatestNews() { 446 async getLatestNews() {
437 const url = `${apiBase(true)}/news?platform=${osPlatform}&arch=${osArch}&version=${ferdiVersion}`; 447 const url = `${apiBase(
448 true,
449 )}/news?platform=${osPlatform}&arch=${osArch}&version=${ferdiVersion}`;
438 const request = await sendAuthRequest(url); 450 const request = await sendAuthRequest(url);
439 if (!request.ok) throw request; 451 if (!request.ok) throw request;
440 const data = await request.json(); 452 const data = await request.json();
@@ -494,7 +506,7 @@ export default class ServerApi {
494 debug('ServerApi::getLegacyServices resolves', services); 506 debug('ServerApi::getLegacyServices resolves', services);
495 return services; 507 return services;
496 } 508 }
497 } catch (err) { 509 } catch {
498 console.error('ServerApi::getLegacyServices no config found'); 510 console.error('ServerApi::getLegacyServices no config found');
499 } 511 }
500 512
@@ -523,8 +535,8 @@ export default class ServerApi {
523 } 535 }
524 536
525 return new ServiceModel(service, recipe); 537 return new ServiceModel(service, recipe);
526 } catch (e) { 538 } catch (error) {
527 debug(e); 539 debug(error);
528 return null; 540 return null;
529 } 541 }
530 } 542 }
@@ -559,7 +571,7 @@ export default class ServerApi {
559 571
560 return recipe; 572 return recipe;
561 }), 573 }),
562 ).catch(err => console.error("Can't load recipe", err)); 574 ).catch(error => console.error("Can't load recipe", error));
563 } 575 }
564 576
565 _mapRecipePreviewModel(recipes) { 577 _mapRecipePreviewModel(recipes) {
@@ -567,8 +579,8 @@ export default class ServerApi {
567 .map(recipe => { 579 .map(recipe => {
568 try { 580 try {
569 return new RecipePreviewModel(recipe); 581 return new RecipePreviewModel(recipe);
570 } catch (e) { 582 } catch (error) {
571 console.error(e); 583 console.error(error);
572 return null; 584 return null;
573 } 585 }
574 }) 586 })
@@ -580,8 +592,8 @@ export default class ServerApi {
580 .map(newsItem => { 592 .map(newsItem => {
581 try { 593 try {
582 return new NewsModel(newsItem); 594 return new NewsModel(newsItem);
583 } catch (e) { 595 } catch (error) {
584 console.error(e); 596 console.error(error);
585 return null; 597 return null;
586 } 598 }
587 }) 599 })
@@ -591,22 +603,21 @@ export default class ServerApi {
591 _getDevRecipes() { 603 _getDevRecipes() {
592 const recipesDirectory = getDevRecipeDirectory(); 604 const recipesDirectory = getDevRecipeDirectory();
593 try { 605 try {
594 const paths = readdirSync(recipesDirectory) 606 const paths = readdirSync(recipesDirectory).filter(
595 .filter( 607 file =>
596 file => 608 statSync(join(recipesDirectory, file)).isDirectory() &&
597 statSync(join(recipesDirectory, file)).isDirectory() && 609 file !== 'temp',
598 file !== 'temp', 610 );
599 );
600 611
601 const recipes = paths 612 const recipes = paths
602 .map(id => { 613 .map(id => {
603 let Recipe; 614 let Recipe;
604 try { 615 try {
605 // eslint-disable-next-line 616 // eslint-disable-next-line import/no-dynamic-require
606 Recipe = require(id)(RecipeModel); 617 Recipe = require(id)(RecipeModel);
607 return new Recipe(loadRecipeConfig(id)); 618 return new Recipe(loadRecipeConfig(id));
608 } catch (err) { 619 } catch (error) {
609 console.error(err); 620 console.error(error);
610 } 621 }
611 622
612 return false; 623 return false;
@@ -624,7 +635,7 @@ export default class ServerApi {
624 }); 635 });
625 636
626 return recipes; 637 return recipes;
627 } catch (err) { 638 } catch {
628 debug('Could not load dev recipes'); 639 debug('Could not load dev recipes');
629 return false; 640 return false;
630 } 641 }