revenz / Fenrus

A personal home page for quick access to all your personal apps/sites.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dotnet: Update Apps

revenz opened this issue · comments

Need to implement ability to update apps in the dotnet rewrite

Legacy Node code



    async updateApps(req, res)
    {
        console.log('Updating Applications');
        const dir = __dirname + '/../temp';
        if(fs.existsSync(dir) == false){
            console.log('Creating temporary directory');
            fs.mkdirSync(dir, {recursive: true});
        }
        
        let appsUrl = 'https://github.com/revenz/Fenrus/raw/master/apps.zip?t=' + new Date().getTime();
        let zipfile =  dir + '/' + new Utils().newGuid();
        try
        {
            let appHelper = AppHelper.getInstance();
            if(!appHelper.count())
                appHelper.load();            
            let previous = appHelper.count() || 0;
            console.log('Previous application count: ' + previous);

            await HttpHelper.download(appsUrl, zipfile);
            
            const zip = new StreamZip.async({ file: zipfile});
            const count = await zip.extract(null, './apps');
            console.log(`Extracted ${count} entries`);
            await zip.close();

            console.log('Successfully updated applications');
            appHelper.load();
            let updated = appHelper.count() || 0;
            console.log('Updated application list in memory');
            res.status(200).send(`Updated ${count} applications.\n\n${updated - previous} new app${updated - previous == 1 ? '' : 's'}`).end();
        }
        catch(err)
        {
            console.log('Failed to update applications: ' + err);
            res.status(500).send('' + err).end();
        }
    }

done