| Index: common/prpc/codes.go
|
| diff --git a/common/prpc/codes.go b/common/prpc/codes.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1f1cf17b2718470b13bf189148fb10932b184b58
|
| --- /dev/null
|
| +++ b/common/prpc/codes.go
|
| @@ -0,0 +1,48 @@
|
| +// Copyright 2016 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.
|
| +
|
| +package prpc
|
| +
|
| +import (
|
| + "net/http"
|
| +
|
| + "google.golang.org/grpc/codes"
|
| +)
|
| +
|
| +// StatusCode maps HTTP statuses to gRPC codes.
|
| +// Falls back to codes.Unknown.
|
| +//
|
| +// The behavior of this function may change when
|
| +// https://github.com/grpc/grpc-common/issues/210
|
| +// is closed.
|
| +func StatusCode(status int) codes.Code {
|
| + switch {
|
| +
|
| + case status >= 200 && status < 300:
|
| + return codes.OK
|
| +
|
| + case status == http.StatusUnauthorized:
|
| + return codes.Unauthenticated
|
| + case status == http.StatusForbidden:
|
| + return codes.PermissionDenied
|
| + case status == http.StatusNotFound:
|
| + return codes.NotFound
|
| + case status == http.StatusGone:
|
| + return codes.NotFound
|
| + case status == http.StatusPreconditionFailed:
|
| + return codes.FailedPrecondition
|
| + case status >= 400 && status < 500:
|
| + return codes.InvalidArgument
|
| +
|
| + case status == http.StatusNotImplemented:
|
| + return codes.Unimplemented
|
| + case status == http.StatusServiceUnavailable:
|
| + return codes.Unavailable
|
| + case status >= 500 && status < 600:
|
| + return codes.Internal
|
| +
|
| + default:
|
| + return codes.Unknown
|
| + }
|
| +}
|
|
|