def hello():

    credentials = AppAssertionCredentials([])
    client = datastore.Client(project = 'mq-cloud-prototyping-3', credentials = credentials)
    sys.stdout.write(credentials.to_json())
    
    query = client.query(kind='Person')
    res = query.fetch()
    all = dict(res)
    sys.stdout.write(str(all))
    
    return credentials.to_json()

    try :        
    	
    	token = ''

    	#ouath
        O_AUTH_EMAIL_SCOPE = 'https://www.googleapis.com/auth/userinfo.email'

        credentials = GoogleCredentials.get_application_default()
        if credentials.create_scoped_required():
	        credentials = credentials.create_scoped(PUBSUB_SCOPES)
        http = httplib2.Http()
        credentials.authorize(http)

        cl = discovery.build('pubsub', 'v1', http=http)
        return credentials.to_json()

        credentials = GoogleCredentials.get_application_default()
        credentials = credentials.create_scoped([O_AUTH_EMAIL_SCOPE])
      	http = httplib2.Http()
    	credentials.authorize(http)
        return credentials.to_json()
	    #if not http:
	    #    http = httplib2.Http()
	    #credentials.authorize(http)

    	#temp hardcoded token
        #token = 'ya29.CjjlAlrvqUwXrujCnJuqa08HTtmNilyP7K1GGrHQ40Gt489H6NGT9WQAxEL92OSQ6anGYeFPRcvI4g'

        



        tokenBearer = 'Bearer %s' % token
        url = 'https://admin-dot-mq-vouchers.appspot.com/api/communities/mtv1/campaigns?page=0&size=1000&sorting=campaignName,ASC'
        req = urllib2.Request(url, headers = {'Content-Type': 'application/json', 'Authorization' : tokenBearer})
        f = urllib2.urlopen(req)
        response = f.read()
        sys.stdout.write(str(response))
        respjson = json.loads(response)
        
        f.close()
        #respjson = '3333'
        #sys.stdout.write(str(all))
        return str(response)
    except urllib2.HTTPError, error:
    	return ('get failed %s' % error)
Example #2
0
class GCloud():
    def __init__(self):
        self.credentials = GoogleCredentials.get_application_default()
        scope = ["https://www.googleapis.com/auth/cloud-platform"]
        self.credentials = AppAssertionCredentials(scope=scope)

    def create_gcloud_project(self,
                              project_id,
                              project_name,
                              parent_id=None,
                              parent_type=None):
        crm = discovery.build('cloudresourcemanager',
                              'v1',
                              http=self.credentials.authorize(httplib2.Http()))

        body = {'project_id': project_id, 'name': project_name}

        if parent_id and parent_type:
            body['parent'] = {}
            body['parent']['type'] = parent_type
            body['parent']['id'] = parent_id

        operation = crm.projects().create(body=body).execute()

    def create_appengine_app(self, project_id, location_id):
        app = discovery.build('appengine',
                              'v1',
                              http=self.credentials.authorize(httplib2.Http()))

        body = {'id': project_id, 'locationId': location_id}

        operation = app.apps().create(body=body).execute()

    def enable_service(self, project_id, service_id):
        serviceusage = discovery.build('serviceusage',
                                       'v1',
                                       http=self.credentials.authorize(
                                           httplib2.Http()))

        logging.debug('trying to enable service {}'.format(service_id))

        service_name = 'projects/{}/services/{}.googleapis.com'.format(
            project_id, service_id)

        operation = serviceusage.services().enable(name=service_name).execute()

    def create_cloud_build_trigger(self, project_id, description):
        cloudbuild = discovery.build('cloudbuild',
                                     'v1',
                                     http=self.credentials.authorize(
                                         httplib2.Http()))

        body = {'description': 'test'}

        operation = cloudbuild.projects().triggers().create(
            projectId=project_id, body=body).execute()
Example #3
0
def stop_vm(instance_name):
    credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/compute')
    http = credentials.authorize(httplib2.Http(memcache))
    compute = discovery.build('compute', 'v1', http=http)
    result = compute.instances().stop(instance=instance_name, zone=INSTANCE_ZONE, project=PROJECT).execute()
    logging.debug(result)
    return json.dumps(result, indent=4)
