Get current usage limits and quota information. Returns: UsageLimits object containing usage and quota data Raises: SimStudioError: If getting usage limits fails
(self)
| 517 | ) |
| 518 | |
| 519 | def get_usage_limits(self) -> UsageLimits: |
| 520 | """ |
| 521 | Get current usage limits and quota information. |
| 522 | |
| 523 | Returns: |
| 524 | UsageLimits object containing usage and quota data |
| 525 | |
| 526 | Raises: |
| 527 | SimStudioError: If getting usage limits fails |
| 528 | """ |
| 529 | url = f"{self.base_url}/api/users/me/usage-limits" |
| 530 | |
| 531 | try: |
| 532 | response = self._session.get(url) |
| 533 | |
| 534 | self._update_rate_limit_info(response) |
| 535 | |
| 536 | if not response.ok: |
| 537 | try: |
| 538 | error_data = response.json() |
| 539 | error_message = error_data.get('error', f'HTTP {response.status_code}: {response.reason}') |
| 540 | error_code = error_data.get('code') |
| 541 | except (ValueError, KeyError): |
| 542 | error_message = f'HTTP {response.status_code}: {response.reason}' |
| 543 | error_code = None |
| 544 | |
| 545 | raise SimStudioError(error_message, error_code, response.status_code) |
| 546 | |
| 547 | data = response.json() |
| 548 | |
| 549 | return UsageLimits( |
| 550 | success=data.get('success', True), |
| 551 | rate_limit=data.get('rateLimit', {}), |
| 552 | usage=data.get('usage', {}) |
| 553 | ) |
| 554 | |
| 555 | except requests.RequestException as e: |
| 556 | raise SimStudioError(f'Failed to get usage limits: {str(e)}', 'USAGE_ERROR') |
| 557 | |
| 558 | def __enter__(self): |
| 559 | """Context manager entry.""" |