about summary refs log tree commit diff
"""
This library allows you to quickly and easily use the Twilio SendGrid Web API v3 via Python.

For more information on this library, see the README on GitHub.
    http://github.com/sendgrid/sendgrid-python
For more information on the Twilio SendGrid v3 API, see the v3 docs:
    http://sendgrid.com/docs/API_Reference/api_v3.html
For the user guide, code examples, and more, visit the main docs page:
    http://sendgrid.com/docs/index.html

This file provides the Twilio SendGrid API Client.
"""

import os

from .base_interface import BaseInterface


class SendGridAPIClient(BaseInterface):
    """The Twilio SendGrid API Client.

    Use this object to interact with the v3 API. For example:
        mail_client = sendgrid.SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
        ...
        mail = Mail(from_email, subject, to_email, content)
        response = mail_client.send(mail)

    For examples and detailed use instructions, see
        https://github.com/sendgrid/sendgrid-python
    """

    def __init__(
            self,
            api_key=None,
            host='https://api.sendgrid.com',
            impersonate_subuser=None):
        """
        Construct the Twilio SendGrid v3 API object.
        Note that the underlying client is being set up during initialization,
        therefore changing attributes in runtime will not affect HTTP client
        behaviour.

        :param api_key: Twilio SendGrid API key to use. If not provided, value
                        will be read from environment variable "SENDGRID_API_KEY"
        :type api_key: string
        :param impersonate_subuser: the subuser to impersonate. Will be passed
                                    by "On-Behalf-Of" header by underlying
                                    client. See
                                    https://sendgrid.com/docs/User_Guide/Settings/subusers.html
                                    for more details
        :type impersonate_subuser: string
        :param host: base URL for API calls
        :type host: string
        """
        self.api_key = api_key or os.environ.get('SENDGRID_API_KEY')
        auth = 'Bearer {}'.format(self.api_key)

        super(SendGridAPIClient, self).__init__(auth, host, impersonate_subuser)