This is a client for Mozilla's email subscription service, basket. Basket is not a real subscription service, but it talks to a real one and we don't really care who/what it is.
There are multiple API methods. View the basket documentation for details.
$ pip install basket-client
Do you want to subscribe people to Mozilla's newsletters? All you need to do is:
import basket
basket.subscribe('<email>', '<newsletter>', <kwargs>)
You can pass additional fields as keyword arguments, such as format and country. For a list of available fields and newsletters, see the basket documentation.
Are you checking to see if a user was successfully subscribed? You can use the lookup_user
method like so:
import basket
basket.lookup_user(email='<email>', api_key='<api_key>')
And it will return full details about the user. <api_key> is a special token that grants you admin access to the data. Check with the mozilla.org developers to get it.
On most errors, BasketException will be raised. The code
attribute on the exception object will contain a numeric code indicating the problem, and the desc
attribute will have a short English description of it. (Use the code
attribute to determine which error happened, but you can use desc
in log messages etc.)
Example:
from basket import errors, some_basket_call
try:
rc = some_basket_call(args)
except BasketError as e:
if e.code == errors.BASKET_INVALID_EMAIL:
print "That email address was not valid"
else:
log.exception("Some basket error (%s)" % e.desc)
The error codes are defined in basket.errors
. New ones can be added anytime, but to start with, the errors are:
BASKET_NETWORK_FAILURE
BASKET_INVALID_EMAIL
BASKET_UNKNOWN_EMAIL
BASKET_UNKNOWN_TOKEN
BASKET_USAGE_ERROR
BASKET_EMAIL_PROVIDER_AUTH_FAILURE
BASKET_AUTH_ERROR
BASKET_SSL_REQUIRED
BASKET_INVALID_NEWSLETTER
BASKET_INVALID_LANGUAGE
BASKET_EMAIL_NOT_CHANGED
BASKET_CHANGE_REQUEST_NOT_FOUND
# If you get this, report it as a bug so we can add a more specific
# error code.
BASKET_UNKNOWN_ERROR
- BASKET_URL
- URL to basket server, e.g.
https://basket.mozilla.org
Default:http://localhost:8000
The URL must not end with
/
. Basket-client will add/
if needed. - BASKET_API_KEY
The API Key granted to you by the mozilla.org developers so that you can use the
lookup_user
method with an email address.- BASKET_TIMEOUT
- The number of seconds basket client should wait before giving up on the request.
Default:10
If you're using Django you can simply add these settings to your settings.py
file. Otherwise basket-client will look for these values in an environment variable of the same name.
To run tests:
$ python setup.py test
- Set api key on subscribe call when sync=Y
- Add numeric error codes.
- Add the
start_email_change
andconfirm_email_change
functions.
- Add the
lookup_user
function. - Add the
BASKET_API_KEY
setting. - Add the
BASKET_TIMEOUT
setting.
- Add the
confirm
function.
- Add tests
- Fix issue with calling
subscribe
with an iterable of newsletters. - Add
request
function to those exposed by thebasket
` module.
- Add get_newsletters API method for information on currently available newsletters.
- Handle Timeout exceptions from requests.