wuwebview.hpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. #ifndef WUWEBVIEW_INCL
  14. #define WUWEBVIEW_INCL
  15. #ifdef WUWEBVIEW_EXPORTS
  16. #define WUWEBVIEW_API DECL_EXPORT
  17. #else
  18. #define WUWEBVIEW_API DECL_IMPORT
  19. #endif
  20. #define WWV_OMIT_XML_DECLARATION 0x0001
  21. #define WWV_USE_DISPLAY_XSLT 0x0002
  22. #define WWV_OMIT_RESULT_TAG 0x0004
  23. #define WWV_ADD_SOAP 0x0008
  24. #define WWV_ADD_RESULTS_TAG 0x0010
  25. #define WWV_ADD_RESPONSE_TAG 0x0020
  26. #define WWV_OMIT_SCHEMAS 0x0040
  27. #define WWV_CDATA_SCHEMAS 0x0080
  28. #define WWV_INCL_NAMESPACES 0x0100
  29. #define WWV_INCL_GENERATED_NAMESPACES 0x0200
  30. interface IWuWebView : extends IInterface
  31. {
  32. virtual void getResultViewNames(StringArray &names)=0;
  33. virtual void getResourceURLs(StringArray &urls, const char *prefix)=0;
  34. virtual unsigned getResourceURLCount() = 0;
  35. virtual void renderResults(const char *viewName, const char *xml, StringBuffer &html)=0;
  36. virtual void renderResults(const char *viewName, StringBuffer &html)=0;
  37. virtual void renderSingleResult(const char *viewName, const char *resultname, StringBuffer &html)=0;
  38. virtual void renderResultsJSON(StringBuffer &out, const char *jsonp)=0;
  39. virtual void applyResultsXSLT(const char *file, const char *xml, StringBuffer &html)=0;
  40. virtual void applyResultsXSLT(const char *file, StringBuffer &html)=0;
  41. virtual StringBuffer &aggregateResources(const char *type, StringBuffer &content)=0;
  42. virtual void expandResults(const char *xml, StringBuffer &out, unsigned flags)=0;
  43. virtual void expandResults(StringBuffer &out, unsigned flags)=0;
  44. virtual void addInputsFromPTree(IPropertyTree *pt)=0;
  45. virtual void addInputsFromXml(const char *xml)=0;
  46. virtual void createWuidResponse(StringBuffer &out, unsigned flags)=0;
  47. virtual bool getResourceByPath(const char *path, MemoryBuffer &mb)=0;
  48. virtual StringBuffer &getManifest(StringBuffer &mf)=0;
  49. };
  50. extern WUWEBVIEW_API IWuWebView *createWuWebView(IConstWorkUnit &wu, const char *target, const char *queryname, const char*dir, bool mapEspDir);
  51. extern WUWEBVIEW_API IWuWebView *createWuWebView(const char *wuid, const char *target, const char *queryname, const char*dir, bool mapEspDir);
  52. extern WUWEBVIEW_API void getWuResourceUrlListByPath(const char *path, StringBuffer &fmt, StringBuffer &content, const char *prefix);
  53. extern WUWEBVIEW_API void getWuManifestByPath(const char *path, StringBuffer &mf);
  54. extern WUWEBVIEW_API void getWuResourceByPath(const char *path, MemoryBuffer &mb, StringBuffer &mimetype);
  55. extern WUWEBVIEW_API void expandWuXmlResults(StringBuffer &out, const char *name, const char *xml, unsigned flags);
  56. static inline bool isPathSeparator(char sep)
  57. {
  58. return (sep=='\\')||(sep=='/');
  59. }
  60. static inline const char *skipPathNodes(const char *&s, int skip)
  61. {
  62. if (s) {
  63. while (*s) {
  64. if (isPathSeparator(*s++))
  65. if (!skip--)
  66. return s;
  67. }
  68. }
  69. return NULL;
  70. }
  71. static inline const char *nextPathNode(const char *&s, StringBuffer &node, int skip=0)
  72. {
  73. if (skip)
  74. skipPathNodes(s, skip);
  75. if (s) while (*s) {
  76. if (isPathSeparator(*s))
  77. return s++;
  78. node.append(*s++);
  79. }
  80. return NULL;
  81. }
  82. static inline const char *firstPathNode(const char *&s, StringBuffer &node)
  83. {
  84. if (s && isPathSeparator(*s))
  85. s++;
  86. return nextPathNode(s, node);
  87. }
  88. #endif