| 42 | |
| 43 | |
| 44 | class AsyncSCIMClient: |
| 45 | BASE_URL = "https://api.slack.com/scim/v1/" |
| 46 | |
| 47 | token: str |
| 48 | timeout: int |
| 49 | ssl: Optional[SSLContext] |
| 50 | proxy: Optional[str] |
| 51 | base_url: str |
| 52 | session: Optional[ClientSession] |
| 53 | trust_env_in_session: bool |
| 54 | auth: Optional[BasicAuth] |
| 55 | default_headers: Dict[str, str] |
| 56 | logger: logging.Logger |
| 57 | retry_handlers: List[AsyncRetryHandler] |
| 58 | |
| 59 | def __init__( |
| 60 | self, |
| 61 | token: str, |
| 62 | timeout: int = 30, |
| 63 | ssl: Optional[SSLContext] = None, |
| 64 | proxy: Optional[str] = None, |
| 65 | base_url: str = BASE_URL, |
| 66 | session: Optional[ClientSession] = None, |
| 67 | trust_env_in_session: bool = False, |
| 68 | auth: Optional[BasicAuth] = None, |
| 69 | default_headers: Optional[Dict[str, str]] = None, |
| 70 | user_agent_prefix: Optional[str] = None, |
| 71 | user_agent_suffix: Optional[str] = None, |
| 72 | logger: Optional[logging.Logger] = None, |
| 73 | retry_handlers: Optional[List[AsyncRetryHandler]] = None, |
| 74 | ): |
| 75 | """API client for SCIM API |
| 76 | See https://docs.slack.dev/admins/scim-api/ for more details |
| 77 | |
| 78 | Args: |
| 79 | token: An admin user's token, which starts with `xoxp-` |
| 80 | timeout: Request timeout (in seconds) |
| 81 | ssl: `ssl.SSLContext` to use for requests |
| 82 | proxy: Proxy URL (e.g., `localhost:9000`, `http://localhost:9000`) |
| 83 | base_url: The base URL for API calls |
| 84 | session: `aiohttp.ClientSession` instance |
| 85 | trust_env_in_session: True/False for `aiohttp.ClientSession` |
| 86 | auth: Basic auth info for `aiohttp.ClientSession` |
| 87 | default_headers: Request headers to add to all requests |
| 88 | user_agent_prefix: Prefix for User-Agent header value |
| 89 | user_agent_suffix: Suffix for User-Agent header value |
| 90 | logger: Custom logger |
| 91 | retry_handlers: Retry handlers |
| 92 | """ |
| 93 | self.token = token |
| 94 | self.timeout = timeout |
| 95 | self.ssl = ssl |
| 96 | self.proxy = proxy |
| 97 | self.base_url = base_url |
| 98 | self.session = session |
| 99 | self.trust_env_in_session = trust_env_in_session |
| 100 | self.auth = auth |
| 101 | self.default_headers = default_headers if default_headers else {} |
no outgoing calls