revenz / Fenrus

A personal home page for quick access to all your personal apps/sites.
MIT License
518 stars 31 forks source link

Dotnet: Update Apps #154

Closed revenz closed 1 year ago

revenz commented 1 year ago

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();
        }
    }
revenz commented 1 year ago

done