/*** * 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 * */ /** * @author Konstantinos Panayiotou, [klpanagi@gmail.com] * * @fileOverview * * Illustrates the implementation of a HOP Service, a.k.a * RAPP Platform Web Service. * */ var util = require('util'); var rosSrvName = '/rapp/dummy'; /** * Template RAPP Platform Web Service * * This template web service has two input arguments: * name: A String service input parameter. * number: An integer service input parameter. * * This is the callback function that will be executed on request * arrival and after successful authentication (If the web service requires * authentication) * The following arguments are passed to the web service implementation * function: * * @param req - The request object. Holds request information like * body values, file uploads paths, request headers, etc. * * @param resp - The response object. Holds response methods used to send * responses to the client. * * @param ros - Use this object to call ROS Services. */ function template_web_svc(req, resp, ros) { // Web Service arguments are members of the req.body object var name = req.body.name || "Uknown"; var number = req.body.number || -1; // Request headers console.log(util.format("Request headers: %s", req.header)); // The request body. File uploads are excluded. console.log(util.format("Request body: %s", req.body)); // Uploaded files. multipart/form-data file upload post fields. console.log(util.format("Uploaded files: %s", req.files)); // RAPP user username console.log(util.format("RAPP user username: %s", req.username)); var response = { msg: util.format('Hello %s #%s', name, number), error: '' }; if (name === "Uknown" || number === -1) { response.error = 'Missing input arguments'; resp.sendJson(response); return; } /** * ros.callService() method is used to call a ROS Service. This method has * three (3) input arguments: * * ros.callService(rosSrvName, rosMsg, * {success: function(){}, fail: function(){}}) */ // ROS Service request message var rosMsg = { name: name, number: number }; function onsuccess(rosResp) { resp.sendJson(rosResp); } function onfailure(err) { resp.sendJson({error: err}); } // Call ROS-Service. ros.callService(rosSrvName, rosMsg, {success: onsuccess, fail: onfailure}); } // Export the web service implementation function module.exports = template_web_svc;