From fabcba8c54fdc0f32ea6bd66e169ff9b1a622bf4 Mon Sep 17 00:00:00 2001 From: Matheus Lima Date: Mon, 4 Mar 2019 20:16:28 -0300 Subject: [PATCH] Created endpoint to communicate with the wolfram alpha spoken api --- api/public/public_api/api.py | 6 +++++ .../public_api/endpoints/wolfram_alpha.py | 3 ++- .../endpoints/wolfram_alpha_spoken.py | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 api/public/public_api/endpoints/wolfram_alpha_spoken.py diff --git a/api/public/public_api/api.py b/api/public/public_api/api.py index 78232d66..3e845d2b 100644 --- a/api/public/public_api/api.py +++ b/api/public/public_api/api.py @@ -20,6 +20,7 @@ from .endpoints.device_subscription import DeviceSubscriptionEndpoint from .endpoints.google_stt import GoogleSTTEndpoint from .endpoints.open_weather_map import OpenWeatherMapEndpoint from .endpoints.wolfram_alpha import WolframAlphaEndpoint +from .endpoints.wolfram_alpha_spoken import WolframAlphaSpokenEndpoint public = Flask(__name__) public.config.from_object(get_base_config()) @@ -114,3 +115,8 @@ public.add_url_rule( view_func=DeviceRefreshTokenEndpoint.as_view('refresh_token_api'), methods=['GET'] ) +public.add_url_rule( + '/wolframAlphaSpoken', + view_func=WolframAlphaSpokenEndpoint.as_view('wolfram_alpha_spoken_api'), + methods=['GET'] +) diff --git a/api/public/public_api/endpoints/wolfram_alpha.py b/api/public/public_api/endpoints/wolfram_alpha.py index 0c1ead10..463af160 100644 --- a/api/public/public_api/endpoints/wolfram_alpha.py +++ b/api/public/public_api/endpoints/wolfram_alpha.py @@ -3,6 +3,7 @@ from http import HTTPStatus import requests from flask import Response + from selene.api import SeleneEndpoint @@ -17,6 +18,6 @@ class WolframAlphaEndpoint(SeleneEndpoint): input = self.request.args.get('input') if input: params = dict(appid=self.wolfram_alpha_key, input=input) - response = requests.get(self.wolfram_alpha_url, params=params) + response = requests.get(self.wolfram_alpha_url + '/v2/query', params=params) if response.status_code == HTTPStatus.OK: return Response(response.content, mimetype='text/xml') diff --git a/api/public/public_api/endpoints/wolfram_alpha_spoken.py b/api/public/public_api/endpoints/wolfram_alpha_spoken.py new file mode 100644 index 00000000..509a0484 --- /dev/null +++ b/api/public/public_api/endpoints/wolfram_alpha_spoken.py @@ -0,0 +1,22 @@ +import os +from http import HTTPStatus + +import requests + +from selene.api import SeleneEndpoint + + +class WolframAlphaSpokenEndpoint(SeleneEndpoint): + """Endpoint to communicate with the Wolfram Alpha Spoken API""" + + def __init__(self): + super(WolframAlphaSpokenEndpoint, self).__init__() + self.wolfram_alpha_key = os.environ['WOLFRAM_ALPHA_KEY'] + self.wolfram_alpha_url = os.environ['WOLFRAM_ALPHA_URL'] + + def get(self): + params = dict(self.request.args) + params['appid'] = self.wolfram_alpha_key + response = requests.get(self.wolfram_alpha_url + '/v1/spoken', params=params) + response = (response.text, HTTPStatus.OK) if response.status_code == HTTPStatus.OK else ('', response.status_code) + return response