コード例 #1
0
 def __init__(
     self,
     token: Optional[str] = None,
     base_url: str = BASE_URL,
     timeout: int = 30,
     ssl: Optional[SSLContext] = None,
     proxy: Optional[str] = None,
     session: Optional[aiohttp.ClientSession] = None,
     trust_env_in_session: bool = False,
     headers: Optional[dict] = None,
     user_agent_prefix: Optional[str] = None,
     user_agent_suffix: Optional[str] = None,
 ):
     self.token = None if token is None else token.strip()
     self.base_url = base_url
     self.timeout = timeout
     self.ssl = ssl
     self.proxy = proxy
     self.session = session
     # https://github.com/slackapi/python-slack-sdk/issues/738
     self.trust_env_in_session = trust_env_in_session
     self.headers = headers or {}
     self.headers["User-Agent"] = get_user_agent(user_agent_prefix,
                                                 user_agent_suffix)
     self._logger = logging.getLogger(__name__)
コード例 #2
0
 def __init__(
     self,
     token: Optional[str] = None,
     base_url: str = BASE_URL,
     timeout: int = 30,
     loop: Optional[asyncio.AbstractEventLoop] = None,
     ssl: Optional[SSLContext] = None,
     proxy: Optional[str] = None,
     run_async: bool = False,
     use_sync_aiohttp: bool = False,
     session: Optional[aiohttp.ClientSession] = None,
     headers: Optional[dict] = None,
     user_agent_prefix: Optional[str] = None,
     user_agent_suffix: Optional[str] = None,
 ):
     self.token = None if token is None else token.strip()
     self.base_url = base_url
     self.timeout = timeout
     self.ssl = ssl
     self.proxy = proxy
     self.run_async = run_async
     self.use_sync_aiohttp = use_sync_aiohttp
     self.session = session
     self.headers = headers or {}
     self.headers["User-Agent"] = get_user_agent(user_agent_prefix,
                                                 user_agent_suffix)
     self._logger = logging.getLogger(__name__)
     self._event_loop = loop
コード例 #3
0
def _build_request_headers(
    default_headers: Dict[str, str], additional_headers: Optional[Dict[str, str]],
) -> Dict[str, str]:
    if additional_headers is None:
        return {}

    request_headers = {
        "User-Agent": get_user_agent(),
        "Content-Type": "application/json;charset=utf-8",
    }
    request_headers.update(default_headers)
    if additional_headers:
        request_headers.update(additional_headers)
    return request_headers
コード例 #4
0
def _get_headers(
    *,
    headers: dict,
    token: Optional[str],
    has_json: bool,
    has_files: bool,
    request_specific_headers: Optional[dict],
) -> Dict[str, str]:
    """Constructs the headers need for a request.
    Args:
        has_json (bool): Whether or not the request has json.
        has_files (bool): Whether or not the request has files.
        request_specific_headers (dict): Additional headers specified by the user for a specific request.

    Returns:
        The headers dictionary.
            e.g. {
                'Content-Type': 'application/json;charset=utf-8',
                'Authorization': 'Bearer xoxb-1234-1243',
                'User-Agent': 'Python/3.6.8 slack/2.1.0 Darwin/17.7.0'
            }
    """
    final_headers = {
        "Content-Type": "application/x-www-form-urlencoded",
    }
    if headers is None or "User-Agent" not in headers:
        final_headers["User-Agent"] = get_user_agent()

    if token:
        final_headers.update({"Authorization": "Bearer {}".format(token)})
    if headers is None:
        headers = {}

    # Merge headers specified at client initialization.
    final_headers.update(headers)

    # Merge headers specified for a specific request. e.g. oauth.access
    if request_specific_headers:
        final_headers.update(request_specific_headers)

    if has_json:
        final_headers.update({"Content-Type": "application/json;charset=utf-8"})

    if has_files:
        # These are set automatically by the aiohttp library.
        final_headers.pop("Content-Type", None)

    return final_headers
コード例 #5
0
 def _build_urllib_request_headers(
     self, token: str, has_json: bool, has_files: bool, additional_headers: dict,
 ):
     headers = {
         "User-Agent": get_user_agent(),
         "Content-Type": "application/x-www-form-urlencoded",
     }
     headers.update(self.headers)
     if token:
         headers.update({"Authorization": "Bearer {}".format(token)})
     if additional_headers:
         headers.update(additional_headers)
     if has_json:
         headers.update({"Content-Type": "application/json;charset=utf-8"})
     if has_files:
         # will be set afterwards
         headers.pop("Content-Type", None)
     return headers