Issues 356 - Adding get_data for Api response so it can overrided

pull/420/head
Jonathan D'Orleans 2016-09-27 22:20:59 -04:00
parent 352cf3b14e
commit f43d38dae7
2 changed files with 18 additions and 12 deletions

View File

@ -20,23 +20,23 @@ class Api(object):
method = params.get("method", "GET") method = params.get("method", "GET")
headers = self.build_headers(params) headers = self.build_headers(params)
json = self.build_json(params) json = self.build_json(params)
query = params.get("query") query = self.build_query(params)
url = self.build_url(params) url = self.build_url(params)
response = requests.request(method, url, headers=headers, params=query, response = requests.request(method, url, headers=headers, params=query,
data=params.get("data"), json=json) data=params.get("data"), json=json)
return self.get_response(response) return self.get_response(response)
@staticmethod def get_response(self, response):
def get_response(response): data = self.get_data(response)
try:
data = response.json()
except:
data = response.text
if 200 <= response.status_code < 300: if 200 <= response.status_code < 300:
return data return data
else: raise HTTPError(data, response=response)
raise HTTPError(data, response=response)
def get_data(self, response):
try:
return response.json()
except:
return response.text
def build_headers(self, params): def build_headers(self, params):
headers = params.get("headers", {}) headers = params.get("headers", {})
@ -62,6 +62,9 @@ class Api(object):
params["json"] = json params["json"] = json
return json return json
def build_query(self, params):
return params.get("query")
def build_url(self, params): def build_url(self, params):
path = params.get("path", "") path = params.get("path", "")
version = params.get("version", self.version) version = params.get("version", self.version)

View File

@ -75,9 +75,12 @@ class WAApi(Api):
def __init__(self): def __init__(self):
super(WAApi, self).__init__("wa") super(WAApi, self).__init__("wa")
def get_data(self, response):
return response.text
def query(self, input): def query(self, input):
response = self.request({"query": {"input": input}}) data = self.request({"query": {"input": input}})
return wolframalpha.Result(StringIO(response.content)) return wolframalpha.Result(StringIO(data))
class WolframAlphaSkill(MycroftSkill): class WolframAlphaSkill(MycroftSkill):