diff --git a/docs/source/telegram.contrib.botan.rst b/docs/source/telegram.contrib.botan.rst new file mode 100644 index 000000000..626317f4e --- /dev/null +++ b/docs/source/telegram.contrib.botan.rst @@ -0,0 +1,7 @@ +telegram.contrib.botan module +============================= + +.. automodule:: telegram.contrib.botan + :members: + :undoc-members: + :show-inheritance: diff --git a/telegram/contrib/__init__.py b/telegram/contrib/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/telegram/contrib/botan.py b/telegram/contrib/botan.py new file mode 100644 index 000000000..8064a8ad8 --- /dev/null +++ b/telegram/contrib/botan.py @@ -0,0 +1,46 @@ +import logging +from telegram import NullHandler + +from future.moves.urllib.parse import quote +from future.moves.urllib.error import HTTPError, URLError +from future.moves.urllib.request import urlopen, Request + +logging.getLogger(__name__).addHandler(NullHandler()) + + +class Botan(object): + """This class helps to send incoming events to your botan analytics account. + See more: https://github.com/botanio/sdk#botan-sdk + """ + + token = '' + url_template = 'https://api.botan.io/track?token={token}' \ + '&uid={uid}&name={name}&src=python-telegram-bot' + + def __init__(self, token): + self.token = token + self.logger = logging.getLogger(__name__) + + def track(self, message, event_name='event'): + try: + uid = message.chat_id + except AttributeError: + self.logger.warn('No chat_id in message') + return False + data = message.to_json() + try: + url = self.url_template.format(token=str(self.token), + uid=str(uid), + name=quote(event_name)) + request = Request(url, + data=data.encode(), + headers={'Content-Type': 'application/json'}) + urlopen(request) + return True + except HTTPError as error: + self.logger.warn('Botan track error ' + str(error.code) + ':' + error.read().decode( + 'utf-8')) + return False + except URLError as error: + self.logger.warn('Botan track error ' + str(error.reason)) + return False diff --git a/telegram/utils/botan.py b/telegram/utils/botan.py index 0998fbdea..a9f5bb612 100644 --- a/telegram/utils/botan.py +++ b/telegram/utils/botan.py @@ -1,52 +1,4 @@ -#!/usr/bin/env python +from .deprecate import deprecate +from telegram.contrib.botan import Botan as Bo -import logging -from telegram import NullHandler - -try: - from urllib.request import urlopen, Request - from urllib.parse import quote - from urllib.error import URLError, HTTPError -except ImportError: - from urllib2 import urlopen, Request - from urllib import quote - from urllib2 import URLError, HTTPError - -logging.getLogger(__name__).addHandler(NullHandler()) - - -class Botan(object): - """This class helps to send incoming events in your botan analytics account. - See more: https://github.com/botanio/sdk#botan-sdk""" - - token = '' - url_template = 'https://api.botan.io/track?token={token}' \ - '&uid={uid}&name={name}&src=python-telegram-bot' - - def __init__(self, token): - self.token = token - self.logger = logging.getLogger(__name__) - - def track(self, message, event_name='event'): - try: - uid = message.chat_id - except AttributeError: - self.logger.warn('No chat_id in message') - return False - data = message.to_json() - try: - url = self.url_template.format(token=str(self.token), - uid=str(uid), - name=quote(event_name)) - request = Request(url, - data=data.encode(), - headers={'Content-Type': 'application/json'}) - urlopen(request) - return True - except HTTPError as error: - self.logger.warn('Botan track error ' + str(error.code) + ':' + error.read().decode( - 'utf-8')) - return False - except URLError as error: - self.logger.warn('Botan track error ' + str(error.reason)) - return False +Botan = deprecate(Bo, 'telegram.utils.botan', 'telegram.contrib.botan') diff --git a/tests/test_botan.py b/tests/test_botan.py index fc5b1ad8e..a45c28fd0 100644 --- a/tests/test_botan.py +++ b/tests/test_botan.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -"""This module contains a object that represents Tests for Botan analytics integration""" +"""This module contains an object that represents Tests for Botan analytics integration""" import sys import unittest @@ -9,7 +9,7 @@ from flaky import flaky sys.path.append('.') -from telegram.utils.botan import Botan +from telegram.contrib.botan import Botan from tests.base import BaseTest