class_docstr: Interact with HTTP servers.
  
  :param method: the API method to be called
  :param http_conn_id: :ref:`http connection<howto/connection:http>` that has the base
      API url i.e https://www.google.com/ and optional authentication credentials. Default
      headers can also be specified in the Extra field in json format.
  :param auth_type: The auth type for the service
  :param tcp_keep_alive: Enable TCP Keep Alive for the connection.
  :param tcp_keep_alive_idle: The TCP Keep Alive Idle parameter (corresponds to ``socket.TCP_KEEPIDLE``).
  :param tcp_keep_alive_count: The TCP Keep Alive count parameter (corresponds to ``socket.TCP_KEEPCNT``)
  :param tcp_keep_alive_interval: The TCP Keep Alive interval parameter (corresponds to
      ``socket.TCP_KEEPINTVL``)
  :param auth_args: extra arguments used to initialize the auth_type if different than default HTTPBasicAuth
class_docstr_tok: ["Interact","with","HTTP","servers",".",":","param","method",":","the","API","method","to","be","called",":","param","http_conn_id",":",":","ref",":","`","http","connection","<","howto\/connection",":","http",">","`","that","has","the","base","API","url","i.e","https",":","\/\/www.google.com\/","and","optional","authentication","credentials",".","Default","headers","can","also","be","specified","in","the","Extra","field","in","json","format",".",":","param","auth_type",":","The","auth","type","for","the","service",":","param","tcp_keep_alive",":","Enable","TCP","Keep","Alive","for","the","connection",".",":","param","tcp_keep_alive_idle",":","The","TCP","Keep","Alive","Idle","parameter","(","corresponds","to","``","socket.TCP_KEEPIDLE","``",")",".",":","param","tcp_keep_alive_count",":","The","TCP","Keep","Alive","count","parameter","(","corresponds","to","``","socket.TCP_KEEPCNT","``",")",":","param","tcp_keep_alive_interval",":","The","TCP","Keep","Alive","interval","parameter","(","corresponds","to","``","socket.TCP_KEEPINTVL","``",")",":","param","auth_args",":","extra","arguments","used","to","initialize","the","auth_type","if","different","than","default","HTTPBasicAuth"]
docstr: Grab extra options, actually run the request, and check the result.
  
  :param session: the session to be used to execute the request
  :param prepped_request: the prepared request generated in run()
  :param extra_options: additional options to be used when executing the request
      i.e. ``{'check_response': False}`` to avoid checking raising exceptions on non 2XX
      or 3XX status codes
docstr_tok: ["Grab","extra","options",",","actually","run","the","request",",","and","check","the","result",".",":","param","session",":","the","session","to","be","used","to","execute","the","request",":","param","prepped_request",":","the","prepared","request","generated","in","run","(",")",":","param","extra_options",":","additional","options","to","be","used","when","executing","the","request","i.e",".","``","{","'check_response","'",":","False","}","``","to","avoid","checking","raising","exceptions","on","non","2XX","or","3XX","status","codes"]
code: def run_and_check(
      self,
      session: requests.Session,
      prepped_request: requests.PreparedRequest,
      extra_options: dict[Any, Any],
  ) -> Any:
      """Grab extra options, actually run the request, and check the result.
  
      :param session: the session to be used to execute the request
      :param prepped_request: the prepared request generated in run()
      :param extra_options: additional options to be used when executing the request
          i.e. ``{'check_response': False}`` to avoid checking raising exceptions on non 2XX
          or 3XX status codes
      """
      extra_options = extra_options or {}
  
      settings = session.merge_environment_settings(
          prepped_request.url,
          proxies=extra_options.get("proxies", {}),
          stream=extra_options.get("stream", False),
          verify=extra_options.get("verify"),
          cert=extra_options.get("cert"),
      )
  
      # Send the request.
      send_kwargs: dict[str, Any] = {
          "timeout": extra_options.get("timeout"),
          "allow_redirects": extra_options.get("allow_redirects", True),
      }
      send_kwargs.update(settings)
  
      try:
          response = session.send(prepped_request, **send_kwargs)
  
          if extra_options.get("check_response", True):
              self.check_response(response)
          return response
  
      except requests.exceptions.ConnectionError as ex:
          self.log.warning(
              "%s Tenacity will retry to execute the operation", ex
          )
          raise ex
  
imports: from __future__ import annotations
  import asyncio
  from typing import TYPE_CHECKING, Any, Callable
  import aiohttp
  import requests
  import tenacity
  from aiohttp import ClientResponseError
  from asgiref.sync import sync_to_async
  from requests.auth import HTTPBasicAuth
  from requests.models import DEFAULT_REDIRECT_LIMIT
  from requests_toolbelt.adapters.socket_options import TCPKeepAliveAdapter
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
label_desc: Use image node_id 7 for calling the HttpHook obj's underlying member method code with example usage: obj.run_and_check(session, prepped_request, extra_options) and returns: response