/* jslint node:true */ 'use strict'; exports = module.exports = { getAutoupdatePattern: getAutoupdatePattern, setAutoupdatePattern: setAutoupdatePattern, getCloudronName: getCloudronName, setCloudronName: setCloudronName, getCloudronAvatar: getCloudronAvatar, setCloudronAvatar: setCloudronAvatar }; var assert = require('assert'), HttpError = require('connect-lastmile').HttpError, HttpSuccess = require('connect-lastmile').HttpSuccess, safe = require('safetydance'), settings = require('../settings.js'), SettingsError = settings.SettingsError; function getAutoupdatePattern(req, res, next) { settings.getAutoupdatePattern(function (error, pattern) { if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200, { pattern: pattern })); }); } function setAutoupdatePattern(req, res, next) { assert.strictEqual(typeof req.body, 'object'); if (typeof req.body.pattern !== 'string') return next(new HttpError(400, 'pattern is required')); settings.setAutoupdatePattern(req.body.pattern, function (error) { if (error && error.reason === SettingsError.BAD_FIELD) return next(new HttpError(400, 'Invalid pattern')); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200)); }); } function setCloudronName(req, res, next) { assert.strictEqual(typeof req.body, 'object'); if (typeof req.body.name !== 'string') return next(new HttpError(400, 'name is required')); settings.setCloudronName(req.body.name, function (error) { if (error && error.reason === SettingsError.BAD_FIELD) return next(new HttpError(400, 'Invalid name')); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200)); }); } function getCloudronName(req, res, next) { settings.getCloudronName(function (error, name) { if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200, { name: name })); }); } function setCloudronAvatar(req, res, next) { assert.strictEqual(typeof req.files, 'object'); if (!req.files.avatar) return next(new HttpError(400, 'avatar must be provided')); var avatar = safe.fs.readFileSync(req.files.avatar.path); settings.setCloudronAvatar(avatar, function (error) { if (error) return next(new HttpError(500, error)); next(new HttpSuccess(202, {})); }); } function getCloudronAvatar(req, res, next) { settings.getCloudronAvatar(function (error, avatar) { if (error) return next(new HttpError(500, error)); res.set('Content-Type', 'image/png'); res.status(200).send(avatar); }); }