Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1173)

Unified Diff: third_party/gsutil/20110627/boto/boto/ses/connection.py

Issue 10199002: Upgrade gsutil to 3.4 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed comments Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/gsutil/20110627/boto/boto/ses/connection.py
diff --git a/third_party/gsutil/20110627/boto/boto/ses/connection.py b/third_party/gsutil/20110627/boto/boto/ses/connection.py
deleted file mode 100644
index ec1f881d03a83a86658c7d6de59d8d700068f001..0000000000000000000000000000000000000000
--- a/third_party/gsutil/20110627/boto/boto/ses/connection.py
+++ /dev/null
@@ -1,301 +0,0 @@
-# Copyright (c) 2010 Mitch Garnaat http://garnaat.org/
-# Copyright (c) 2011 Harry Marr http://hmarr.com/
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish, dis-
-# tribute, sublicense, and/or sell copies of the Software, and to permit
-# persons to whom the Software is furnished to do so, subject to the fol-
-# lowing conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
-# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-from boto.connection import AWSAuthConnection
-from boto.exception import BotoServerError
-import boto
-import boto.jsonresponse
-
-import urllib
-import base64
-
-
-class SESConnection(AWSAuthConnection):
-
- ResponseError = BotoServerError
- DefaultHost = 'email.us-east-1.amazonaws.com'
- APIVersion = '2010-12-01'
-
- def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
- port=None, proxy=None, proxy_port=None,
- host=DefaultHost, debug=0):
- AWSAuthConnection.__init__(self, host, aws_access_key_id,
- aws_secret_access_key, True, port, proxy,
- proxy_port, debug=debug)
-
- def _required_auth_capability(self):
- return ['ses']
-
- def _build_list_params(self, params, items, label):
- """Add an AWS API-compatible parameter list to a dictionary.
-
- :type params: dict
- :param params: The parameter dictionary
-
- :type items: list
- :param items: Items to be included in the list
-
- :type label: string
- :param label: The parameter list's name
- """
- if isinstance(items, basestring):
- items = [items]
- for i in range(1, len(items) + 1):
- params['%s.%d' % (label, i)] = items[i - 1]
-
-
- def _make_request(self, action, params=None):
- """Make a call to the SES API.
-
- :type action: string
- :param action: The API method to use (e.g. SendRawEmail)
-
- :type params: dict
- :param params: Parameters that will be sent as POST data with the API
- call.
- """
- ct = 'application/x-www-form-urlencoded; charset=UTF-8'
- headers = {'Content-Type': ct}
- params = params or {}
- params['Action'] = action
-
- for k, v in params.items():
- if isinstance(v, basestring):
- params[k] = v.encode('utf-8')
-
- response = super(SESConnection, self).make_request(
- 'POST',
- '/',
- headers=headers,
- data=urllib.urlencode(params)
- )
- body = response.read()
- if response.status == 200:
- list_markers = ('VerifiedEmailAddresses', 'SendDataPoints')
- e = boto.jsonresponse.Element(list_marker=list_markers)
- h = boto.jsonresponse.XmlHandler(e, None)
- h.parse(body)
- return e
- else:
- boto.log.error('%s %s' % (response.status, response.reason))
- boto.log.error('%s' % body)
- raise self.ResponseError(response.status, response.reason, body)
-
-
- def send_email(self, source, subject, body, to_addresses, cc_addresses=None,
- bcc_addresses=None, format='text', reply_addresses=None,
- return_path=None, text_body=None, html_body=None):
- """Composes an email message based on input data, and then immediately
- queues the message for sending.
-
- :type source: string
- :param source: The sender's email address.
-
- :type subject: string
- :param subject: The subject of the message: A short summary of the
- content, which will appear in the recipient's inbox.
-
- :type body: string
- :param body: The message body.
-
- :type to_addresses: list of strings or string
- :param to_addresses: The To: field(s) of the message.
-
- :type cc_addresses: list of strings or string
- :param cc_addresses: The CC: field(s) of the message.
-
- :type bcc_addresses: list of strings or string
- :param bcc_addresses: The BCC: field(s) of the message.
-
- :type format: string
- :param format: The format of the message's body, must be either "text"
- or "html".
-
- :type reply_addresses: list of strings or string
- :param reply_addresses: The reply-to email address(es) for the
- message. If the recipient replies to the
- message, each reply-to address will
- receive the reply.
-
- :type return_path: string
- :param return_path: The email address to which bounce notifications are
- to be forwarded. If the message cannot be delivered
- to the recipient, then an error message will be
- returned from the recipient's ISP; this message will
- then be forwarded to the email address specified by
- the ReturnPath parameter.
-
- :type text_body: string
- :param text_body: The text body to send with this email.
-
- :type html_body: string
- :param html_body: The html body to send with this email.
-
- """
- format = format.lower().strip()
- if body is not None:
- if format == "text":
- if text_body is not None:
- raise Warning("You've passed in both a body and a text_body; please choose one or the other.")
- text_body = body
- else:
- if html_body is not None:
- raise Warning("You've passed in both a body and an html_body; please choose one or the other.")
- html_body = body
-
- params = {
- 'Source': source,
- 'Message.Subject.Data': subject,
- }
-
- if return_path:
- params['ReturnPath'] = return_path
-
- if html_body is not None:
- params['Message.Body.Html.Data'] = html_body
- if text_body is not None:
- params['Message.Body.Text.Data'] = text_body
-
- if(format not in ("text","html")):
- raise ValueError("'format' argument must be 'text' or 'html'")
-
- if(not (html_body or text_body)):
- raise ValueError("No text or html body found for mail")
-
- self._build_list_params(params, to_addresses,
- 'Destination.ToAddresses.member')
- if cc_addresses:
- self._build_list_params(params, cc_addresses,
- 'Destination.CcAddresses.member')
-
- if bcc_addresses:
- self._build_list_params(params, bcc_addresses,
- 'Destination.BccAddresses.member')
-
- if reply_addresses:
- self._build_list_params(params, reply_addresses,
- 'ReplyToAddresses.member')
-
- return self._make_request('SendEmail', params)
-
- def send_raw_email(self, raw_message, source=None, destinations=None):
- """Sends an email message, with header and content specified by the
- client. The SendRawEmail action is useful for sending multipart MIME
- emails, with attachments or inline content. The raw text of the message
- must comply with Internet email standards; otherwise, the message
- cannot be sent.
-
- :type source: string
- :param source: The sender's email address. Amazon's docs say:
-
- If you specify the Source parameter, then bounce notifications and
- complaints will be sent to this email address. This takes precedence
- over any Return-Path header that you might include in the raw text of
- the message.
-
- :type raw_message: string
- :param raw_message: The raw text of the message. The client is
- responsible for ensuring the following:
-
- - Message must contain a header and a body, separated by a blank line.
- - All required header fields must be present.
- - Each part of a multipart MIME message must be formatted properly.
- - MIME content types must be among those supported by Amazon SES.
- Refer to the Amazon SES Developer Guide for more details.
- - Content must be base64-encoded, if MIME requires it.
-
- :type destinations: list of strings or string
- :param destinations: A list of destinations for the message.
-
- """
- params = {
- 'Source': source,
- 'RawMessage.Data': base64.b64encode(raw_message),
- }
-
- if destinations:
- self._build_list_params(params, destinations,
- 'Destinations.member')
-
- return self._make_request('SendRawEmail', params)
-
- def list_verified_email_addresses(self):
- """Fetch a list of the email addresses that have been verified.
-
- :rtype: dict
- :returns: A ListVerifiedEmailAddressesResponse structure. Note that
- keys must be unicode strings.
- """
- return self._make_request('ListVerifiedEmailAddresses')
-
- def get_send_quota(self):
- """Fetches the user's current activity limits.
-
- :rtype: dict
- :returns: A GetSendQuotaResponse structure. Note that keys must be
- unicode strings.
- """
- return self._make_request('GetSendQuota')
-
- def get_send_statistics(self):
- """Fetches the user's sending statistics. The result is a list of data
- points, representing the last two weeks of sending activity.
-
- Each data point in the list contains statistics for a 15-minute
- interval.
-
- :rtype: dict
- :returns: A GetSendStatisticsResponse structure. Note that keys must be
- unicode strings.
- """
- return self._make_request('GetSendStatistics')
-
- def delete_verified_email_address(self, email_address):
- """Deletes the specified email address from the list of verified
- addresses.
-
- :type email_adddress: string
- :param email_address: The email address to be removed from the list of
- verified addreses.
-
- :rtype: dict
- :returns: A DeleteVerifiedEmailAddressResponse structure. Note that
- keys must be unicode strings.
- """
- return self._make_request('DeleteVerifiedEmailAddress', {
- 'EmailAddress': email_address,
- })
-
- def verify_email_address(self, email_address):
- """Verifies an email address. This action causes a confirmation email
- message to be sent to the specified address.
-
- :type email_adddress: string
- :param email_address: The email address to be verified.
-
- :rtype: dict
- :returns: A VerifyEmailAddressResponse structure. Note that keys must
- be unicode strings.
- """
- return self._make_request('VerifyEmailAddress', {
- 'EmailAddress': email_address,
- })
« no previous file with comments | « third_party/gsutil/20110627/boto/boto/ses/__init__.py ('k') | third_party/gsutil/20110627/boto/boto/sns/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698