class dispatcher(object): def __init__(self, config, warnings, messengers = None): self.config = config self.warnings = warnings self.messengers = messengers self.sms = NajdiSiSms("username", "password") def start(self): self.run = True self.dispatcher_worker = gevent.spawn(self.dispatcher) def stop(self): self.run = False self.dispatcher_worker.join() def dispatcher(self): while self.run: warnings = [] warning = True while warning: try: warning = self.warnings.get(timeout = 1) except Empty: break warnings.append(warning) if not warnings: continue print "processing new warnings" clients = self.config.getClients() for devices in warnings: time = devices[0] for device in devices[1]: client = filter(lambda c: c[1]["mac"] == device.mac, clients) if not client: client = [("unknown", {"mac": device.mac})] client= client[0] for number in self.config.getNumbers(): try: self.sms.send(number, "Device %s with mac %s got missing at %s" %(client[0], client[1]["mac"], time.strftime("%H:%M:%S"))) except SmsException: pass
class unit_tests(TestCase): def setUp(self): self.s = NajdiSiSms(username="******", password="******", retries=1) def test_parse_balance(self): res = self.s._parse_balance( "<strong id=\"sms_left\" name=\"sms_left\">0 / 40</strong>") self.assertEqual(res, 40) with self.assertRaises(ResponseException): res = self.s._parse_balance( "<strong id=\"sms_left\" name=\"sms_left\"></strong>") def test_send_sms(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._send_sms = manager._send_sms self.s._balance = 10 self.s.send('041928491', 'test') expected_calls = [ call._login(), call._send_sms('1361468289330', '41', '928491', 'test') ] self.assertEqual(expected_calls, manager.mock_calls) self.s.send('041928491', 'test') expected_calls = [ call._login(), call._send_sms('1361468289330', '41', '928491', 'test'), call._send_sms('1361468289330', '41', '928491', 'test') ] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_login_error_ok(self): def _login_first(): def _login_second(): self.s._session = '1361468289330' self.s._login.side_effect = _login_second raise AuthException manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login_first self.s._send_sms = manager._send_sms self.s._balance = 10 self.s.send('041928491', 'test') expected_calls = [ call._login(), call._login(), call._send_sms('1361468289330', '41', '928491', 'test') ] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_login_error_error(self): manager = Mock() self.s._login = manager._login self.s._login.side_effect = AuthException self.s._send_sms = manager._send_sms self.s._balance = 10 with self.assertRaises(AuthException): self.s.send('041928491', 'test') expected_calls = [call._login(), call._login()] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_send_error_error(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._send_sms = manager._send_sms self.s._send_sms.side_effect = SendException self.s._balance = 10 with self.assertRaises(SendException): self.s.send('041928491', 'test') expected_calls = [ call._login(), call._send_sms('1361468289330', '41', '928491', 'test'), call._login(), call._send_sms('1361468289330', '41', '928491', 'test') ] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_balance_error_error(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._balance = 0 with self.assertRaises(SendException): self.s.send('041928491', 'test') expected_calls = [call._login(), call._login()] self.assertEqual(expected_calls, manager.mock_calls)
class unit_tests(TestCase): def setUp(self): self.s = NajdiSiSms(username= "******", password= "******", retries = 1) def test_parse_balance(self): res = self.s._parse_balance("<strong id=\"sms_left\" name=\"sms_left\">0 / 40</strong>") self.assertEqual(res, 40) with self.assertRaises(ResponseException): res = self.s._parse_balance("<strong id=\"sms_left\" name=\"sms_left\"></strong>") def test_send_sms(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._send_sms = manager._send_sms self.s._balance = 10 self.s.send('041928491', 'test') expected_calls = [call._login(), call._send_sms('1361468289330', '41','928491', 'test')] self.assertEqual(expected_calls, manager.mock_calls) self.s.send('041928491', 'test') expected_calls = [call._login(), call._send_sms('1361468289330', '41','928491', 'test'), call._send_sms('1361468289330', '41','928491', 'test')] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_login_error_ok(self): def _login_first(): def _login_second(): self.s._session = '1361468289330' self.s._login.side_effect = _login_second raise AuthException manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login_first self.s._send_sms = manager._send_sms self.s._balance = 10 self.s.send('041928491', 'test') expected_calls = [call._login(), call._login(), call._send_sms('1361468289330', '41','928491', 'test')] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_login_error_error(self): manager = Mock() self.s._login = manager._login self.s._login.side_effect = AuthException self.s._send_sms = manager._send_sms self.s._balance = 10 with self.assertRaises(AuthException): self.s.send('041928491', 'test') expected_calls = [call._login(), call._login()] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_send_error_error(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._send_sms = manager._send_sms self.s._send_sms.side_effect = SendException self.s._balance = 10 with self.assertRaises(SendException): self.s.send('041928491', 'test') expected_calls = [call._login(), call._send_sms('1361468289330', '41','928491', 'test'), call._login(), call._send_sms('1361468289330', '41','928491', 'test')] self.assertEqual(expected_calls, manager.mock_calls) def test_send_sms_balance_error_error(self): def _login(): self.s._session = '1361468289330' manager = Mock() self.s._login = manager._login self.s._login.side_effect = _login self.s._balance = 0 with self.assertRaises(SendException): self.s.send('041928491', 'test') expected_calls = [call._login(), call._login()] self.assertEqual(expected_calls, manager.mock_calls)
# -*- coding: utf-8 -*- import logging, sys from pysms.providers import NajdiSiSms loglevel = 'DEBUG' datefmt = '%b %d %H:%M:%S' logformat = '%(asctime)s %(levelname)s pysms: %(message)s' logging.basicConfig(level=loglevel, stream=sys.stdout, format=logformat, datefmt=datefmt) provider = NajdiSiSms("username","password") print provider.send("51385279", u"čžš") print provider.send("51385279", u"čžš")
# -*- coding: utf-8 -*- import logging, sys from pysms.providers import NajdiSiSms loglevel = 'DEBUG' datefmt = '%b %d %H:%M:%S' logformat = '%(asctime)s %(levelname)s pysms: %(message)s' logging.basicConfig(level=loglevel, stream=sys.stdout, format=logformat, datefmt=datefmt) provider = NajdiSiSms("username","password") if len(sys.argv) == 2: print provider.send("41777777", sys.argv[1].decode("utf-8")) else: print provider.send("41777777", u"test_sms") provider.destruct() # JSESSIONID
# -*- coding: utf-8 -*- import logging, sys from pysms.providers import NajdiSiSms loglevel = 'DEBUG' datefmt = '%b %d %H:%M:%S' logformat = '%(asctime)s %(levelname)s pysms: %(message)s' logging.basicConfig(level=loglevel, stream=sys.stdout, format=logformat, datefmt=datefmt) provider = NajdiSiSms("username", "password") print provider.send("51385279", u"čžš") print provider.send("51385279", u"čžš")