OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
VersionFunction.cc
Go to the documentation of this file.
1 
2 // -*- mode: c++; c-basic-offset:4 -*-
3 
4 // This file is part of libdap, A C++ implementation of the OPeNDAP Data
5 // Access Protocol.
6 
7 // Copyright (c) 2013 OPeNDAP, Inc.
8 // Authors: Nathan Potter <npotter@opendap.org>
9 // James Gallagher <jgallagher@opendap.org>
10 //
11 // This library is free software; you can redistribute it and/or
12 // modify it under the terms of the GNU Lesser General Public
13 // License as published by the Free Software Foundation; either
14 // version 2.1 of the License, or (at your option) any later version.
15 //
16 // This library is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 // Lesser General Public License for more details.
20 //
21 // You should have received a copy of the GNU Lesser General Public
22 // License along with this library; if not, write to the Free Software
23 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 //
25 // You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
26 
27 #include "config.h"
28 
29 #include <sstream>
30 
31 #include <BaseType.h>
32 #include <Str.h>
33 #include <Error.h>
34 #include <debug.h>
35 #include <ServerFunctionsList.h>
36 
37 #include "LinearScaleFunction.h"
38 
39 namespace libdap {
40 
48 void
49 function_version(int, BaseType *[], DDS &dds, BaseType **btpp)
50 {
51  string xml_value = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
52 
53  ServerFunction *sf;
54  string functionType;
55 
56  ServerFunctionsList *sfList = libdap::ServerFunctionsList::TheList();
57  std::multimap<string,libdap::ServerFunction *>::iterator begin = sfList->begin();
58  std::multimap<string,libdap::ServerFunction *>::iterator end = sfList->end();
59  std::multimap<string,libdap::ServerFunction *>::iterator sfit;
60 
61  xml_value += "<ds:functions xmlns:ds=\"http://xml.opendap.org/ns/DAP/4.0/dataset-services#\">\n";
62  for(sfit=begin; sfit!=end; sfit++){
63  sf = sfList->getFunction(sfit);
64  if(sf->canOperateOn(dds)){
65  xml_value += " <ds:function name=\"" + sf->getName() +"\""+
66  " version=\"" + sf->getVersion() + "\""+
67  " type=\"" + sf->getTypeString() + "\""+
68  " role=\"" + sf->getRole() + "\""+
69  " >\n" ;
70  xml_value += " <ds:Description href=\"" + sf->getDocUrl() + "\">" + sf->getDescriptionString() + "</ds:Description>\n";
71  xml_value += " </ds:function>\n";
72  }
73  }
74  xml_value += "</functions>\n";
75 
76  Str *response = new Str("version");
77 
78  response->set_value(xml_value);
79  *btpp = response;
80  return;
81 }
82 
83 } // namesspace libdap
void function_version(int, BaseType *[], DDS &dds, BaseType **btpp)
This server-side function returns version information for the server-side functions.