Ejemplo n.º 1
0
    def setUp(self):
        # Init: client gateway
        # This "client" sends messages through a remote server
        self.gw_client = Gateway()
        self.gw_client.add_provider(
            'fwd',
            ForwardClientProvider,
            server_url='http://*****:*****@localhost:5001/sms/fwd')

        # Init: server gateway
        # This "server" receives messages from an external SMS server and forwards them to the client
        self.gw_server = Gateway()
        self.gw_server.add_provider('lo', LoopbackProvider)
        self.gw_server.add_provider(
            'fwd',
            ForwardServerProvider,
            clients=['http://*****:*****@localhost:5000/sms/fwd'])
        self.lo = self.gw_server.get_provider(
            'lo'
        )  # This is run in another thread, but we should have access to it
        ' :type: LoopbackProvider '

        # Run client in a thread
        self.t_client = threading.Thread(target=self._runFlask,
                                         args=(self.gw_client, 5000))
        self.t_client.start()

        # Run server in a thread
        self.t_server = threading.Thread(target=self._runFlask,
                                         args=(self.gw_server, 5001))
        self.t_server.start()

        # Give Flask some time to initialize
        time.sleep(0.5)
Ejemplo n.º 2
0
    def setUp(self):
        self.lock = threading.Lock()

        # Init: client gateway
        self.gw_client = Gateway()
        self.gw_client.add_provider('fwd', ForwardClientProvider, server_url='http://*****:*****@localhost:5001/sms/fwd')

        # Init: server gateway
        self.gw_server = Gateway()
        self.gw_server.add_provider('lo', LoopbackProvider)
        self.gw_server.add_provider('fwd', ForwardServerProvider, clients=['http://*****:*****@localhost:5000/sms/fwd'])
        self.lo = self.gw_server.get_provider('lo')
        ' :type: LoopbackProvider '

        # Run client in a thread
        self.t_client = threading.Thread(target=self._runFlask, args=(self.gw_client, 5000))
        self.t_client.daemon = True
        self.t_client.start()

        # Run server in a thread
        self.t_server = threading.Thread(target=self._runFlask, args=(self.gw_server, 5001))
        self.t_server.daemon = True
        self.t_server.start()

        # Give Flask some time to initialize
        time.sleep(0.5)
 def setUp(self):
     """Initialize AfricasTalkingProvider"""
     self.gw = gw = Gateway()
     gw.add_provider('africas_talking',
                     AfricasTalkingProvider,
                     username='******',
                     api_key='api_key')
    def setUp(self):
        # Gateway
        gw = self.gw = Gateway()
        gw.add_provider('null', NullProvider)  # provocation
        gw.add_provider('main',
                        YunpianProvider,
                        apikey='my_api_key1234',
                        signature='Google')

        # Flask
        app = self.app = Flask(__name__)

        # Register receivers
        gw.receiver_blueprints_register(app, prefix='/a/b/')
Ejemplo n.º 5
0
    def setUp(self):
        # Gateway
        gw = self.gw = Gateway()
        gw.add_provider('main',
                        TwilioStudioProvider,
                        account_sid='sid',
                        secret='secret',
                        username='******')

        # Flask
        app = self.app = Flask(__name__)

        # Register receivers
        gw.receiver_blueprints_register(app, prefix='/msg/')
Ejemplo n.º 6
0
    def setUp(self):
        # Gateway
        gw = self.gw = Gateway()
        gw.add_provider('null', NullProvider)  # provocation
        gw.add_provider('main',
                        PswinProvider,
                        user='******',
                        password='******')

        self.requests = []

        # Flask
        app = self.app = Flask(__name__)

        # Register receivers
        gw.receiver_blueprints_register(app, prefix='/a/b/')
    def setUp(self):
        # Gateway
        gw = self.gw = Gateway()
        gw.add_provider('null', NullProvider)  # provocation
        gw.add_provider(
            'main',
            Target365Provider,
            base_url='https://target365.api/',
            key_name='my_api_key',
            # Private key len is defined in the API SDK
            private_key=base64.binascii.hexlify(
                base64.b64encode(('a' * 23).encode('ascii'))))

        # Flask
        app = self.app = Flask(__name__)

        # Register receivers
        gw.receiver_blueprints_register(app, prefix='/a/b/')
