def test_json_credentials_storage(self):
        access_token = 'foo'
        client_id = 'some_client_id'
        client_secret = 'cOuDdkfjxxnv+'
        refresh_token = '1/0/a.df219fjls0'
        token_expiry = datetime.datetime.utcnow()
        token_uri = 'https://www.google.com/accounts/o8/oauth2/token'
        user_agent = 'refresh_checker/1.0'

        credentials = OAuth2Credentials(access_token, client_id, client_secret,
                                        refresh_token, token_expiry, token_uri,
                                        user_agent)

        m = mox.Mox()
        m.StubOutWithMock(keyring, 'get_password')
        m.StubOutWithMock(keyring, 'set_password')
        keyring.get_password('my_unit_test', 'me').AndReturn(None)
        keyring.set_password('my_unit_test', 'me', credentials.to_json())
        keyring.get_password('my_unit_test',
                             'me').AndReturn(credentials.to_json())
        m.ReplayAll()

        s = Storage('my_unit_test', 'me')
        self.assertEquals(None, s.get())

        s.put(credentials)

        restored = s.get()
        self.assertEqual('foo', restored.access_token)
        self.assertEqual('some_client_id', restored.client_id)

        m.UnsetStubs()
        m.VerifyAll()
예제 #2
0
  def test_json_credentials_storage(self):
    access_token = 'foo'
    client_id = 'some_client_id'
    client_secret = 'cOuDdkfjxxnv+'
    refresh_token = '1/0/a.df219fjls0'
    token_expiry = datetime.datetime.utcnow()
    user_agent = 'refresh_checker/1.0'

    credentials = OAuth2Credentials(
        access_token, client_id, client_secret,
        refresh_token, token_expiry, GOOGLE_TOKEN_URI,
        user_agent)

    m = mox.Mox()
    m.StubOutWithMock(keyring, 'get_password')
    m.StubOutWithMock(keyring, 'set_password')
    keyring.get_password('my_unit_test', 'me').AndReturn(None)
    keyring.set_password('my_unit_test', 'me', credentials.to_json())
    keyring.get_password('my_unit_test', 'me').AndReturn(credentials.to_json())
    m.ReplayAll()

    s = Storage('my_unit_test', 'me')
    self.assertEquals(None, s.get())

    s.put(credentials)

    restored = s.get()
    self.assertEqual('foo', restored.access_token)
    self.assertEqual('some_client_id', restored.client_id)

    m.UnsetStubs()
    m.VerifyAll()
예제 #3
0
def get_drive_service():
    """Authenticate to the Google Drive API and return a service object."""
    # See https://developers.google.com/api-client-library/python/guide/aaa_oauth#oauth2client
    import oauth2client
    from oauth2client.client import flow_from_clientsecrets
    from oauth2client.keyring_storage import Storage as CredentialStorage
    from oauth2client.tools import run
    from apiclient.discovery import build as build_service

    # For keyring credential storage
    APP_NAME = 'gdutil'
    USER_NAME = os.environ['USER'] or 'default_user'

    CLIENT_SECRETS_FILE = 'client_secrets.json'

    # Check https://developers.google.com/drive/scopes for all available scopes
    OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'
    
    storage = CredentialStorage(APP_NAME, USER_NAME)
    credentials = storage.get()

    if credentials is None:
        try:
            # See https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
            flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, OAUTH_SCOPE)
        except oauth2client.clientsecrets.InvalidClientSecretsError, e:
            print "error: couldn't read client secrets: ", e
            exit(1)

        # See https://developers.google.com/api-client-library/python/guide/aaa_oauth#oauth2client
        credentials = run(flow, storage)
