from flask import Flask, request, jsonify import requests app = Flask(__name__) class APIService: """Basisklasse für alle API-Dienste.""" def __init__(self, api_key): self.api_key = api_key def fetch(self, *args, **kwargs): raise NotImplementedError("Diese Methode muss von Unterklassen implementiert werden.") class SynonymAPI(APIService): """API-Dienst für Synonyme.""" def fetch(self, word): url = f"https://lingua-robot.p.rapidapi.com/language/v1/synonyms?word={word}" headers = { 'x-rapidapi-key': self.api_key, 'x-rapidapi-host': "lingua-robot.p.rapidapi.com" } response = requests.get(url, headers=headers) return response.json()['entries'][0]['synonyms'] if response.status_code == 200 else [] class GrammarAPI(APIService): """API-Dienst für Grammatik.""" def fetch(self, text): response = requests.post(self.api_key, data={'text': text, 'language': 'en'}) return response.json()['matches'] if response.status_code == 200 else [] class APIManager: """Verwalten der APIs (Synonym und Grammatik).""" def __init__(self): self.synonym_api = None self.grammar_api = None def set_synonym_api(self, api): self.synonym_api = api def set_grammar_api(self, api): self.grammar_api = api def fetch_synonyms(self, word): return self.synonym_api.fetch(word) if self.synonym_api else "Keine Synonym-API konfiguriert." def fetch_grammar(self, text): return self.grammar_api.fetch(text) if self.grammar_api else "Keine Grammatik-API konfiguriert." # Instanziierung api_manager = APIManager() # API-Routen @app.route('/configure', methods=['POST']) def configure_apis(): data = request.json synonym_api_key = data.get('synonym_api_key') grammar_api_key = data.get('grammar_api_key') api_manager.set_synonym_api(SynonymAPI(synonym_api_key)) api_manager.set_grammar_api(GrammarAPI(grammar_api_key)) return jsonify({"status": "APIs erfolgreich konfiguriert."}) @app.route('/analyze-text', methods=['POST']) def analyze_text(): data = request.json text = data.get('text') word = text.split()[0] synonyms = api_manager.fetch_synonyms(word) grammar = api_manager.fetch_grammar(text) return jsonify({"synonyms": synonyms, "grammar_suggestions": grammar}) # Start des Servers if __name__ == '__main__': app.run(debug=True)