Exemplo n.º 1
0
class WeatherAPI(object):
    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    def ask_question(self, url, question, botid):
        payload = {'apikey': botid, 'q': question}
        locresponse = self._requests_api.get(
            url + '/locations/v1/cities/autocomplete', params=payload)

        if locresponse is None:
            raise Exception("No Such Location from weather service")
        receive_payload = json.loads(locresponse.text, encoding="utf-8")
        weresponse = self._requests_api.get(
            url + '/currentconditions/v1/' + receive_payload[0]['Key'],
            payload)
        weatherinfo = json.loads(weresponse.text, encoding="utf-8")
        return "Current Weather Conditions in " + receive_payload[0][
            'LocalizedName'] + ", " + receive_payload[0]['Country'][
                'ID'] + " is " + weatherinfo[0][
                    'WeatherText'] + " and temperature is " + str(
                        weatherinfo[0]['Temperature']['Imperial']['Value']
                    ) + weatherinfo[0]['Temperature']['Imperial']['Unit']
Exemplo n.º 2
0
class PannousAPI(object):

    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    def ask_question(self, url, question, login):
        payload = {'input': question, 'login': login}

        response = self._requests_api.get(url, params=payload)
        if response is None:
            raise Exception("No response from pannous service")

        json_data = response.json()

        if 'output' not in json_data:
            raise Exception("'output' section missing from pannous json_data")

        if json_data["output"] is None or not json_data["output"]:
            raise Exception("'output' section has no elements in pannous json_data")

        if 'actions' not in json_data["output"][0]:
            raise Exception("'actions' section in output[0] in pannous json_data")

        if 'say' not in json_data["output"][0]['actions']:
            raise Exception("'say' section missing from output[0]['actions'] in pannous json_data")

        if 'text' not in json_data["output"][0]['actions']['say']:
            raise Exception("'text' section missing from output[0]['actions']['say'] in pannous json_data")

        return json_data["output"][0]['actions']['say']['text']
Exemplo n.º 3
0
class PannousAPI(object):

    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    def ask_question(self, url, question, login):
        payload = {'input': question, 'login': login}

        response = self._requests_api.get(url, params=payload)
        if response is None:
            raise Exception("No response from pannous service")

        json_data = response.json()

        if 'output' not in json_data:
            raise Exception("'output' section missing from pannous json_data")

        if json_data["output"] is None or not json_data["output"]:
            raise Exception("'output' section has no elements in pannous json_data")

        if 'actions' not in json_data["output"][0]:
            raise Exception("'actions' section in output[0] in pannous json_data")

        if 'say' not in json_data["output"][0]['actions']:
            raise Exception("'say' section missing from output[0]['actions'] in pannous json_data")

        if 'text' not in json_data["output"][0]['actions']['say']:
            raise Exception("'text' section missing from output[0]['actions']['say'] in pannous json_data")

        return json_data["output"][0]['actions']['say']['text']
Exemplo n.º 4
0
class DuckDuckGoAPI(object):
    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    # Provide a summary of a single article
    def ask_question(self, url, question, num_responses=1):
        # http://api.duckduckgo.com/?q=DuckDuckGo&format=json

        payload = {'q': question, 'format': 'json'}
        response = self._requests_api.get(url, params=payload)

        if response is None:
            raise Exception("No response from DuckDuckGo service")

        if response.status_code != 200:
            raise Exception("Error response from DuckDuckGo service [%d]" %
                            response.status_code)

        json_data = json.loads(response.text)
        if 'RelatedTopics' not in json_data:
            raise Exception(
                "Invalid response from DuckDuckGo service, 'RelatedTopcis' missing from payload"
            )
        topics = json_data['RelatedTopics']

        if len(topics) == 0:
            raise Exception(
                "Invalid response from DuckDuckGo service, no topics in payload"
            )

        if len(topics) < num_responses:
            num_responses = len(topics)

        responses = []
        for i in range(num_responses):
            if 'Text' in topics[i]:
                sentences = topics[i]['Text'].split(".")
                responses.append(sentences[0])

        return ". ".join(responses)
Exemplo n.º 5
0
class DuckDuckGoAPI(object):

    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    # Provide a summary of a single article
    def ask_question(self, url, question, num_responses=1):
        # http://api.duckduckgo.com/?q=DuckDuckGo&format=json

        payload = {'q': question, 'format': 'json'}
        response = self._requests_api.get(url, params=payload)

        if response is None:
            raise Exception("No response from DuckDuckGo service")

        if response.status_code != 200:
            raise Exception("Error response from DuckDuckGo service [%d]"%response.status_code)

        json_data = json.loads(response.text)
        if 'RelatedTopics' not in json_data:
            raise Exception("Invalid response from DuckDuckGo service, 'RelatedTopcis' missing from payload")
        topics = json_data['RelatedTopics']

        if len(topics) == 0:
            raise Exception("Invalid response from DuckDuckGo service, no topics in payload")

        if len(topics) < num_responses:
            num_responses = len(topics)

        responses = []
        for i in range(num_responses):
            if 'Text' in topics[i]:
                sentences = topics[i]['Text'].split(".")
                responses.append(sentences[0])

        return ". ".join(responses)
Exemplo n.º 6
0
class PandoraAPI(object):

    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    def ask_question(self, url, question, botid):
        payload = {'botid': botid, 'input': question}
        response = self._requests_api.get(url, params=payload)

        if response is None:
            raise Exception("No response from pandora service")

        tree = ElementTree.fromstring(response.content)

        that = tree.find("that")
        if that is None:
            raise Exception("Invalid response from pandora service, no <that> element in xml")

        return that.text
Exemplo n.º 7
0
class PandoraAPI(object):
    def __init__(self, request_api=None):
        if request_api is None:
            self._requests_api = RequestsAPI()
        else:
            self._requests_api = request_api

    def ask_question(self, url, question, botid):
        payload = {'botid': botid, 'input': question}
        response = self._requests_api.get(url, params=payload)

        if response is None:
            raise Exception("No response from pandora service")

        tree = ElementTree.fromstring(response.content)

        that = tree.find("that")
        if that is None:
            raise Exception(
                "Invalid response from pandora service, no <that> element in xml"
            )

        return that.text
Exemplo n.º 8
0
 def test_requestsapi(self):
     api = RequestsAPI()
     with self.assertRaises(Exception):
         api.get("http://invalid.url.com", None)
Exemplo n.º 9
0
 def test_requestsapi(self):
     api = RequestsAPI()
     with self.assertRaises(Exception):
         api.get("http://invalid.url.com", None)