Example #4
0
  def get(self):
      if self.request.get('site') == 'issues':
          url = "https://bugs.chromium.org/p/chromium/issues/csv?"
          for item in self.request.GET.items():
              if item[0] != 'site':
                  url += item[0] +'=' + item[1] + '&'
          scope = 'https://www.googleapis.com/auth/userinfo.email'
          credentials = AppAssertionCredentials(scope)
          http = credentials.authorize(Http())

          DISCOVERY_URL = (
            'https://monorail-prod.appspot.com/_ah/api/discovery/v1/apis/'
            '{api}/{apiVersion}/rest'
          )

          monorail = build(
            'monorail', 'v1',
            discoveryServiceUrl=DISCOVERY_URL,
            http=http
          )

          urlfetch.set_default_fetch_deadline(10)
          self.response.headers.add_header("Access-Control-Allow-Origin", "*")
          result = monorail.issues().list(projectId='chromium', owner=self.request.get('q')[6:], can='open').execute()
          self.response.write(json.dumps(result))
Example #5
0
  def get(self):
      scope = 'https://www.googleapis.com/auth/userinfo.email'
      credentials = AppAssertionCredentials(scope)
      http = credentials.authorize(Http())

      DISCOVERY_URL = (
        'https://monorail-prod.appspot.com/_ah/api/discovery/v1/apis/'
        '{api}/{apiVersion}/rest'
      )

      monorail = build(
        'monorail', 'v1',
        discoveryServiceUrl=DISCOVERY_URL,
        http=http
      )
      if self.request.get('site') == 'issues':
          urlfetch.set_default_fetch_deadline(10)
          self.response.headers.add_header("Access-Control-Allow-Origin", "*")
          result = monorail.issues().list(projectId='chromium', q=self.request.get('q'), can='open').execute()
          self.response.write(json.dumps(result))
      elif self.request.get('site') == 'issue':
          urlfetch.set_default_fetch_deadline(10)
          self.response.headers.add_header("Access-Control-Allow-Origin", "*")
          result = monorail.issues().get(projectId='chromium', issueId=self.request.get('issueId')).execute()
          self.response.write(json.dumps(result))
      elif self.request.get('site') == 'comments':
          urlfetch.set_default_fetch_deadline(10)
          self.response.headers.add_header("Access-Control-Allow-Origin", "*")
          result = monorail.issues().comments().list(projectId='chromium', issueId=self.request.get('issueId')).execute()
          self.response.write(json.dumps(result))
Example #6
0
def generate_jwt():
    """Generates a signed JSON Web Token using a service account."""
    credentials = AppAssertionCredentials(
        'https://www.googleapis.com/auth/iam')
    http_auth = credentials.authorize(httplib2.Http())
    service = build(serviceName='iam', version='v1', http=http_auth)

    now = int(time.time())

    header_json = json.dumps({"typ": "JWT", "alg": "RS256"})

    payload_json = json.dumps({
        'iat': now,
        # expires after one hour.
        "exp": now + 3600,
        # iss is the service account email.
        'iss': SERVICE_ACCOUNT_EMAIL,
        'sub': SERVICE_ACCOUNT_EMAIL,
        # aud must match 'audience' in the security configuration in your
        # swagger spec.It can be any string.
        'aud': 'echo.endpoints.sample.google.com',
        "email": SERVICE_ACCOUNT_EMAIL
    })

    headerAndPayload = '{}.{}'.format(base64.urlsafe_b64encode(header_json),
                                      base64.urlsafe_b64encode(payload_json))
    slist = service.projects().serviceAccounts().signBlob(
        name=SERVICE_ACCOUNT,
        body={'bytesToSign': base64.b64encode(headerAndPayload)})
    res = slist.execute()
    signature = base64.urlsafe_b64encode(base64.decodestring(res['signature']))
    signed_jwt = '{}.{}'.format(headerAndPayload, signature)

    return signed_jwt
Example #7
0
def get_service(api_client, version, scope):
    if DEV:
        scopes = [scope]
        credentials = ServiceAccountCredentials.from_json_keyfile_name(
            'qvo-vadis-0c249553334b.json', scopes)
    else:
        credentials = AppAssertionCredentials(scope)
    http_auth = credentials.authorize(Http())
    service = build(api_client, version, http=http_auth)
    return service
