Пример #1
0
def buildbucket_api_method(
    request_message_class, response_message_class, **kwargs
):
  """Defines a buildbucket API method."""

  init_auth = auth.endpoints_method(
      request_message_class, response_message_class, **kwargs
  )

  def decorator(fn):
    fn = catch_errors(fn, response_message_class)
    fn = init_auth(fn)

    ts_mon_time = lambda: utils.datetime_to_timestamp(utils.utcnow()) / 1e6
    fn = gae_ts_mon.instrument_endpoint(time_fn=ts_mon_time)(fn)

    # ndb.toplevel must be the last one.
    # We use it because codebase uses the following pattern:
    #   results = [f.get_result() for f in futures]
    # without ndb.Future.wait_all.
    # If a future has an exception, get_result won't be called successive
    # futures, and thus may be left running.
    return ndb.toplevel(fn)

  return decorator
Пример #2
0
def buildbucket_api_method(
    request_message_class, response_message_class, **kwargs):
  """Extends auth.endpoints_method by converting service errors."""

  endpoints_decorator = auth.endpoints_method(
    request_message_class, response_message_class, **kwargs)

  def decorator(fn):
    fn = catch_errors(fn, response_message_class)
    fn = endpoints_decorator(fn)
    fn = ndb.toplevel(fn)
    return fn

  return decorator
Пример #3
0
def buildbucket_api_method(
    request_message_class, response_message_class, **kwargs):
  """Extends auth.endpoints_method by converting service errors."""

  endpoints_decorator = auth.endpoints_method(
      request_message_class, response_message_class, **kwargs)

  def decorator(fn):
    @functools.wraps(fn)
    def decorated(*args, **kwargs):
      try:
        return fn(*args, **kwargs)
      except errors.Error as ex:
        assert hasattr(response_message_class, 'error')
        return response_message_class(error=exception_to_error_message(ex))
    return endpoints_decorator(decorated)
  return decorator
Пример #4
0
def buildbucket_api_method(request_message_class, response_message_class,
                           **kwargs):
    """Defines a buildbucket API method."""

    endpoints_decorator = auth.endpoints_method(request_message_class,
                                                response_message_class,
                                                **kwargs)

    def decorator(fn):
        fn = catch_errors(fn, response_message_class)
        fn = endpoints_decorator(fn)
        fn = ndb.toplevel(fn)

        def ts_mon_time():
            return utils.datetime_to_timestamp(utils.utcnow()) / 1000000.0

        fn = gae_ts_mon.instrument_endpoint(time_fn=ts_mon_time)(fn)
        return fn

    return decorator
Пример #5
0
def swarmbucket_api_method(request_message_class, response_message_class,
                           **kwargs):
    """Defines a swarmbucket API method."""

    endpoints_decorator = auth.endpoints_method(request_message_class,
                                                response_message_class,
                                                **kwargs)

    def decorator(fn):
        fn = adapt_exceptions(fn)
        fn = auth.public(fn)
        fn = endpoints_decorator(fn)

        ts_mon_time = lambda: utils.datetime_to_timestamp(utils.utcnow()) / 1e6
        fn = gae_ts_mon.instrument_endpoint(time_fn=ts_mon_time)(fn)
        # ndb.toplevel must be the last one.
        # See also the comment in endpoint decorator in api.py
        return ndb.toplevel(fn)

    return decorator
Пример #6
0
def buildbucket_api_method(request_message_class, response_message_class,
                           **kwargs):
    """Extends auth.endpoints_method by converting service errors."""

    endpoints_decorator = auth.endpoints_method(request_message_class,
                                                response_message_class,
                                                **kwargs)

    def decorator(fn):
        @functools.wraps(fn)
        def decorated(*args, **kwargs):
            try:
                return fn(*args, **kwargs)
            except errors.Error as ex:
                assert hasattr(response_message_class, 'error')
                return response_message_class(
                    error=exception_to_error_message(ex))

        return endpoints_decorator(decorated)

    return decorator