예제 #4
0
    def _youtube(cls, authenticate=False):
        while True:
            try:
                if not authenticate:
                    return build(cls.YOUTUBE_API_SERVICE_NAME, cls.YOUTUBE_API_VERSION, developerKey=cls.DEVELOPER_KEY)

                storage = Storage('mpris-youtube', os.getlogin())
                credentials = storage.get()

                if credentials is None:
                    flow = OAuth2WebServerFlow(
                            client_id=cls.CLIENT_ID,
                            client_secret=cls.CLIENT_SECRET,
                            scope=cls.AUTH_SCOPE
                            #redirect_uri='urn:ietf:wg:oauth:2.0:oob'
                            )
                    credentials = run(flow, storage)

                http = httplib2.Http()
                credentials.authorize(http)
                return build(
                        cls.YOUTUBE_API_SERVICE_NAME,
                        cls.YOUTUBE_API_VERSION,
                        http=http)

            except Exception as e:
                print e
                time.sleep(3)
예제 #5
0
def generate_token():
    # check storage for credentials
    store = Storage('Google Account', frappe.session.user)
    # store = Storage('GCal', "*****@*****.**")
    credentials = store.get()
    if not credentials or credentials.invalid:
        url = get_oauth2_authorize_url('calendar')
        return {"url": url, "is_synced": False}
 def test_get_with_malformed_json_credentials_stored(self):
     with mock.patch.object(keyring, 'get_password',
                            return_value='{',
                            autospec=True) as get_password:
         store = Storage('my_unit_test', 'me')
         credentials = store.get()
         self.assertEquals(None, credentials)
         get_password.assert_called_once_with('my_unit_test', 'me')
예제 #7
0
 def test_non_existent_credentials_storage(self):
   with mock.patch.object(keyring, 'get_password',
                          return_value=None,
                          autospec=True) as get_password:
     s = Storage('my_unit_test', 'me')
     credentials = s.get()
     self.assertEquals(None, credentials)
     get_password.assert_called_once_with('my_unit_test', 'me')
 def test_get_with_malformed_json_credentials_stored(self):
     with mock.patch.object(keyring, 'get_password',
                            return_value='{',
                            autospec=True) as get_password:
         store = Storage('my_unit_test', 'me')
         credentials = store.get()
         self.assertEquals(None, credentials)
         get_password.assert_called_once_with('my_unit_test', 'me')
예제 #9
0
    def _get_credentials(self):
        storage = Storage('ftw.recipe.translations', os.getlogin())
        credentials = storage.get()

        if credentials:
            credentials.refresh(httplib2.Http())
            return credentials

        return self._authorize(storage)
예제 #10
0
    def _get_credentials(self):
        storage = Storage("ftw.recipe.translations", os.getlogin())
        credentials = storage.get()

        if credentials:
            credentials.refresh(httplib2.Http())
            return credentials

        return self._authorize(storage)
예제 #11
0
파일: auth.py 프로젝트: marcogrossi/GBD
    def get_credentials(self):

        storage = Storage(self.appname, os.getlogin())

        credentials = storage.get()
        if not credentials or credentials.invalid:
            credentials = self.request_credentials()
            storage.put(credentials)

        return credentials
예제 #12
0
파일: tasks.py 프로젝트: spiderninja/GCAL
def sych_users_calender(users):
	for user in users:
		# get user credentials from keyring storage
		store = Storage('GCal', user[0])
		credentials = store.get()
		if not credentials or credentials.invalid:
			# invalid credentials
			print "invalid credentials", user[0]
		else:
			sync_google_calendar(credentials)
예제 #13
0
파일: auth.py 프로젝트: coquelicot/GBD
    def get_credentials(self):

        storage = Storage(self.appname, os.getlogin())

        credentials = storage.get()
        if not credentials or credentials.invalid:
            credentials = self.request_credentials()
            storage.put(credentials)

        return credentials
def generate_token():
	# check storage for credentials
	store = Storage('Google Account', frappe.session.user)
	# store = Storage('GCal', "*****@*****.**")
	credentials = store.get()
	if not credentials or credentials.invalid:
		url = get_oauth2_authorize_url('calendar')
		return {
			"url":url,
			"is_synced": False
		}