Example #8
0
    def _decorated(self, *args, **kwargs):
        credentials = AppAssertionCredentials(
            scope='https://www.googleapis.com/auth/devstorage.full_control')
        http = credentials.authorize(httplib2.Http(memcache))
        self.gcs_service = build('storage',
                                 'v1',
                                 http=http,
                                 developerKey=DEVELOPER_KEY)

        self.gcs_service.BUCKET = BUCKET

        return function(self, *args, **kwargs)
Example #9
0
def start_vm():
	credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/compute')
	logging.debug(memcache)
	http = credentials.authorize(httplib2.Http(memcache))
	logging.debug(http)
	compute = build('compute', 'v1')

	# Start the VM!
	# result = compute.instances().start(instance='jocsub-1', zone='asia-northeast1-b', project='jocc-121ee').execute()
	result = compute.instances().start(instance='swing', zone='asia-southeast1-b', project='sage-buttress-226108').execute()
	logging.debug(result)
	return json.dumps(result, indent=4)
Example #10
0
    def modelDelete(self, request):
        logging.info('modelDelete')
        # Verify Firebase auth.
        #claims = firebase_helper.verify_auth_token(self.request_state)
        id_token = self.request_state.headers['x-metagame-auth'].split(
            ' ').pop()
        claims = google.oauth2.id_token.verify_firebase_token(
            id_token, HTTP_REQUEST)
        if not claims:
            ## TODO make this more modular, somehow.  We have no idea who this user is at this point, so can't write to the firebase user record.
            logging.error('Firebase Unauth')
            response = ModelResponse(
                #models = None,
                more=None,
                cursor=None,
                response_message='Firebase Unauth.',
                response_successful=False)
            return response

        ## get the model

        modelController = ModelController()

        model = modelController.get_by_key_id(int(request.key_id))
        if not model:
            logging.error('model not found')
            return ModelResponse(response_message="Model Not Found",
                                 response_successful=False)

        modelController.delete(model)

        credentials = AppAssertionCredentials(
            'https://www.googleapis.com/auth/sqlservice.admin')

        http_auth = credentials.authorize(Http())

        model_json = json.dumps(model.to_json())

        logging.info(model_json)
        headers = {"Content-Type": "application/json"}

        URL = "https://ue4topia.firebaseio.com/model/%s.json" % model.key.id()
        resp, content = http_auth.request(
            URL,
            "DELETE",  ## We can delete data with a DELETE request
            model_json,
            headers=headers)

        logging.info(resp)
        logging.info(content)

        return ModelResponse(response_message="Model Deleted")
Example #11
0
def start_vm():
    """Start VM instance"""
    credentials = AppAssertionCredentials(
        scope='https://www.googleapis.com/auth/compute')
    http = credentials.authorize(httplib2.Http())
    compute = discovery.build('compute', 'v1', http=http)
    # Start the VM!
    zone = os.environ.get('ZONE')
    inst = os.environ.get('INST')
    proj = os.environ.get('PROJ')
    result = compute.instances().start(instance=inst, zone=zone,
                                       project=proj).execute()

    logging.debug(result)
    # return json.dumps(result, indent=4)
    return result["insertTime"]
Example #12
0
def start_vm():
    credentials = AppAssertionCredentials(
        scope='https://www.googleapis.com/auth/compute')
    http = credentials.authorize(httplib2.Http())
    compute = discovery.build('compute', 'v1', http=http)

    # Start the VM!
    result = compute.instances().start(instance=INSTANCE_NAME,
                                       zone=INSTANCE_ZONE,
                                       project=PROJECT).execute()
    result2 = compute.instances().start(instance=INSTANCE_NAME2,
                                        zone=INSTANCE_ZONE,
                                        project=PROJECT).execute()
    logging.debug(result)
    logging.debug(result2)
    return json.dumps(result, indent=4)
    return json.dumps(result2, indent=4)
