1 /** 2 * Licensed to the University Corporation for Advanced Internet 3 * Development, Inc. (UCAID) under one or more contributor license 4 * agreements. See the NOTICE file distributed with this work for 5 * additional information regarding copyright ownership. 6 * 7 * UCAID licenses this file to you under the Apache License, 8 * Version 2.0 (the "License"); you may not use this file except 9 * in compliance with the License. You may obtain a copy of the 10 * License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 17 * either express or implied. See the License for the specific 18 * language governing permissions and limitations under the License. 19 */ 20 21 /** 22 * @file shibsp/util/TemplateParameters.h 23 * 24 * Supplies xmltooling TemplateEngine with additional parameters. 25 */ 26 27 #ifndef __shibsp_tempparams_h__ 28 #define __shibsp_tempparams_h__ 29 30 #include <shibsp/base.h> 31 32 #include <xmltooling/util/TemplateEngine.h> 33 34 namespace shibsp { 35 36 class SHIBSP_API PropertySet; 37 class SHIBSP_API Session; 38 39 /** 40 * Supplies xmltooling TemplateEngine with additional parameters. 41 */ 42 class SHIBSP_API TemplateParameters : public xmltooling::TemplateEngine::TemplateParameters 43 { 44 public: 45 /** 46 * Constructor. 47 * 48 * @param e an exception to supply additional parameters 49 * @param props a PropertySet to supply additional parameters 50 * @param session an active user session 51 */ 52 TemplateParameters( 53 const std::exception* e=nullptr, const PropertySet* props=nullptr, const Session* session=nullptr 54 ); 55 56 virtual ~TemplateParameters(); 57 58 /** 59 * Sets a PropertySet to supply additional parameters. 60 * 61 * @param props a PropertySet to supply additional parameters 62 */ 63 void setPropertySet(const PropertySet* props); 64 65 /** 66 * Returns the exception passed to the object, if it contains rich information. 67 * 68 * @return an exception, or nullptr 69 */ 70 const xmltooling::XMLToolingException* getRichException() const; 71 72 const char* getParameter(const char* name) const; 73 74 /** 75 * Returns a set of query string name/value pairs, URL-encoded, 76 * representing all known parameters. If an exception is 77 * present, it's type, message, and parameters will be included. 78 * 79 * @return the query string representation 80 */ 81 std::string toQueryString() const; 82 83 private: 84 const PropertySet* m_props; 85 const std::exception* m_exception; 86 const xmltooling::XMLToolingException* m_toolingException; 87 const Session* m_session; 88 }; 89 }; 90 91 #endif /* __shibsp_tempparams_h__ */ 92