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
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
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