Example #13
0
    def model_create(self, request):
        # Verify Firebase auth.
        #claims = firebase_helper.verify_auth_token(self.request_state)
        id_token = self.request_state.headers['x-metagame-auth'].split(
            ' ').pop()
        claims = google.oauth2.id_token.verify_firebase_token(
            id_token, HTTP_REQUEST)
        if not claims:
            ## TODO make this more modular, somehow.  We have no idea who this user is at this point, so can't write to the firebase user record.
            logging.error('Firebase Unauth')
            response = ModelResponse(response_message='Firebase Unauth.',
                                     response_successful=False)
            return response

        model = ModelController().create(description=request.description,
                                         name=request.name,
                                         user_id=claims['user_id'])

        credentials = AppAssertionCredentials(
            'https://www.googleapis.com/auth/sqlservice.admin')

        http_auth = credentials.authorize(Http())

        model_json = json.dumps(model.to_json())

        #logging.info(model_json)
        headers = {"Content-Type": "application/json"}

        URL = "https://ue4topia.firebaseio.com/model/%s.json" % model.key.id()
        resp, content = http_auth.request(
            URL,
            "PUT",  ## Write or replace data to a defined path,
            model_json,
            headers=headers)

        #logging.info(resp)
        #logging.info(content)

        return ModelResponse(response_message="Model Created")
Example #14
0
def generate_jwt():
    """Generates a signed JSON Web Token using a service account."""
    credentials = AppAssertionCredentials(
        'https://www.googleapis.com/auth/iam')
    http_auth = credentials.authorize(httplib2.Http())
    service = googleapiclient.discovery.build(
        serviceName='iam', version='v1', http=http_auth)

    now = int(time.time())

    header_json = json.dumps({
        "typ": "JWT",
        "alg": "RS256"})

    payload_json = json.dumps({
        'iat': now,
        # expires after one hour.
        "exp": now + 3600,
        # iss is the service account email.
        'iss': SERVICE_ACCOUNT_EMAIL,
        'sub': SERVICE_ACCOUNT_EMAIL,
        # aud must match 'audience' in the security configuration in your
        # swagger spec.It can be any string.
        'aud': 'echo.endpoints.sample.google.com',
        "email": SERVICE_ACCOUNT_EMAIL
    })

    headerAndPayload = '{}.{}'.format(
        base64.urlsafe_b64encode(header_json),
        base64.urlsafe_b64encode(payload_json))
    slist = service.projects().serviceAccounts().signBlob(
        name=SERVICE_ACCOUNT,
        body={'bytesToSign': base64.b64encode(headerAndPayload)})
    res = slist.execute()
    signature = base64.urlsafe_b64encode(
        base64.decodestring(res['signature']))
    signed_jwt = '{}.{}'.format(headerAndPayload, signature)

    return signed_jwt
Example #15
0
    def get(self):
        scope = 'https://www.googleapis.com/auth/userinfo.email'
        credentials = AppAssertionCredentials(scope)
        http = credentials.authorize(Http())

        DISCOVERY_URL = (
            'https://monorail-prod.appspot.com/_ah/api/discovery/v1/apis/'
            '{api}/{apiVersion}/rest')

        monorail = build('monorail',
                         'v1',
                         discoveryServiceUrl=DISCOVERY_URL,
                         http=http)
        if self.request.get('site') == 'issues':
            urlfetch.set_default_fetch_deadline(10)
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().list(projectId='chromium',
                                            q=self.request.get('q'),
                                            can='open').execute()
            self.response.write(json.dumps(result))
        elif self.request.get('site') == 'issue':
            urlfetch.set_default_fetch_deadline(10)
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().get(
                projectId='chromium',
                issueId=self.request.get('issueId')).execute()
            self.response.write(json.dumps(result))
        elif self.request.get('site') == 'comments':
            urlfetch.set_default_fetch_deadline(10)
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().comments().list(
                projectId='chromium',
                issueId=self.request.get('issueId')).execute()
            self.response.write(json.dumps(result))
