/***
* Copyright 2015 RAPP
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Authors: Konstantinos Panayiotou
* Contact: klpanagi@gmail.com
*
*/
/**
* @fileOverview
*
* [Path-planning-upload-map] RAPP Platform web service.
*
* @author Wojciech Dudek <wojciechsbox@gmail.com>
* @copyright Rapp Project EU 2015
*/
var path = require('path');
var util = require('util');
var INCLUDE_DIR = ENV.PATHS.INCLUDE_DIR;
var Fs = require(path.join(INCLUDE_DIR, 'common', 'fileUtils.js'));
var interfaces = require(path.join(__dirname, 'iface_obj.js'));
/**
* [Path-planning-upload-map] RAPP Platform web service.
*
* Serves requests for path_planning_upload_map on given input: .png file, .yaml file, user name, map name.
*/
function svcImpl(req, resp, ros) {
var response = new interfaces.client_res();
if (! req.files.png_file) {
response.error = 'No map image file received';
resp.sendJson(response);
return;
}
if (! req.files.yaml_file) {
response.error = 'No map image file received';
resp.sendJson(response);
return;
}
if (! req.body.map_name) {
response.error = 'Not a map_name argument provided.';
resp.sendJson(response);
return;
}
if (typeof req.body.map_name !== "string") {
response.error = 'map_name must be of type {string}';
resp.sendJson(response);
return;
}
const cpPNGFile = "~/rapp_platform_files/maps/" + req.username + "/" +
req.body.map_name + ".png";
const cpYAMLFile = "~/rapp_platform_files/maps/" + req.username + "/" +
req.body.map_name + ".yaml";
// create user directory if one does not exist.
if (! Fs.isDirectory("~/rapp_platform_files/maps/" + req.username)) {
Fs.createDirRecur("~/rapp_platform_files/maps/" + req.username);
}
// coppy .png and .yaml files from the server_cache_dir
if (! Fs.renameFile(req.files.png_file[0], cpPNGFile)) {
response.error = "Failed to upload map png to RAPP Platform.";
response.success = false;
}
if (! Fs.renameFile(req.files.yaml_file[0], cpYAMLFile)) {
response.error = "Failed to upload map yaml to RAPP Platform.";
response.success = false;
}
else {
response.success = true;
}
resp.sendJson(response);
}
module.exports = svcImpl;