page_resource.xts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: ps
  5. (C) Copyright IBM Corp. 2005, 2011
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. -->
  12. <!-- $Header: $ -->
  13. <!-- $DateTime: 2004/09/10 23:21:26 $ -->
  14. <!-- $Change: 9691 $ -->
  15. <!--
  16. Cognos Portal Services
  17. CPS Assembler Web Adapter
  18. -->
  19. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/">
  20. <xts:block id="state-cache" nodelist="envelope, header, env, http, cookies" condition=".[not(/root/env/param[@name = 'wsdl'])]" mandatory="false" type="exec" mode="interpret" processor="XSLT">
  21. <xts:logicsheet path="logicsheets/portal.xsl"/>
  22. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  23. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  24. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  25. xmlns:soap="http://developer.cognos.com/schemas/cps/logic/soap"
  26. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  27. xmlns:cm="http://developer.cognos.com/schemas/bibus/3/"
  28. exclude-result-prefixes="xtsext">
  29. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  30. <!--
  31. determine requested portal package and pagelet path
  32. -->
  33. <xsl:variable name="cps-package">/connection</xsl:variable>
  34. <xsl:variable name="package-name" select="xtsext:web64encode($cps-package, false())"/>
  35. <pf:sessionpassport/>
  36. <xsl:template match="/">
  37. <xts:sequence>
  38. <xts:append>
  39. <state>
  40. <xts:function name="TDSRequest">
  41. <xts:param name="action">get</xts:param>
  42. <xts:param name="session-id"><xsl:value-of select="$passport"/></xts:param>
  43. <xts:param name="map-id"><xsl:value-of select="'portlets'"/></xts:param>
  44. <xts:param name="name"><xsl:value-of select="$package-name"/></xts:param>
  45. </xts:function>
  46. </state>
  47. </xts:append>
  48. </xts:sequence>
  49. </xsl:template>
  50. </xsl:stylesheet>
  51. </xts:block>
  52. <xts:block id="state-decode" nodelist="state" dependency="state-cache" type="exec" mode="interpret" processor="XSLT">
  53. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  54. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  55. <xsl:template match="/">
  56. <xts:sequence>
  57. <xts:append>
  58. <decoded>
  59. <xts:transform processor="AsmStateDecode">
  60. <xsl:copy-of select="/root/state/*"/>
  61. </xts:transform>
  62. </decoded>
  63. </xts:append>
  64. </xts:sequence>
  65. </xsl:template>
  66. </xsl:stylesheet>
  67. </xts:block>
  68. <xts:block id="resource" nodelist="env, decoded" dependency="state-decode" type="exec" mode="interpret" processor="XSLT">
  69. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  70. xmlns:m="urn:oasis:names:tc:wsrp:v1:types"
  71. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/"
  72. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  73. xmlns:xos="http://developer.cognos.com/schemas/xts/output/"
  74. xmlns:trustedSessionHelper="com.cognos.portal.utils.TrustedSessionHelper">
  75. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  76. <xsl:variable name="params" select="/root/env/param"/>
  77. <xsl:variable name="wsrp-url" select="$params[@name = 'wsrp-url']"/>
  78. <xsl:variable name="cps-urltoken" select="$params[@name = 'cps-urltoken']"/>
  79. <xsl:variable name="wsrp-requiresRewrite" select="$params[@name = 'wsrp-requiresRewrite']"/>
  80. <xsl:variable name="cps-producerId" select="$params[@name = 'cps-producerId']"/>
  81. <xsl:variable name="package-state" select="/root/decoded/cps:packageState"/>
  82. <xsl:variable name="cookies" select="$package-state/cps:producerRuntime[cps:id = $cps-producerId]/cps:cookies/cps:cookie"/>
  83. <xsl:template match="/">
  84. <xts:sequence>
  85. <xts:append select="/root/output">
  86. <xsl:choose>
  87. <xsl:when test="trustedSessionHelper:staticVeifyBase64HMAC(string($cps-urltoken), string($wsrp-url)) and xtsext:cafaction('checkurlhostdomain_null', $wsrp-url) = 'true'">
  88. <xsl:variable name="wsrp-url-with-params">
  89. <xsl:value-of select="$wsrp-url"/>
  90. <xsl:for-each select="$params[not(starts-with(@name,'wsrp-') or @name = 'b_action' or @name = 'm' or @name = 'm_state')]">
  91. <xsl:choose>
  92. <xsl:when test="contains($wsrp-url, '?') or position() > 1">
  93. <xsl:text>&amp;</xsl:text>
  94. </xsl:when>
  95. <xsl:otherwise>
  96. <xsl:text>?</xsl:text>
  97. </xsl:otherwise>
  98. </xsl:choose>
  99. <xsl:value-of select="@name"/>
  100. <xsl:text>=</xsl:text>
  101. <xsl:value-of select="xtsext:urlencode(.)"/>
  102. </xsl:for-each>
  103. </xsl:variable>
  104. <xts:request protocol="GET" target="{ $wsrp-url-with-params }" option="part">
  105. <xsl:if test="$cookies">
  106. <!-- recreate cookies -->
  107. <xts:param name="header">
  108. <xsl:text>Cookie=</xsl:text>
  109. <xsl:for-each select="$cookies">
  110. <xsl:value-of select="concat(@name, '=', .)"/>
  111. <xsl:if test="position() != last()">
  112. <xsl:text>; </xsl:text>
  113. </xsl:if>
  114. </xsl:for-each>
  115. </xts:param>
  116. </xsl:if>
  117. </xts:request>
  118. </xsl:when>
  119. <xsl:otherwise>
  120. <xos:statusCode xmlns:xos="http://developer.cognos.com/schemas/xts/output/">400</xos:statusCode>
  121. </xsl:otherwise>
  122. </xsl:choose>
  123. </xts:append>
  124. </xts:sequence>
  125. </xsl:template>
  126. </xsl:stylesheet>
  127. </xts:block>
  128. </xts:morphlet>