Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/source/telegram.contrib.botan.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
telegram.contrib.botan module
=============================

.. automodule:: telegram.contrib.botan
:members:
:undoc-members:
:show-inheritance:
Empty file added telegram/contrib/__init__.py
Empty file.
46 changes: 46 additions & 0 deletions telegram/contrib/botan.py
Original file line number Diff line number Diff line change
@@ -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
54 changes: 3 additions & 51 deletions telegram/utils/botan.py
Original file line number Diff line number Diff line change
@@ -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')
4 changes: 2 additions & 2 deletions tests/test_botan.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -9,7 +9,7 @@

sys.path.append('.')

from telegram.utils.botan import Botan
from telegram.contrib.botan import Botan
from tests.base import BaseTest


Expand Down