function get_analysis_session
Flask API endpoint that retrieves details of a specific data analysis session for an authenticated user, ensuring the user has access to the requested session.
/tf/active/vicechatdev/vice_ai/new_app.py
6051 - 6065
simple
Purpose
This endpoint serves as a secure API route to fetch analysis session information. It validates that the data analysis service is available, authenticates the user, verifies session ownership, and returns the session details in JSON format. It's used in web applications where users need to retrieve their previously created analysis sessions.
Source Code
def get_analysis_session(session_id):
"""Get analysis session details"""
if not DATA_ANALYSIS_AVAILABLE:
return jsonify({'error': 'Data analysis service not available'}), 503
user_email = get_current_user()
session = data_analysis_service.get_analysis_session(session_id)
if not session or session.user_id != user_email:
return jsonify({'error': 'Session not found or access denied'}), 404
return jsonify({
'success': True,
'session': session.to_dict()
})
Parameters
| Name | Type | Default | Kind |
|---|---|---|---|
session_id |
- | - | positional_or_keyword |
Parameter Details
session_id: String identifier for the analysis session to retrieve. This is passed as a URL path parameter and uniquely identifies a specific analysis session in the system.
Return Value
Returns a Flask JSON response. On success (200): {'success': True, 'session': <session_dict>} where session_dict contains the serialized session data. On service unavailable (503): {'error': 'Data analysis service not available'}. On not found or unauthorized (404): {'error': 'Session not found or access denied'}.
Dependencies
flaskdata_analysis_service
Required Imports
from flask import jsonify
from data_analysis_service import DataAnalysisService
Usage Example
# Flask application setup
from flask import Flask, jsonify
from data_analysis_service import DataAnalysisService
from auth.azure_auth import AzureSSO
from functools import wraps
app = Flask(__name__)
data_analysis_service = DataAnalysisService()
DATA_ANALYSIS_AVAILABLE = True
azure_sso = AzureSSO()
def require_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
# Authentication logic here
return f(*args, **kwargs)
return decorated
def get_current_user():
return 'user@example.com'
@app.route('/api/analysis-sessions/<session_id>', methods=['GET'])
@require_auth
def get_analysis_session(session_id):
if not DATA_ANALYSIS_AVAILABLE:
return jsonify({'error': 'Data analysis service not available'}), 503
user_email = get_current_user()
session = data_analysis_service.get_analysis_session(session_id)
if not session or session.user_id != user_email:
return jsonify({'error': 'Session not found or access denied'}), 404
return jsonify({
'success': True,
'session': session.to_dict()
})
# Client usage:
# GET /api/analysis-sessions/abc123
# Response: {"success": true, "session": {...}}
Best Practices
- Always check DATA_ANALYSIS_AVAILABLE before attempting to use the data analysis service
- Verify both session existence and user ownership before returning session data to prevent unauthorized access
- Use appropriate HTTP status codes: 503 for service unavailable, 404 for not found/unauthorized, 200 for success
- The require_auth decorator must be applied to ensure only authenticated users can access this endpoint
- The session object must implement a to_dict() method for JSON serialization
- Consider implementing rate limiting for this endpoint to prevent abuse
- Log access attempts for security auditing purposes
- Ensure session_id is validated/sanitized if used in database queries to prevent injection attacks
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function get_session_status 85.0% similar
-
function create_data_section_analysis_session 83.9% similar
-
function export_analysis_content 81.7% similar
-
function get_analysis_files 80.1% similar
-
function get_results_v1 78.7% similar