Example #16
0
def generate_jwt():
    """Generates a signed JSON Web Token using a service account."""
    credentials = AppAssertionCredentials("https://www.googleapis.com/auth/iam")
    http_auth = credentials.authorize(httplib2.Http())
    service = build(serviceName="iam", version="v1", http=http_auth)

    now = int(time.time())

    header_json = json.dumps({"typ": "JWT", "alg": "RS256"})

    payload_json = json.dumps(
        {
            "iat": now,
            # expires after one hour.
            "exp": now + 3600,
            # iss is the service account email.
            "iss": SERVICE_ACCOUNT_EMAIL,
            "sub": SERVICE_ACCOUNT_EMAIL,
            # aud must match 'audience' in the security configuration in your
            # swagger spec.It can be any string.
            "aud": "echo.endpoints.sample.google.com",
            "email": SERVICE_ACCOUNT_EMAIL,
        }
    )

    headerAndPayload = "{}.{}".format(base64.urlsafe_b64encode(header_json), base64.urlsafe_b64encode(payload_json))
    slist = (
        service.projects()
        .serviceAccounts()
        .signBlob(name=SERVICE_ACCOUNT, body={"bytesToSign": base64.b64encode(headerAndPayload)})
    )
    res = slist.execute()
    signature = base64.urlsafe_b64encode(base64.decodestring(res["signature"]))
    signed_jwt = "{}.{}".format(headerAndPayload, signature)

    return signed_jwt
Example #17
0
# found in the LICENSE file.

"""Classes representing the monitoring interface for tasks or devices."""

import base64
import httplib2

from google.appengine.api import memcache
from oauth2client.contrib.appengine import AppAssertionCredentials

from apiclient import discovery

# Obtain service account credentials and authorize HTTP connection.
credentials = AppAssertionCredentials(
    scope='https://www.googleapis.com/auth/userinfo.email')
http = credentials.authorize(httplib2.Http(memcache))

def _get_swarming_api(server='chromium-swarm.appspot.com'):
  # Build a service object for interacting with the API.
  api_root = 'https://%s/_ah/api' % server
  api = 'swarming'
  version = 'v1'
  discovery_url = '%s/discovery/v1/apis/%s/%s/rest' % (api_root, api, version)
  return discovery.build(
      api, version, discoveryServiceUrl=discovery_url, http=http)

swarming = _get_swarming_api()

def _get_isolate_api(server='isolateserver.appspot.com'):
  # Build a service object for interacting with the API.
  api_root = 'https://%s/_ah/api' % server
Example #18
0
    def get(self):

        credentials = AppAssertionCredentials(
            "https://www.googleapis.com/auth/calendar.readonly")
        http_auth = credentials.authorize(Http())
        cal_service = discovery.build('calendar', 'v3', http=http_auth)

        service_settings = ServiceSettings.query().get()
        if not service_settings:
            service_settings = ServiceSettings()
        next_sync_token = service_settings.cal_sync_token

        cal_events = []
        if next_sync_token:
            now = None
        else:
            now = strict_rfc3339.now_to_rfc3339_utcoffset()

        try:
            events_result = cal_service.events().list(
                calendarId="*****@*****.**",
                timeMin=now,
                syncToken=next_sync_token).execute()
        except:
            service_settings.cal_sync_token = None
            service_settings.put()
            raise

        cal_events += events_result.get('items', [])
        next_page_token = events_result.get('nextPageToken', None)

        while next_page_token:
            events_result = cal_service.events().list(
                calendarId="*****@*****.**",
                timeMin=now,
                syncToken=next_sync_token,
                pageToken=next_page_token).execute()
            cal_events += events_result.get('items', [])
            next_page_token = events_result.get('nextPageToken', None)

        next_sync_token = events_result.get("nextSyncToken", None)
        service_settings.cal_sync_token = next_sync_token
        service_settings.put()

        for cal_event in cal_events:
            cal_id = cal_event.get("id")

            event = Event.query().filter(Event.cal_id == cal_id).get()

            if event:
                q = taskqueue.Queue('default')
                for task in event.tasks:
                    q.delete_tasks(taskqueue.Task(name=task))
                event.tasks = []

                if cal_event.get("status") == "cancelled":
                    event.key.delete()
                    logging.info("Event deleted: %s", event)
                    continue
            else:
                event = Event(cal_id=cal_id)
                event.put()

            summary = cal_event.get("summary")
            description = cal_event.get("description")

            start = cal_event.get("start")
            end = cal_event.get("end")

            start = parse_date_time(start.get("date"), start.get("dateTime"))
            end = parse_date_time(end.get("date"), end.get("dateTime"))

            event.summary = summary
            event.description = description
            event.start = start
            event.end = end

            set_event_reminders(event)

            event.put()

            logging.info("New event created: %s", event)
