Home | History | Annotate | Download | only in bionicbb
      1 #
      2 # Copyright (C) 2015 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the 'License');
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an 'AS IS' BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 import base64
     17 import httplib2
     18 
     19 import config
     20 
     21 
     22 def get_body(msg):
     23     if 'attachmentId' in msg['payload']['body']:
     24         raise NotImplementedError('Handling of messages contained in '
     25                                   'attachments not yet implemented.')
     26     b64_body = msg['payload']['body']['data']
     27     return base64.urlsafe_b64decode(b64_body.encode('ASCII'))
     28 
     29 
     30 def build_service():
     31     from apiclient.discovery import build
     32     from oauth2client.client import flow_from_clientsecrets
     33     from oauth2client.file import Storage
     34     from oauth2client.tools import run
     35 
     36     OAUTH_SCOPE = 'https://www.googleapis.com/auth/gmail.modify'
     37     STORAGE = Storage('oauth.storage')
     38 
     39     # Start the OAuth flow to retrieve credentials
     40     flow = flow_from_clientsecrets(config.client_secret_file,
     41                                    scope=OAUTH_SCOPE)
     42     http = httplib2.Http()
     43 
     44     # Try to retrieve credentials from storage or run the flow to generate them
     45     credentials = STORAGE.get()
     46     if credentials is None or credentials.invalid:
     47         credentials = run(flow, STORAGE, http=http)
     48 
     49     http = credentials.authorize(http)
     50     return build('gmail', 'v1', http=http)
     51 
     52 
     53 def get_gerrit_label(labels):
     54     for label in labels:
     55         if label['name'] == 'gerrit':
     56             return label['id']
     57     return None
     58 
     59 
     60 def get_all_messages(service, label):
     61     msgs = []
     62     response = service.users().messages().list(
     63         userId='me', labelIds=label).execute()
     64     if 'messages' in response:
     65         msgs.extend(response['messages'])
     66     while 'nextPageToken' in response:
     67         page_token = response['nextPageToken']
     68         response = service.users().messages().list(
     69             userId='me', pageToken=page_token).execute()
     70         msgs.extend(response['messages'])
     71     return msgs
     72