예제 #1
0
    async def create_policy(self,
                            policy,
                            query_params={},
                            keep_empty_params=False):
        """
        Creates a policy.
        Args:
            {policy}
            query_params {dict}: Map of query parameters for request
            [query_params.activate] {str}
        Returns:
            Policy
        """
        http_method = "post".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/policies
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        if isinstance(policy, dict):
            body = policy
        else:
            body = policy.as_dict()
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json"
        }
        form = {}

        request, error = await self._request_executor.create_request(
            http_method,
            api_url,
            body,
            headers,
            form,
            keep_empty_params=keep_empty_params)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            body = self.form_response_body(response.get_body())
            result = find_policy_model(body["type"])(body)
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #2
0
    async def list_policies(self, query_params={}, keep_empty_params=False):
        """
        Gets all policies with the specified type.
        Args:
            query_params {dict}: Map of query parameters for request
            [query_params.type] {str}
            [query_params.status] {str}
            [query_params.expand] {str}
        Returns:
            list: Collection of Policy instances.
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/policies
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        body = {}
        headers = {}
        form = {}

        request, error = await self._request_executor.create_request(
            http_method,
            api_url,
            body,
            headers,
            form,
            keep_empty_params=keep_empty_params)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            result = []
            for item in response.get_body():
                result.append(
                    find_policy_model(item["type"])(
                        self.form_response_body(item)))
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #3
0
    async def get_policy(self,
                         policyId,
                         query_params={},
                         keep_empty_params=False):
        """
        Gets a policy.
        Args:
            policy_id {str}
            query_params {dict}: Map of query parameters for request
            [query_params.expand] {str}
        Returns:
            Policy
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/policies/{policyId}
            """)
        if query_params:
            encoded_query_params = urlencode(query_params)
            api_url += f"/?{encoded_query_params}"

        body = {}
        headers = {}
        form = {}

        request, error = await self._request_executor.create_request(
            http_method,
            api_url,
            body,
            headers,
            form,
            keep_empty_params=keep_empty_params)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            body = self.form_response_body(response.get_body())
            result = find_policy_model(body["type"])(body)
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
예제 #4
0
    async def update_policy(self, policyId, policy, keep_empty_params=False):
        """
        Updates a policy.
        Args:
            policy_id {str}
            {policy}
        Returns:
            Policy
        """
        http_method = "put".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/policies/{policyId}
            """)

        if isinstance(policy, dict):
            body = policy
        else:
            body = policy.as_dict()
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json"
        }
        form = {}

        request, error = await self._request_executor.create_request(
            http_method,
            api_url,
            body,
            headers,
            form,
            keep_empty_params=keep_empty_params)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            body = self.form_response_body(response.get_body())
            result = find_policy_model(body["type"])(body)
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
    async def update_authorization_server_policy(self, authServerId, policyId,
                                                 policy):
        """
        Args:
            auth_server_id {str}
            policy_id {str}
            {policy}
        Returns:
            Policy
        """
        http_method = "put".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/authorizationServers/{authServerId}
                /policies/{policyId}
            """)

        if isinstance(policy, dict):
            body = policy
        else:
            body = policy.as_dict()
        headers = {
            "Accept": "application/json",
            "Content-Type": "application/json"
        }

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            body = self.form_response_body(response.get_body())
            result = find_policy_model(body["type"])(body)
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
    async def list_authorization_server_policies(self, authServerId):
        """
        Args:
            auth_server_id {str}
        Returns:
            list: Collection of Policy instances.
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/authorizationServers/{authServerId}
                /policies
            """)

        body = {}
        headers = {}

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            result = []
            for item in response.get_body():
                result.append(
                    find_policy_model(item["type"])(
                        self.form_response_body(item)))
        except Exception as error:
            return (None, response, error)
        return (result, response, None)
    async def get_authorization_server_policy(self, authServerId, policyId):
        """
        Args:
            auth_server_id {str}
            policy_id {str}
        Returns:
            Policy
        """
        http_method = "get".upper()
        api_url = format_url(f"""
            {self._base_url}
            /api/v1/authorizationServers/{authServerId}
                /policies/{policyId}
            """)

        body = {}
        headers = {}

        request, error = await self._request_executor.create_request(
            http_method, api_url, body, headers)

        if error:
            return (None, None, error)

        response, error = await self._request_executor\
            .execute(request, Policy)

        if error:
            return (None, response, error)

        try:
            body = self.form_response_body(response.get_body())
            result = find_policy_model(body["type"])(body)
        except Exception as error:
            return (None, response, error)
        return (result, response, None)