def __init__(self,service_type_code, api_key, payer_name, payer_id,  service_provider_first_name, service_provider_last_name, service_provider_npi,  subscriber_id, subscriber_first_name,  subscriber_last_name, subscriber_dob):
     RestRequest.__init__(self, api_key, payer_name, payer_id,  service_provider_first_name, service_provider_last_name, service_provider_npi,  subscriber_id, subscriber_first_name,  subscriber_last_name, subscriber_dob)
     self.service_type_code=service_type_code
Exemplo n.º 2
0
 def __init__(self):
     super(CustomRestRequest, self).__init__()
     self.rest_request = RestRequest()
 def make_argument(self):
     RestRequest.make_argument(self)
     self.dic["service_type_code"]=self.service_type_code
     return self.dic
Exemplo n.º 4
0
class CustomRestRequest(base.RequestBase):
    def __init__(self):
        super(CustomRestRequest, self).__init__()
        self.rest_request = RestRequest()

    @staticmethod
    def get_request_type():
        return "rest"

    def get_login_cookies(self, device):
        """ Get rest request cookies
        :param device:
        :return: response or None
        """
        base_info = self.get_auth_info(device.get("auth_info")).get("rest")
        ip = device.get("ip_address")
        port = base_info.get("port", 443)
        schema = base_info.get("schema", "https")
        username = base_info.get("username")
        password = base_info.get("password")
        if not username or not password:
            return

        # Add send request cookies
        body = {"username": username, "password": password}

        login_requests = LOGIN_REQUEST_LIST
        for login_req in login_requests:
            method = login_req.get("method")
            uri = login_req.get("url")
            kwargs = {"verify": False, "headers": login_req.get("headers")}
            if kwargs["headers"].get("content-type") == "application/json":
                kwargs.update({"json": body})
            else:
                kwargs.update({"data": body})
            login_resp = self.rest_request.send_request(method,
                                                        ip,
                                                        port,
                                                        uri,
                                                        schema=schema,
                                                        **kwargs)
            status_code = getattr(login_resp, "status_code", None)
            if status_code in login_req["result"]:
                return login_resp

    def send_request_to_device(self, device, authorized_retries=3, **kwargs):
        """  The parameters to send the request are ready and the request will be sent
        :param device:
        :param authorized_retries:
        :param kwargs:
        :return: (status_code, response) or (-1, None)
        """
        LOG.debug(
            "Send rest request, authorized_retries is %s, kwargs is >>> %s",
            authorized_retries, kwargs)
        # kwargs = {
        #     "method": "POST",
        #     "uri": "/login",
        #     "headers": {
        #         "content-type": "application/json"
        #     },
        #     "data": None,
        #     "json": {
        #         "username": "******",
        #         "password": "******"
        #     },
        #     "params": None,
        #     "timeout": 5
        # }
        base_info = self.get_auth_info(device.get("auth_info")).get("rest")
        ip = device.get("ip_address")
        port = base_info.get("port", 443)
        schema = base_info.get("schema", "https")

        print cookies_mapping.get_cookies()

        # Cache cookies during login
        if ip not in cookies_mapping.get_cookies().keys():
            login_resp = self.get_login_cookies(device)
            if login_resp is not None:
                cookies_mapping.add_cookie(ip, login_resp.cookies)
        _kwargs = copy.deepcopy(kwargs)

        # Send the rest request
        response = self.rest_request.send_request(
            kwargs.pop("method", ""),
            ip,
            port,
            kwargs.pop("uri", "/"),
            schema=schema,
            verify=False,
            cookies=cookies_mapping.get_cookie(ip),
            **kwargs)
        if response is None:
            return -1, None

        status_code = getattr(response, "status_code", None)
        if status_code in [codes.unauthorized]:
            if authorized_retries <= 0:
                return -1, None
            # Cache cookies during login
            login_resp = self.get_login_cookies(device)
            if login_resp is not None:
                cookies_mapping.add_cookie(ip, login_resp.cookies)
            return self.send_request_to_device(
                device, authorized_retries=authorized_retries - 1, **_kwargs)
        return status_code, response