예제 #15
0
def get_service_object():
    # get google credentials from storage
    service = None
    store = Storage('GCal', frappe.session.user)
    credentials = store.get()
    if not credentials or credentials.invalid:
        # get credentials
        frappe.throw("Invalid Credentials")
    else:
        service = build('calendar', 'v3', http=credentials.authorize(Http()))

    return service
예제 #16
0
def get_service_object():
	# get google credentials from storage
	service = None
	store = Storage('GCal', frappe.session.user)
	credentials = store.get()
	if not credentials or credentials.invalid:
		# get credentials
		frappe.throw("Invalid Credentials")
	else:
		service = build('calendar', 'v3', http=credentials.authorize(Http()))

	return service
예제 #17
0
    def test_json_credentials_storage(self):
        access_token = 'foo'
        client_id = 'some_client_id'
        client_secret = 'cOuDdkfjxxnv+'
        refresh_token = '1/0/a.df219fjls0'
        token_expiry = datetime.datetime.utcnow()
        user_agent = 'refresh_checker/1.0'

        credentials = OAuth2Credentials(access_token, client_id, client_secret,
                                        refresh_token, token_expiry,
                                        GOOGLE_TOKEN_URI, user_agent)

        # Setting autospec on a mock with an iterable side_effect is
        # currently broken (http://bugs.python.org/issue17826), so instead
        # we patch twice.
        with mock.patch.object(keyring,
                               'get_password',
                               return_value=None,
                               autospec=True) as get_password:
            with mock.patch.object(keyring,
                                   'set_password',
                                   return_value=None,
                                   autospec=True) as set_password:
                s = Storage('my_unit_test', 'me')
                self.assertEquals(None, s.get())

                s.put(credentials)

                set_password.assert_called_once_with('my_unit_test', 'me',
                                                     credentials.to_json())
                get_password.assert_called_once_with('my_unit_test', 'me')

        with mock.patch.object(keyring,
                               'get_password',
                               return_value=credentials.to_json(),
                               autospec=True) as get_password:
            restored = s.get()
            self.assertEqual('foo', restored.access_token)
            self.assertEqual('some_client_id', restored.client_id)
            get_password.assert_called_once_with('my_unit_test', 'me')
예제 #18
0
def sync_calender():
    # check storage for credentials
    store = Storage('GCal', frappe.session.user)
    # store = Storage('GCal', "makarand")
    credentials = store.get()

    if not credentials or credentials.invalid:
        url = get_oauth2_authorize_url('gcal')
        return {"url": url, "is_synced": False}
    else:
        from gcal.tasks import sync_google_calendar
        sync_google_calendar(credentials)
        return {"url": None, "is_synced": True}
    def test_malformed_credentials_in_storage(self):
        m = mox.Mox()
        m.StubOutWithMock(keyring, 'get_password')
        m.StubOutWithMock(keyring, 'set_password')
        keyring.get_password('my_unit_test', 'me').AndReturn('{')
        m.ReplayAll()

        s = Storage('my_unit_test', 'me')
        credentials = s.get()
        self.assertEquals(None, credentials)

        m.UnsetStubs()
        m.VerifyAll()
