def _make_xacml_context_request(cls, httpMethod, resourceURI, resourceContents, subjectID, subjectIdFormat, actions=None): """Create a XACML Request. Include post data as resource content if the HTTP method is POST. :type httpMethod: str :param httpMethod: HTTP method :type resourceURI: str :param resourceURI: resource URI :type resourceContents: basestr :param resourceContents: resource contents XML as string :type subjectID: str :param subjectID: subject ID :type subjectIdFormat: str :param subjectIdFormat: subject ID format :type actions: list of str :param actions: actions """ if actions is None: actions = [] if httpMethod == 'GET': ### TODO Should action be related to HTTP method? return cls._createXacmlProfileRequestCtx(subjectIdFormat, subjectID, resourceURI, None, actions) elif httpMethod == 'POST': resourceContentsElem = ElementTree.XML(resourceContents) tag = str( QName(XacmlContextBase.XACML_2_0_CONTEXT_NS, XacmlResource.RESOURCE_CONTENT_ELEMENT_LOCAL_NAME)) resourceContent = etree.makeEtreeElement( tag, XacmlContextBase.XACML_2_0_CONTEXT_NS_PREFIX, XacmlContextBase.XACML_2_0_CONTEXT_NS) resourceContent.append(resourceContentsElem) request = cls._createXacmlProfileRequestCtx( subjectIdFormat, subjectID, resourceURI, resourceContent, actions) return request