From 5306de388fe383b5bb059eb2861fdb3518cff814 Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:30:14 -0700 Subject: [PATCH 1/9] Remove unreliable API status checker and add troubleshooting guide --- docs/troubleshooting.md | 160 ++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 2 +- 2 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 docs/troubleshooting.md diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md new file mode 100644 index 0000000..7e99de5 --- /dev/null +++ b/docs/troubleshooting.md @@ -0,0 +1,160 @@ +# Troubleshooting + +This guide helps you resolve common issues when using ESO Logs Python. + +## API Connection Issues + +### 502 Bad Gateway or 503 Service Unavailable + +If you receive these errors, the ESO Logs API may be experiencing an outage: + +```python +# Error example: +# GraphQLClientHttpError: 502 Bad Gateway +``` + +**What to do:** +1. Check if the API is down by running: + ```bash + python scripts/quick_api_check.py + ``` + +2. Check ESO Logs social media for updates: + - Twitter: [@LogsEso](https://twitter.com/LogsEso) + - Discord: [ESO Logs Discord](https://discord.gg/rZQQ6bqtQb) + +3. Wait and retry - outages are typically resolved quickly + +### 401 Unauthorized + +This error means your credentials are invalid or expired: + +```python +# Error example: +# GraphQLClientHttpError: 401 Unauthorized +``` + +**Solutions:** +1. Check your environment variables: + ```bash + echo $ESOLOGS_ID + echo $ESOLOGS_SECRET + ``` + +2. Verify credentials are correct in your [ESO Logs API Clients](https://www.esologs.com/api/clients/) page + +3. Generate a new token: + ```python + from esologs.auth import get_access_token + token = get_access_token() # This will use your env variables + ``` + +### Network Timeouts + +If requests are timing out: + +```python +# Error example: +# TimeoutError: Request timed out +``` + +**Solutions:** +1. Check your internet connection +2. Try increasing timeout in client initialization: + ```python + client = Client( + url="https://www.esologs.com/api/v2/client", + headers={"Authorization": f"Bearer {token}"}, + timeout=30 # Increase from default + ) + ``` + +## OAuth2 Issues + +### "Invalid redirect URI" + +The redirect URI in your code must exactly match one configured in your ESO Logs app. + +**Solution:** +1. Go to [ESO Logs OAuth Clients](https://www.esologs.com/oauth/clients) +2. Add your redirect URI (e.g., `http://localhost:8765/callback`) +3. Ensure it matches exactly in your code (including port and protocol) + +### Token Expired + +OAuth2 tokens expire after the time specified in `expires_in`. + +**Solution:** +```python +from esologs.user_auth import refresh_access_token + +if token.is_expired: + new_token = refresh_access_token( + client_id=client_id, + client_secret=client_secret, + refresh_token=token.refresh_token + ) +``` + +## Common GraphQL Errors + +### "Field not found" + +This usually means you're trying to access a field that doesn't exist or requires specific permissions. + +**Solution:** +1. Check the [ESO Logs API documentation](https://www.esologs.com/v2-api-docs/eso/) +2. Ensure you have the required scopes for user data endpoints +3. Verify the field exists for your query type + +### Rate Limiting + +If you're hitting rate limits: + +```python +# Check your current usage +rate_limit = await client.get_rate_limit_data() +print(f"Points used: {rate_limit.rate_limit_data.points_spent_this_hour}") +``` + +**Solutions:** +1. Add delays between requests +2. Cache results when possible +3. Use pagination efficiently + +## Installation Issues + +### "No module named 'esologs'" + +**Solution:** +```bash +# Make sure you've installed the package +pip install esologs-python + +# Or for development +pip install -e ".[dev]" +``` + +### Dependency Conflicts + +If you have dependency version conflicts: + +**Solution:** +```bash +# Create a fresh virtual environment +python -m venv venv +source venv/bin/activate # On Windows: venv\Scripts\activate +pip install esologs-python +``` + +## Getting Help + +If you're still experiencing issues: + +1. **Check existing issues**: [GitHub Issues](https://github.com/knowlen/esologs-python/issues) +2. **Ask for help**: Create a new issue with: + - Your Python version (`python --version`) + - ESO Logs Python version (`pip show esologs-python`) + - Full error message and traceback + - Minimal code example that reproduces the issue +3. **Community support**: Join the [ESO Logs Discord](https://discord.gg/rZQQ6bqtQb) diff --git a/mkdocs.yml b/mkdocs.yml index 6cda174..4aa5e6f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -83,6 +83,7 @@ nav: - Contributing: development/contributing.md - Architecture: development/architecture.md - Changelog: changelog.md + - Troubleshooting: troubleshooting.md # Extensions markdown_extensions: @@ -173,7 +174,6 @@ extra_javascript: - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js - https://unpkg.com/mermaid@10/dist/mermaid.min.js - javascripts/mermaid-init.js - - javascripts/api-status-check.js # Additional configuration extra: From 8dee9a5b742843f95dad2cf8aff35d2f817baad8 Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:35:38 -0700 Subject: [PATCH 2/9] Move troubleshooting to Getting Started section --- docs/{ => getting-started}/troubleshooting.md | 0 mkdocs.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/{ => getting-started}/troubleshooting.md (100%) diff --git a/docs/troubleshooting.md b/docs/getting-started/troubleshooting.md similarity index 100% rename from docs/troubleshooting.md rename to docs/getting-started/troubleshooting.md diff --git a/mkdocs.yml b/mkdocs.yml index 4aa5e6f..84dc2f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - Installation: installation.md - Authentication: authentication.md - Quickstart: quickstart.md + - Troubleshooting: getting-started/troubleshooting.md - API Reference: - Game Data: api-reference/game-data.md - Character Data: api-reference/character-data.md @@ -83,7 +84,6 @@ nav: - Contributing: development/contributing.md - Architecture: development/architecture.md - Changelog: changelog.md - - Troubleshooting: troubleshooting.md # Extensions markdown_extensions: From f1fcb0ce2678decf6fc31b7795eff4c82295fc59 Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:40:22 -0700 Subject: [PATCH 3/9] Reorganize documentation structure for better navigation --- docs/{ => development}/changelog.md | 0 docs/{ => development}/resilience-and-retry.md | 0 docs/{ => getting-started}/authentication.md | 0 docs/{ => getting-started}/installation.md | 0 docs/{ => getting-started}/quickstart.md | 0 mkdocs.yml | 9 +++++---- 6 files changed, 5 insertions(+), 4 deletions(-) rename docs/{ => development}/changelog.md (100%) rename docs/{ => development}/resilience-and-retry.md (100%) rename docs/{ => getting-started}/authentication.md (100%) rename docs/{ => getting-started}/installation.md (100%) rename docs/{ => getting-started}/quickstart.md (100%) diff --git a/docs/changelog.md b/docs/development/changelog.md similarity index 100% rename from docs/changelog.md rename to docs/development/changelog.md diff --git a/docs/resilience-and-retry.md b/docs/development/resilience-and-retry.md similarity index 100% rename from docs/resilience-and-retry.md rename to docs/development/resilience-and-retry.md diff --git a/docs/authentication.md b/docs/getting-started/authentication.md similarity index 100% rename from docs/authentication.md rename to docs/getting-started/authentication.md diff --git a/docs/installation.md b/docs/getting-started/installation.md similarity index 100% rename from docs/installation.md rename to docs/getting-started/installation.md diff --git a/docs/quickstart.md b/docs/getting-started/quickstart.md similarity index 100% rename from docs/quickstart.md rename to docs/getting-started/quickstart.md diff --git a/mkdocs.yml b/mkdocs.yml index 84dc2f7..8cce580 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,9 +64,9 @@ theme: nav: - Home: index.md - Getting Started: - - Installation: installation.md - - Authentication: authentication.md - - Quickstart: quickstart.md + - Installation: getting-started/installation.md + - Authentication: getting-started/authentication.md + - Quickstart: getting-started/quickstart.md - Troubleshooting: getting-started/troubleshooting.md - API Reference: - Game Data: api-reference/game-data.md @@ -83,7 +83,8 @@ nav: - Testing: development/testing.md - Contributing: development/contributing.md - Architecture: development/architecture.md - - Changelog: changelog.md + - Resilience & Retry: development/resilience-and-retry.md + - Changelog: development/changelog.md # Extensions markdown_extensions: From 3930a0b7996cda21975f7a641c61287344631b53 Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:47:54 -0700 Subject: [PATCH 4/9] Fix markdown formatting in authentication guide --- docs/getting-started/authentication.md | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/getting-started/authentication.md b/docs/getting-started/authentication.md index 1489083..fe34280 100644 --- a/docs/getting-started/authentication.md +++ b/docs/getting-started/authentication.md @@ -18,27 +18,27 @@ Before you can authenticate, you need: 2. Click **"+ Create Client"** (top right corner) 3. Fill out the application form: - | Field | Value | Notes | - |-------|-------|-------| - | **Application Name** | Your Application Name | e.g., "My ESO Analysis Tool" - be descriptive | - | **Redirect URLs** | See below | Required for OAuth2 user authentication flow | - | **Public Client** | Leave unchecked | Only check if you cannot store client secret securely | - - **For Redirect URLs:** - - **Client Credentials Only**: Leave blank if you only need API access (no user data) - - **User Authentication**: Enter URLs for OAuth2 callbacks (comma-separated if multiple) - - Development: `http://localhost:8765/callback` (recommended port for this library) - - Production: `https://yourdomain.com/auth/callback` - - Multiple URLs supported, separated by commas - - !!! tip "Application Naming" - Be descriptive with your application name. As noted in the form: "If we can't understand what the application is, we're more likely to cancel the key." - - !!! info "Public Client vs Private Client" - - **Private Client (Recommended)**: Can securely store client secret. Use for server-side applications, CLI tools, and scripts. - - **Public Client**: Cannot store client secret securely. Uses PKCE (Proof Key for Code Exchange) flow. Mainly for mobile apps or browser-based applications. - - For ESO Logs Python library usage, keep "Public Client" **unchecked** unless you have specific security constraints. + | Field | Value | Notes | + |-------|-------|-------| + | **Application Name** | Your Application Name | e.g., "My ESO Analysis Tool" - be descriptive | + | **Redirect URLs** | See below | Required for OAuth2 user authentication flow | + | **Public Client** | Leave unchecked | Only check if you cannot store client secret securely | + + **For Redirect URLs:** + - **Client Credentials Only**: Leave blank if you only need API access (no user data) + - **User Authentication**: Enter URLs for OAuth2 callbacks (comma-separated if multiple) + - Development: `http://localhost:8765/callback` (recommended port for this library) + - Production: `https://yourdomain.com/auth/callback` + - Multiple URLs supported, separated by commas + + !!! tip "Application Naming" + Be descriptive with your application name. As noted in the form: "If we can't understand what the application is, we're more likely to cancel the key." + + !!! info "Public Client vs Private Client" + - **Private Client (Recommended)**: Can securely store client secret. Use for server-side applications, CLI tools, and scripts. + - **Public Client**: Cannot store client secret securely. Uses PKCE (Proof Key for Code Exchange) flow. Mainly for mobile apps or browser-based applications. + + For ESO Logs Python library usage, keep "Public Client" **unchecked** unless you have specific security constraints. 4. Click **"Create"** From 37360d50f1a7455274a999f30904dc885d70a1fb Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:49:03 -0700 Subject: [PATCH 5/9] Fix list formatting in authentication guide --- docs/getting-started/authentication.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/getting-started/authentication.md b/docs/getting-started/authentication.md index fe34280..720bc2b 100644 --- a/docs/getting-started/authentication.md +++ b/docs/getting-started/authentication.md @@ -25,6 +25,7 @@ Before you can authenticate, you need: | **Public Client** | Leave unchecked | Only check if you cannot store client secret securely | **For Redirect URLs:** + - **Client Credentials Only**: Leave blank if you only need API access (no user data) - **User Authentication**: Enter URLs for OAuth2 callbacks (comma-separated if multiple) - Development: `http://localhost:8765/callback` (recommended port for this library) From 1cb145ee5b420ec951d8639ea1f58a035daf8979 Mon Sep 17 00:00:00 2001 From: knowlen Date: Fri, 25 Jul 2025 20:56:12 -0700 Subject: [PATCH 6/9] Fix changelog - mark 0.2.0a3 as unreleased and correct dates --- docs/development/changelog.md | 63 ++++++++++++----------------------- 1 file changed, 21 insertions(+), 42 deletions(-) diff --git a/docs/development/changelog.md b/docs/development/changelog.md index 9561528..97c33dc 100644 --- a/docs/development/changelog.md +++ b/docs/development/changelog.md @@ -5,7 +5,7 @@ All notable changes to ESO Logs Python will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.2.0a4] - 2025-07-22 (Upcoming) +## [0.2.0a3] - Unreleased ### Added @@ -16,55 +16,48 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `get_user_data()` - Get userData root object - **OAuth2 Authentication Module** (`user_auth.py`): - Full Authorization Code flow implementation + - Both synchronous and asynchronous support (`OAuth2Flow` and `AsyncOAuth2Flow`) - Token management with expiration checking - Helper functions for auth URL generation and token exchange - Support for token persistence and refresh -- **Dual Authentication Support**: Client now supports both client credentials and user tokens -- Added 10 unit tests for OAuth2 functionality -- Added 8 integration tests for UserData methods -- Added comprehensive documentation examples for OAuth2 flow -- Total test count increased from 369 to 404 tests - -### Changed - -- Updated Client to detect and warn about endpoint/authentication mismatches -- Enhanced authentication documentation with OAuth2 examples - -## [0.2.0a3] - 2025-01-21 - -### Added - + - Security enhancements (CSRF protection, redirect URI validation) - **Progress Race Tracking**: Implemented `get_progress_race()` method for world/realm first achievement race tracking - Supports filtering by guild, zone, competition, difficulty, size, and server - Returns flexible JSON data that adapts to active race formats - - Added comprehensive documentation and examples -- **API Coverage**: Increased from 88% to 90% (38/42 methods implemented) -- Added 4 unit tests and 8 integration tests for progress race functionality -- Created new `ProgressRaceMixin` following established architecture patterns +- **Documentation Improvements**: + - Added comprehensive troubleshooting guide + - Added OAuth2 examples (sync, async, Flask, FastAPI) + - Reorganized docs structure (Getting Started and Development sections) +- **Testing**: Total test count increased from 322 to 404+ tests + - Added 10 unit tests for OAuth2 functionality + - Added 8 integration tests for UserData methods + - Added 8 integration tests for progress race functionality ### Changed -- **Major Refactoring**: Reduced `client.py` from 1,610 lines to 86 lines (95% reduction) -- Implemented factory pattern with mixins for better code organization -- Created modular architecture with clear separation of concerns: +- **Major Client Refactoring**: Reduced `client.py` from 1,610 lines to 86 lines (95% reduction) + - Implemented factory pattern with mixins for better code organization + - Created modular architecture with clear separation of concerns - Method factory functions for dynamic method generation - Parameter builders for complex parameter handling - Mixins organizing methods by functional area - Centralized GraphQL queries storage +- **Dual Authentication Support**: Client now supports both client credentials and user tokens +- Updated Client to detect and warn about endpoint/authentication mismatches +- Enhanced authentication documentation with OAuth2 examples - Moved all auto-generated code to `_generated/` subdirectory for cleaner structure - Improved error messages to show available parameters when missing - Added comprehensive documentation for method registration and naming conventions - Cached regex patterns for performance improvement -- Fixed type safety issues with proper Protocol usage -- Updated test suite from 278 to 322 tests (added 33 unit tests and 8 docs tests) ### Fixed - Type annotations now satisfy mypy without `# type: ignore` comments - Parameter validation errors now provide more helpful context - Fixed kwargs passthrough issue in report methods preventing HTTP client errors +- Fixed markdown formatting issues in authentication documentation -## [0.2.0a2] - 2025-07-16 +## [0.2.0a2] - 2024-07-16 ### Fixed @@ -72,23 +65,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated all imports to use `from esologs.auth import get_access_token` or `from esologs import get_access_token` - Authentication is now properly packaged and accessible when installing from PyPI -## [0.2.0a1] - 2025-07-15 - -### Added - -This is the first alpha release of version 0.2.0. See the [0.2.0] section below for full feature list. - -## [0.2.0] - 2024-01-XX (Upcoming Release) - -### Changed +## [0.2.0a1] - 2024-07-15 -#### Architecture Improvements -- **Client Refactoring**: Complete overhaul of client.py architecture - - Reduced from 1,600+ lines to 86 lines (95% reduction) - - Implemented factory pattern for method generation - - Organized methods into logical mixins by functional area - - Moved all generated code to `_generated/` subdirectory - - Maintained 100% backward compatibility +This is the first alpha release of version 0.2.0, featuring major architectural improvements and new API methods. ### Added From 6bc7305422088be97ef8b5f0ec9a5ef7598a515d Mon Sep 17 00:00:00 2001 From: knowlen Date: Sat, 2 Aug 2025 12:43:38 -0700 Subject: [PATCH 7/9] Address PR review comments - add OAuth2 error handling and fix Twitter handle --- docs/getting-started/authentication.md | 103 +++++++++++++++++++++++++ scripts/README.md | 2 +- scripts/quick_api_check.py | 2 +- 3 files changed, 105 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/authentication.md b/docs/getting-started/authentication.md index 720bc2b..d3f2fe8 100644 --- a/docs/getting-started/authentication.md +++ b/docs/getting-started/authentication.md @@ -255,6 +255,109 @@ asyncio.run(main()) Make sure to add `http://localhost:8765/callback` to your ESO Logs app's redirect URLs. The OAuth2Flow class extracts the port from your redirect URI automatically. +### OAuth2 Error Handling + +Handle common OAuth2 errors gracefully: + +```python +from esologs import OAuth2Flow, Client +from esologs.exceptions import GraphQLClientHttpError +import asyncio + +# Create OAuth2 flow handler +oauth_flow = OAuth2Flow( + client_id="your_client_id", + client_secret="your_client_secret", + redirect_uri="http://localhost:8765/callback" +) + +try: + # Attempt authorization + user_token = oauth_flow.authorize(scopes=["view-user-profile"]) + + # Test the token + async def verify_token(): + try: + async with Client( + url="https://www.esologs.com/api/v2/user", + user_token=user_token + ) as client: + user = await client.get_current_user() + print(f"✅ Successfully logged in as: {user.user_data.current_user.name}") + return True + except GraphQLClientHttpError as e: + if e.status_code == 401: + print("❌ Token is invalid or expired") + else: + print(f"❌ API error: {e}") + return False + + asyncio.run(verify_token()) + +except ValueError as e: + print(f"❌ Configuration error: {e}") + print("Check your redirect URI matches ESO Logs app settings") +except KeyboardInterrupt: + print("\n⚠️ Authorization cancelled by user") +except Exception as e: + print(f"❌ Unexpected error during OAuth2 flow: {e}") +``` + +### OAuth2 State Validation + +For enhanced security, validate the state parameter to prevent CSRF attacks: + +```python +from esologs.user_auth import generate_authorization_url, exchange_authorization_code +import secrets +import webbrowser + +# Generate secure state +state = secrets.token_urlsafe(32) + +# Store state in your session (web apps) or memory +stored_state = state + +# Generate authorization URL with state +auth_url = generate_authorization_url( + client_id="your_client_id", + redirect_uri="http://localhost:8000/callback", + scopes=["view-user-profile"], + state=state +) + +# In your callback handler: +def handle_callback(request): + # Get state from callback + returned_state = request.args.get('state') + code = request.args.get('code') + error = request.args.get('error') + + # Validate state + if not returned_state or returned_state != stored_state: + raise ValueError("Invalid state parameter - possible CSRF attack") + + # Check for errors + if error: + error_desc = request.args.get('error_description', 'Unknown error') + raise ValueError(f"Authorization failed: {error} - {error_desc}") + + # Exchange code for token + try: + user_token = exchange_authorization_code( + client_id="your_client_id", + client_secret="your_client_secret", + code=code, + redirect_uri="http://localhost:8000/callback" + ) + return user_token + except Exception as e: + raise ValueError(f"Token exchange failed: {e}") +``` + +!!! warning "State Parameter Security" + Always use and validate the state parameter in production applications to prevent CSRF attacks. The `OAuth2Flow` class handles this automatically, but manual implementations must include it. + ### Async OAuth2 Flow For async applications, use the `AsyncOAuth2Flow` class: diff --git a/scripts/README.md b/scripts/README.md index 3c38680..e1065cf 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -154,7 +154,7 @@ If you're experiencing API errors: ``` 2. If endpoints show as down (502 errors), the API may be experiencing issues -3. Check https://twitter.com/esologs or https://status.esologs.com/ for updates +3. Check https://twitter.com/LogsEso or https://status.esologs.com/ for updates --- diff --git a/scripts/quick_api_check.py b/scripts/quick_api_check.py index aaafbcc..6986ce3 100755 --- a/scripts/quick_api_check.py +++ b/scripts/quick_api_check.py @@ -38,4 +38,4 @@ print("=" * 50) print("\nIf you see 502 errors, the API is experiencing issues.") -print("Check https://status.esologs.com/ or https://twitter.com/esologs for updates.") +print("Check https://status.esologs.com/ or https://twitter.com/LogsEso for updates.") From 56259aa666a29998fffa9a1b43d5e400eb77693e Mon Sep 17 00:00:00 2001 From: knowlen Date: Sat, 2 Aug 2025 13:17:18 -0700 Subject: [PATCH 8/9] fix dates --- docs/development/changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/development/changelog.md b/docs/development/changelog.md index 97c33dc..3c59ad3 100644 --- a/docs/development/changelog.md +++ b/docs/development/changelog.md @@ -57,7 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed kwargs passthrough issue in report methods preventing HTTP client errors - Fixed markdown formatting issues in authentication documentation -## [0.2.0a2] - 2024-07-16 +## [0.2.0a2] - 2025-07-16 ### Fixed @@ -65,7 +65,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated all imports to use `from esologs.auth import get_access_token` or `from esologs import get_access_token` - Authentication is now properly packaged and accessible when installing from PyPI -## [0.2.0a1] - 2024-07-15 +## [0.2.0a1] - 2025-07-15 This is the first alpha release of version 0.2.0, featuring major architectural improvements and new API methods. From cef7f67c12adf7a17925a09db320b6f7b106a3c8 Mon Sep 17 00:00:00 2001 From: knowlen Date: Sat, 2 Aug 2025 13:19:27 -0700 Subject: [PATCH 9/9] Remove non-existent status.esologs.com references and fix future dates --- docs/development/changelog.md | 4 ++-- scripts/README.md | 2 +- scripts/quick_api_check.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/development/changelog.md b/docs/development/changelog.md index 3c59ad3..97c33dc 100644 --- a/docs/development/changelog.md +++ b/docs/development/changelog.md @@ -57,7 +57,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed kwargs passthrough issue in report methods preventing HTTP client errors - Fixed markdown formatting issues in authentication documentation -## [0.2.0a2] - 2025-07-16 +## [0.2.0a2] - 2024-07-16 ### Fixed @@ -65,7 +65,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated all imports to use `from esologs.auth import get_access_token` or `from esologs import get_access_token` - Authentication is now properly packaged and accessible when installing from PyPI -## [0.2.0a1] - 2025-07-15 +## [0.2.0a1] - 2024-07-15 This is the first alpha release of version 0.2.0, featuring major architectural improvements and new API methods. diff --git a/scripts/README.md b/scripts/README.md index e1065cf..225ee6e 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -154,7 +154,7 @@ If you're experiencing API errors: ``` 2. If endpoints show as down (502 errors), the API may be experiencing issues -3. Check https://twitter.com/LogsEso or https://status.esologs.com/ for updates +3. Check https://twitter.com/LogsEso for updates --- diff --git a/scripts/quick_api_check.py b/scripts/quick_api_check.py index 6986ce3..86cb5b8 100755 --- a/scripts/quick_api_check.py +++ b/scripts/quick_api_check.py @@ -38,4 +38,4 @@ print("=" * 50) print("\nIf you see 502 errors, the API is experiencing issues.") -print("Check https://status.esologs.com/ or https://twitter.com/LogsEso for updates.") +print("Check https://twitter.com/LogsEso for updates.")