depotTools.zip


depotTools.zip
资源截图
代码片段和文件信息
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

“““Google OAuth2 related functions.“““

from __future__ import print_function

import collections
import datetime
import functools
import httplib2
import json
import logging
import os

import subprocess2


# This is what most GAE apps require for authentication.
OAUTH_SCOPE_EMAIL = ‘https://www.googleapis.com/auth/userinfo.email‘
# Gerrit and Git on *.googlesource.com require this scope.
OAUTH_SCOPE_GERRIT = ‘https://www.googleapis.com/auth/gerritcodereview‘
# Deprecated. Use OAUTH_SCOPE_EMAIL instead.
OAUTH_SCOPES = OAUTH_SCOPE_EMAIL


# Mockable datetime.datetime.utcnow for testing.
def datetime_now():
  return datetime.datetime.utcnow()


# OAuth access token with its expiration time (UTC datetime or None if unknown).
class AccessToken(collections.namedtuple(‘AccessToken‘ [
    ‘token‘
    ‘expires_at‘
  ])):

  def needs_refresh(self):
    “““True if this AccessToken should be refreshed.“““
    if self.expires_at is not None:
      # Allow 30s of clock skew between client and backend.
      return datetime_now() + datetime.timedelta(seconds=30) >= self.expires_at
    # Token without expiration time never expires.
    return False


class LoginRequiredError(Exception):
  “““Interaction with the user is required to authenticate.“““

  def __init__(self scopes=OAUTH_SCOPE_EMAIL):
    msg = (
        ‘You are not logged in. Please login first by running:

        ‘  luci-auth login -scopes %s‘ % scopes)
    super(LoginRequiredError self).__init__(msg)


def has_luci_context_local_auth():
  “““Returns whether LUCI_CONTEXT should be used for ambient authentication.“““
  ctx_path = os.environ.get(‘LUCI_CONTEXT‘)
  if not ctx_path:
    return False
  try:
    with open(ctx_path) as f:
      loaded = json.load(f)
  except (OSError IOError ValueError):
    return False
  return loaded.get(‘local_auth‘ {}).get(‘default_account_id‘) is not None


class Authenticator(object):
  “““object that knows how to refresh access tokens when needed.

  Args:
    scopes: space separated oauth scopes. Defaults to OAUTH_SCOPE_EMAIL.
  “““

  def __init__(self scopes=OAUTH_SCOPE_EMAIL):
    self._access_token = None
    self._scopes = scopes

  def has_cached_credentials(self):
    “““Returns True if credentials can be obtained.

    If returns False get_access_token() later will probably ask for interactive
    login by raising LoginRequiredError.

    If returns True get_access_token() won‘t ask for interactive login.
    “““
    return bool(self._get_luci_auth_token())

  def get_access_token(self):
    “““Returns AccessToken refreshing it if necessary.

    Raises:
      LoginRequiredError if user interaction is required.
    “““
    if self._access_token and not self._access_token.needs_refresh(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-01-08 17:48  depotTools
     目录           0  2020-01-08 17:48  depotTools.git
     文件          23  2020-01-08 17:48  depotTools.gitHEAD
     文件         327  2020-01-08 17:48  depotTools.gitconfig
     文件          73  2020-01-08 17:48  depotTools.gitdescription
     目录           0  2020-01-08 17:48  depotTools.githooks
     文件         478  2020-01-08 17:48  depotTools.githooksapplypatch-msg.sample
     文件         896  2020-01-08 17:48  depotTools.githookscommit-msg.sample
     文件        3327  2020-01-08 17:48  depotTools.githooksfsmonitor-watchman.sample
     文件         189  2020-01-08 17:48  depotTools.githookspost-update.sample
     文件         424  2020-01-08 17:48  depotTools.githookspre-applypatch.sample
     文件        1638  2020-01-08 17:48  depotTools.githookspre-commit.sample
     文件        1348  2020-01-08 17:48  depotTools.githookspre-push.sample
     文件        4898  2020-01-08 17:48  depotTools.githookspre-rebase.sample
     文件         544  2020-01-08 17:48  depotTools.githookspre-receive.sample
     文件        1492  2020-01-08 17:48  depotTools.githooksprepare-commit-msg.sample
     文件        3610  2020-01-08 17:48  depotTools.githooksupdate.sample
     文件       70577  2020-01-08 17:48  depotTools.gitindex
     目录           0  2020-01-08 17:48  depotTools.gitinfo
     文件         240  2020-01-08 17:48  depotTools.gitinfoexclude
     目录           0  2020-01-08 17:48  depotTools.gitlogs
     文件         210  2020-01-08 17:48  depotTools.gitlogsHEAD
     目录           0  2020-01-08 17:48  depotTools.gitlogs
efs
     目录           0  2020-01-08 17:48  depotTools.gitlogs
efsheads
     文件         210  2020-01-08 17:48  depotTools.gitlogs
efsheadsmaster
     目录           0  2020-01-08 17:48  depotTools.gitlogs
efs
emotes
     目录           0  2020-01-08 17:48  depotTools.gitlogs
efs
emotesorigin
     文件         210  2020-01-08 17:48  depotTools.gitlogs
efs
emotesoriginHEAD
     目录           0  2020-01-08 17:48  depotTools.gitobjects
     目录           0  2020-01-08 17:48  depotTools.gitobjectsinfo
     目录           0  2020-01-08 17:48  depotTools.gitobjectspack
............此处省略769个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)