Projet

Général

Profil

0001-sms-add-backend-for-passerelle-6860.patch

Benjamin Dauvergne, 03 décembre 2015 10:11

Télécharger (2,65 ko)

Voir les différences:

Subject: [PATCH] sms: add backend for passerelle (#6860)

 wcs/qommon/sms.py | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)
wcs/qommon/sms.py
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17 17
import re
18
import json
18 19
import urllib2
19 20
import urllib
20 21

  
22
from quixote import get_publisher
21 23
from qommon import errors
22
from qommon import get_cfg
24
from qommon import get_cfg, get_logger
23 25
from qommon.form import StringWidget, PasswordWidget
26
from qommon.misc import http_post_request
24 27

  
25 28

  
26 29
class MobytSMS(object):
......
196 199
    def get_money_left(self):
197 200
        raise NotImplementedError
198 201

  
202
class PasserelleSMS(object):
203
    """This class allows to send a SMS using Passerelle
204
    """
205
    parameters = [
206
         (StringWidget, 'sender', N_('Sender (number or name)')),
207
         (StringWidget, 'passerelle_url', N_('URL')),
208
         (StringWidget, 'passerelle_apikey', N_('Key')),
209
    ]
210

  
211
    TIMEOUT = 10
212

  
213
    def __init__(self):
214
        sms_cfg = get_cfg('sms', {})
215
        self.sender = sms_cfg.get('sender', '')
216
        self.key = sms_cfg.get('passerelle_apikey', '')
217
        self.url = sms_cfg.get('passerelle_url', '')
218

  
219
    def send(self, sender, destinations, text, quality=None):
220
        """Send a SMS using the Choosit provider"""
221
        sender = sender or self.sender
222
        payload = {
223
              'from': sender,
224
              'message': text,
225
              'to': destinations,
226
        }
227
        url = self.url
228
        url += '?%s' % urllib.urlencode({'apikey': self.key})
229
        body = json.dumps(payload, encoding=get_publisher().site_charset)
230
        response, status, data, auth_header = http_post_request(
231
                url, body, timeout=self.TIMEOUT)
232
        get_logger().debug('sms %r sent using passerelle to %r, result: %r',
233
                text, destinations, response)
234

  
235
    def get_sms_left(self, type='standard'):
236
        raise NotImplementedError
237

  
238
    def get_money_left(self):
239
        raise NotImplementedError
199 240

  
200 241
class SMS(object):
201 242
    providers = {
202 243
        'mobyt': (N_('Mobyt provider'), MobytSMS),
203 244
        'oxyd': (N_('Oxyd provider'), OxydSMS),
204 245
        'choosit': (N_('Choosit provider'), ChoositSMS),
246
        'passerelle': (N_('Passerelle provider'), PasserelleSMS),
205 247
    }
206 248

  
207 249
    def get_sms_class(cls, provider_id):
208
-