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