Example #19
0
def get_http():
    credentials = AppAssertionCredentials(
        scope='https://www.googleapis.com/auth/compute')
    http = credentials.authorize(httplib2.Http(memcache))
    return http
Example #20
0
def get_credentials():
    """Authorizes a request to Google Cloud Platform."""
    credentials = AppAssertionCredentials(
        'https://www.googleapis.com/auth/cloud-platform')
    http_auth = credentials.authorize(Http())
    return build('compute', 'v1', http=http_auth)
Example #21
0
    #from oauth2client.client import GoogleCredentials
    #credentials = GoogleCredentials.get_application_default()
    # from oauth2client.service_account import ServiceAccountCredentials
    # scopes = ['https://www.googleapis.com/auth/compute']
    # cred_file = "./alexwiss-07e55c19e381.json"
    # credentials = ServiceAccountCredentials.from_json_keyfile_name(cred_file, scopes=scopes)
    redirect_uri = "http://localhost:8888/callback"

#from oauth2client.contrib.gce import AppAssertionCredentials
from oauth2client.contrib.appengine import AppAssertionCredentials
#from oauth2client.client import GoogleCredentials

#credentials = GoogleCredentials.get_application_default()
credentials = AppAssertionCredentials(
    'https://www.googleapis.com/auth/compute')
http_auth = credentials.authorize(Http())
service = discovery.build('compute', 'v1', credentials=credentials)
project = 'alexwiss-website'  # TODO: Update placeholder value.
zone = 'us-central1-f'
user = "******"


class Instance(ndb.Model):
    user = ndb.StringProperty(indexed=True)
    name = ndb.StringProperty(indexed=False)
    expire_dttm = ndb.DateTimeProperty(auto_now_add=False)


def create_app(config, debug=False, testing=False, config_overrides=None):
    app = Flask(__name__)
    app.config.from_object(config)
Example #22
0
def build_request(_, *args, **kwargs):
    credentials = AppAssertionCredentials(
        scope='https://www.googleapis.com/auth/bigquery')
    new_http = credentials.authorize(httplib2.Http())
    return apiclient.http.HttpRequest(new_http, *args, **kwargs)
Example #23
0
    def get(self):
        scope = 'https://www.googleapis.com/auth/userinfo.email'
        credentials = AppAssertionCredentials(scope)
        http = credentials.authorize(Http())

        MONORAIL_DISCOVERY_URL = (
            'https://monorail-prod.appspot.com/_ah/api/discovery/v1/apis/'
            '{api}/{apiVersion}/rest')

        monorail = build('monorail',
                         'v1',
                         discoveryServiceUrl=MONORAIL_DISCOVERY_URL,
                         http=http)

        scope = "https://www.googleapis.com/auth/gerritcodereview"
        auth_token, _ = app_identity.get_access_token(scope)

        if self.request.get('site') == 'issues':
            urlfetch.set_default_fetch_deadline(10)
            startIndex = self.request.get('start')
            try:
                startIndex = int(startIndex)
            except:
                startIndex = 0
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().list(projectId='chromium',
                                            q=self.request.get('q'),
                                            can='open',
                                            startIndex=startIndex).execute()
            self.response.write(json.dumps(result))
        elif self.request.get('site') == 'issue':
            urlfetch.set_default_fetch_deadline(10)
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().get(
                projectId='chromium',
                issueId=self.request.get('issueId')).execute()
            self.response.write(json.dumps(result))
        elif self.request.get('site') == 'comments':
            urlfetch.set_default_fetch_deadline(10)
            startIndex = self.request.get('start')
            try:
                startIndex = int(startIndex)
            except:
                startIndex = 0
            maxResults = self.request.get('max')
            try:
                maxResults = int(maxResults)
                if (maxResults > 200):
                    maxResults = 200
                    logging.error(
                        'You can only fetch 200 comments at a time. If you need to fetch more comments than that please paginate using the startIndex.'
                    )
            except:
                maxResults = 0
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = monorail.issues().comments().list(
                projectId='chromium',
                issueId=self.request.get('issueId'),
                maxResults=maxResults,
                startIndex=startIndex).execute()
            self.response.write(json.dumps(result))
        elif self.request.get('site') == 'gerrit':
            urlfetch.set_default_fetch_deadline(10)
            self.response.headers.add_header("Access-Control-Allow-Origin",
                                             "*")
            result = urlfetch.fetch(
                url="https://chromium-review.googlesource.com/a/changes/?q=" +
                self.request.get('q') + "&o=" + self.request.get('o') +
                "&o=DETAILED_ACCOUNTS&o=REVIEWER_UPDATES",
                headers={"Authorization": "Bearer " + auth_token})
            self.response.write(json.dumps(result.content[5:]))
