# -*- coding: utf-8 -*-
import urllib2
import urllib
import base64
class RestApi:
"""class for using smsfeedback.ru service via GET requests"""
__host = 'api.smsfeedback.ru'
def __init__(self, api_login, api_password):
self.login = api_login
self.password = api_password
def __sendRequest(self, uri, params=None):
url = self.__getUrl(uri, params)
request = urllib2.Request(url)
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, self.login, self.password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
try:
opener = urllib2.build_opener(authhandler)
data = opener.open(request).read()
return data
except IOError, e:
return e.code
def __getUrl(self, uri, params=None):
url = "http://%s/messages/v2/%s/" % (self.getHost(), uri)
paramStr = ''
if params is not None:
for k, v in params.items():
if v is None:
del params[k]
paramStr = urllib.urlencode(params)
return "%s?%s" % (url, paramStr)
def getHost(self):
"""Return current requests host """
return self.__host
def setHost(self, host):
"""Changing default requests host """
self.__host = host
def send(self, phone, text, sender='SMSfeedback',
statusQueueName=None, scheduleTime=None, wapurl = None):
"""Sending sms """
params = {'phone': phone,
'text': text,
'sender': sender,
'statusQueueName': statusQueueName,
'scheduleTime': scheduleTime,
'wapurl': wapurl
}
return self.__sendRequest('send', params)
def status(self, id):
"""Retrieve sms status by it's id """
params = {'id': id}
return self.__sendRequest('status', params)
def statusQueue(self, statusQueueName, limit = 5):
"""Retrieve latest statuses from queue """
params = {'statusQueueName': statusQueueName, 'limit': limit}
return self.__sendRequest('statusQueue', params)
def balance(self):
"""Retrieve current balance """
return self.__sendRequest('balance')
def senders(self):
"""Retrieve available signs """
return self.__sendRequest('senders')
login = 'login'
password = 'password'
sender = RestApi(login, password);
# узнаем текущий баланс
print sender.balance()
# получаем список доступных подписей
print sender.senders()
# отправляем sms
print sender.send('71234567890', 'some text here', 'TEST-SMS')
# получаем статус
#print sender.status(12345)