Ejemplo n.º 8
0
    def setUp(self):
        # Gateway
        gw = self.gw = Gateway()
        gw.add_provider('main',
                        AmazonSNSProvider,
                        access_key='A',
                        secret_access_key='B',
                        region_name='eu-west-1')

        # Flask
        app = self.app = Flask(__name__)

        # Register receivers
        gw.receiver_blueprints_register(app, prefix='/in-sms/')

        # botocore logging is too verbose; raise the level
        logging.getLogger('boto3').setLevel(logging.WARNING)
        logging.getLogger('botocore').setLevel(logging.WARNING)
    def setUp(self):
        self.gw = Gateway()

        # Providers
        self.gw.add_provider('one', NullProvider)
        self.gw.add_provider('two', NullProvider)
        self.gw.add_provider('three', NullProvider)

        # Router
        def router(message, module, method):
            if module == 'main':
                return None  # use 'one' for module 'main'
            elif method == 'alarm':
                return 'two'  # use 'three' for all alerting methods
            else:
                return 'three'  # use 'two' for everything else

        self.gw.router = router
Ejemplo n.º 10
0
    def setUp(self):
        gw = self.gw = Gateway()

        # Providers
        self.gw.add_provider('main', LoopbackProvider)
        provider = self.provider = gw.get_provider('main')
        ' :type: LoopbackProvider '

        # Add subscribers
        self.subscriber_log = []

        def subscriber(name, replies=False):
            def callback(message):
                self.subscriber_log.append('{name}:{src}:{body}'.format(
                    name=name, src=message.src, body=message.body))
                if replies:
                    message.reply('hello')

            return callback

        provider.subscribe('+1', subscriber('1'))
        provider.subscribe('+2', subscriber('2'))
        provider.subscribe('+3', subscriber('3', replies=True))

        # Event handlers
        self.events_log = []

        def out_msg(message):
            self.events_log.append(message)

        def in_msg(message):
            self.events_log.append(message)

        def in_status(status):
            self.events_log.append(status)

        gw.onSend += out_msg
        gw.onReceive += in_msg
        gw.onStatus += in_status
Ejemplo n.º 11
0
from django.conf import settings
from django.core.mail import send_mail
from django.db import models
from django.db.models import Q
from django.utils.translation import gettext_lazy as _
from sentry_sdk import capture_exception
from smsframework import Gateway, OutgoingMessage
from smsframework_gatewayapi import GatewayAPIProvider
from twilio.rest import Client

from .base import Address, TimestampedModel
from .courier_models import CourierCompany, Courier, Sender

if settings.SMS_PLATFORM == 'GatewayAPI':
    gateway = Gateway()
    gateway.add_provider('gapi',
                         GatewayAPIProvider,
                         key=settings.GATEWAY_API['KEY'],
                         secret=settings.GATEWAY_API['SECRET'])


class Package(TimestampedModel):
    name = models.CharField(max_length=64, blank=True)
    details = models.TextField(blank=True)
    pickup_at = models.ForeignKey(Address,
                                  verbose_name=_('pickup location'),
                                  related_name='outbound_packages',
                                  on_delete=models.PROTECT)
    deliver_to = models.ForeignKey(Address,
                                   verbose_name=_('destination'),
Ejemplo n.º 12
0
 def setUp(self):
     self.gw = Gateway()
     # Providers
     self.gw.add_provider('main', LogProvider)
Ejemplo n.º 13
0
SLEEP = 1
COUNTY = 'Clark+County'
PHONE_NUMBERS = ['+12223331234', '+12223331235']
ADMIN_NUMBER = ['+12223331234']
DATA = {
    "Available": {
        "Links": [],
        "LastLinks": []
    },
    "Possible": {
        "Links": [],
        "LastLinks": []
    }
}

GATEWAY = Gateway()
GATEWAY.add_provider(
    'amazon',
    AmazonSNSProvider,
    access_key='AWS_ACCESS_KEY',
    secret_access_key='AWS_SECRET_KEY',
    region_name='us-west-2',
)


def send_sms(recipients, message):
    '''Send SMS to recipients with message'''
    for pnumber in recipients:
        GATEWAY.send(OutgoingMessage(pnumber, message))