import re

from google.appengine.api import memcache
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
from oauth2client.contrib.appengine import AppAssertionCredentials

# Constants for the XSL stylesheet and the Google Cloud Storage URI.
XSL = '\n<?xml-stylesheet href="/listing.xsl" type="text/xsl"?>\n';
URI = 'http://commondatastorage.googleapis.com'

# Obtain service account credentials and authorize HTTP connection.
credentials = AppAssertionCredentials(
    scope='https://www.googleapis.com/auth/devstorage.read_write')
http = credentials.authorize(httplib2.Http(memcache))


class MainHandler(webapp.RequestHandler):

  def get(self):
    try:
      # Derive desired bucket name from path after domain name.
      bucket = self.request.path
      if bucket[-1] == '/':
        # Trim final slash, if necessary.
        bucket = bucket[:-1]
      # Send HTTP request to Google Cloud Storage to obtain bucket listing.
      resp, content = http.request(URI + bucket, "GET")
      if resp.status != 200:
        # If error getting bucket listing, raise exception.
    def get(self):

        credentials = AppAssertionCredentials("https://www.googleapis.com/auth/calendar.readonly")
        http_auth = credentials.authorize(Http())
        cal_service = discovery.build('calendar', 'v3', http=http_auth)

        service_settings = ServiceSettings.query().get()
        if not service_settings:
            service_settings = ServiceSettings()
        next_sync_token = service_settings.cal_sync_token

        cal_events = []
        if next_sync_token:
            now = None
        else:
            now = strict_rfc3339.now_to_rfc3339_utcoffset()

        try:
            events_result = cal_service.events().list(calendarId="*****@*****.**", timeMin=now,
                                                      syncToken=next_sync_token).execute()
        except:
            service_settings.cal_sync_token = None
            service_settings.put()
            raise

        cal_events += events_result.get('items', [])
        next_page_token = events_result.get('nextPageToken', None)

        while next_page_token:
            events_result = cal_service.events().list(calendarId="*****@*****.**", timeMin=now,
                                                      syncToken=next_sync_token, pageToken=next_page_token).execute()
            cal_events += events_result.get('items', [])
            next_page_token = events_result.get('nextPageToken', None)

        next_sync_token = events_result.get("nextSyncToken", None)
        service_settings.cal_sync_token = next_sync_token
        service_settings.put()

        for cal_event in cal_events:
            cal_id = cal_event.get("id")

            event = Event.query().filter(Event.cal_id == cal_id).get()

            if event:
                q = taskqueue.Queue('default')
                for task in event.tasks:
                    q.delete_tasks(taskqueue.Task(name=task))
                event.tasks = []

                if cal_event.get("status") == "cancelled":
                    event.key.delete()
                    logging.info("Event deleted: %s", event)
                    continue
            else:
                event = Event(cal_id=cal_id)
                event.put()

            summary = cal_event.get("summary")
            description = cal_event.get("description")

            start = cal_event.get("start")
            end = cal_event.get("end")

            start = parse_date_time(start.get("date"), start.get("dateTime"))
            end = parse_date_time(end.get("date"), end.get("dateTime"))

            event.summary = summary
            event.description = description
            event.start = start
            event.end = end

            set_event_reminders(event)

            event.put()

            logging.info("New event created: %s", event)
Example #26
0
 def auth_bq(self):
     credentials = AppAssertionCredentials(scope=SCOPE)
     http = credentials.authorize(httplib2.Http())
     bigquery = build('bigquery', 'v2', http=http)
     return bigquery