def execute_request(self, request, binary=False): """Executes an HttpRequest. Args: request (HttpRequest): The HttpRequest to execute. binary (bool): A flag which should be set to True if a binary response is expected. Returns: HttpResponse: The HttpResponse received. """ # Invoke the on before request HttpCallBack if specified if self.http_call_back is not None: self.http_call_back.on_before_request(request) # Add global headers to request request.headers = APIHelper.merge_dicts(self.global_headers(), request.headers) if self.config.additional_headers is not None: request.headers.update(self.config.additional_headers) # Invoke the API call to fetch the response. func = self.config.http_client.execute_as_binary if binary else self.config.http_client.execute_as_string response = func(request) # Invoke the on after response HttpCallBack if specified if self.http_call_back is not None: self.http_call_back.on_after_response(response) return response