예제 #20
0
  def test_malformed_credentials_in_storage(self):
    m = mox.Mox()
    m.StubOutWithMock(keyring, 'get_password')
    m.StubOutWithMock(keyring, 'set_password')
    keyring.get_password('my_unit_test', 'me').AndReturn('{')
    m.ReplayAll()

    s = Storage('my_unit_test', 'me')
    credentials = s.get()
    self.assertEquals(None, credentials)

    m.UnsetStubs()
    m.VerifyAll()
    def test_get_and_set_with_json_credentials_stored(self):
        access_token = 'foo'
        client_id = 'some_client_id'
        client_secret = 'cOuDdkfjxxnv+'
        refresh_token = '1/0/a.df219fjls0'
        token_expiry = datetime.datetime.utcnow()
        user_agent = 'refresh_checker/1.0'

        credentials = OAuth2Credentials(
            access_token, client_id, client_secret,
            refresh_token, token_expiry, GOOGLE_TOKEN_URI,
            user_agent)

        # Setting autospec on a mock with an iterable side_effect is
        # currently broken (http://bugs.python.org/issue17826), so instead
        # we patch twice.
        with mock.patch.object(keyring, 'get_password',
                               return_value=None,
                               autospec=True) as get_password:
            with mock.patch.object(keyring, 'set_password',
                                   return_value=None,
                                   autospec=True) as set_password:
                store = Storage('my_unit_test', 'me')
                self.assertEquals(None, store.get())

                store.put(credentials)

                set_password.assert_called_once_with(
                    'my_unit_test', 'me', credentials.to_json())
                get_password.assert_called_once_with('my_unit_test', 'me')

        with mock.patch.object(keyring, 'get_password',
                               return_value=credentials.to_json(),
                               autospec=True) as get_password:
            restored = store.get()
            self.assertEqual('foo', restored.access_token)
            self.assertEqual('some_client_id', restored.client_id)
            get_password.assert_called_once_with('my_unit_test', 'me')
예제 #22
0
def build_service(config):
    storage = Storage("kitakubu-" + config["client_id"], getpass.getuser())
    credentials = storage.get()
    if config["reauth"] or credentials is None or credentials.invalid:
        flow = OAuth2WebServerFlow(
            config["client_id"],
            config["client_secret"],
            OAUTH_SCOPES,
        )
        gflags.FLAGS([sys.argv[0]])
        credentials = run_oauth(flow, storage)

    http = httplib2.Http()
    http = credentials.authorize(http)
    return build_apiclient("drive", "v2", http=http)
예제 #23
0
def sync_calender():
	# check storage for credentials
	store = Storage('GCal', frappe.session.user)
	# store = Storage('GCal', "makarand")
	credentials = store.get()

	if not credentials or credentials.invalid:
		url = get_oauth2_authorize_url('gcal')
		return {
			"url":url,
			"is_synced": False
		}
	else:
		from gcal.tasks import sync_google_calendar
		sync_google_calendar(credentials)
		return {
			"url":None,
			"is_synced": True
		}
예제 #24
0
def get_service(secrets, scope, service_name, service_version,
                keyring_storename):
    """
    return a service for google
    """
    flow = flow_from_clientsecrets(secrets,
                                   scope=scope,
                                   redirect_uri='http://localhost:8080')
    store = Storage(keyring_storename, getpass.getuser())
    # Check if we already have credentials
    credentials = store.get()
    if not credentials or credentials.invalid:
        # if not, spawn a browser to get credentials
        credentials = run(flow, store)
    # finally create a service object:
    http = httplib2.Http()
    http = credentials.authorize(http)
    service = build(service_name, service_version, http=http)
    return service
예제 #25
0
def get_credentials(user):
	store = Storage('Google Account', user)
	credentials = store.get()
	
	return credentials
예제 #26
0
def get_credentials(user):
    store = Storage('Google Account', user)
    credentials = store.get()

    return credentials
예제 #27
0
def main(argv):
  # Let the gflags module process the command-line arguments
  try:
    argv = FLAGS(argv)
  except gflags.FlagsError, e:
    print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
    sys.exit(1)

  # Set the logging according to the command-line flag
  logging.getLogger().setLevel(getattr(logging, FLAGS.logging_level))

  # If the Credentials don't exist or are invalid run through the native client
  # flow. The Storage object will ensure that if successful the good
  # Credentials will get written back to a file.
  storage = Storage('Google_Plus_Sample', getpass.getuser())
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    credentials = run(FLOW, storage)

  # Create an httplib2.Http object to handle our HTTP requests and authorize it
  # with our good Credentials.
  http = httplib2.Http()
  http = credentials.authorize(http)

  service = build("plus", "v1", http=http)

  try:
    person = service.people().get(userId='me').execute(http)

    print "Got your ID: %s" % person['displayName']