A Python client for Mozilla's basket service.
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.)
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
- URL to basket server, e.g. https://basket.mozilla.orgDefault: http://localhost:8000
The URL must not end with /. Basket-client will add / if needed.
- The API Key granted to you by the mozilla.org developers so that you can use the lookup_user method with an email address.
- 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 and confirm_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 the basket` module.
- Add get_newsletters API method for information on currently available newsletters.
- Handle Timeout exceptions from requests.