Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Side by Side Diff: common/prpc/codes.go

Issue 1605363002: common/prpc, tools/cmd/cproto: prpc client (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: use text template for ast generation Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package prpc
6
7 import (
8 "net/http"
9
10 "google.golang.org/grpc/codes"
11 )
12
13 // This file maps gRPC codes to HTTP statuses and vice-versa.
14
15 // codeToStatus maps gRPC codes to HTTP statuses.
16 // This map may need to be corrected when
17 // https://github.com/grpc/grpc-common/issues/210
18 // is closed.
19 var codeToStatus = map[codes.Code]int{
dnj 2016/01/21 07:44:28 Why do we need a full mapping? We have the status
nodir 2016/01/22 00:47:24 the {code->status} map is used in server/prpc. I'v
20 codes.OK: http.StatusOK,
21 codes.Canceled: http.StatusNoContent,
22 codes.Unknown: http.StatusInternalServerError,
23 codes.InvalidArgument: http.StatusBadRequest,
24 codes.DeadlineExceeded: http.StatusServiceUnavailable,
25 codes.NotFound: http.StatusNotFound,
26 codes.AlreadyExists: http.StatusConflict,
27 codes.PermissionDenied: http.StatusForbidden,
28 codes.Unauthenticated: http.StatusUnauthorized,
29 codes.ResourceExhausted: http.StatusServiceUnavailable,
30 codes.FailedPrecondition: http.StatusPreconditionFailed,
31 codes.Aborted: http.StatusInternalServerError,
32 codes.OutOfRange: http.StatusBadRequest,
33 codes.Unimplemented: http.StatusNotImplemented,
34 codes.Internal: http.StatusInternalServerError,
35 codes.Unavailable: http.StatusServiceUnavailable,
36 codes.DataLoss: http.StatusInternalServerError,
37 }
38
39 // CodeStatus maps gRPC codes to HTTP statuses.
40 //
41 // The behavior of this function may change when
42 // https://github.com/grpc/grpc-common/issues/210
43 // is closed.
44 func CodeStatus(code codes.Code) (status int, ok bool) {
45 status, ok = codeToStatus[code]
46 return
47 }
48
49 // StatusCode maps HTTP statuses to gRPC codes.
50 // Falls back to codes.Unknown.
51 //
52 // The behavior of this function may change when
53 // https://github.com/grpc/grpc-common/issues/210
54 // is closed.
55 func StatusCode(status int) codes.Code {
56 switch {
57
58 case status >= 200 && status < 300:
59 return codes.OK
60
61 case status == http.StatusUnauthorized:
62 return codes.Unauthenticated
63 case status == http.StatusForbidden:
64 return codes.PermissionDenied
65 case status == http.StatusNotFound:
66 return codes.NotFound
67 case status == http.StatusGone:
68 return codes.NotFound
69 case status == http.StatusPreconditionFailed:
70 return codes.FailedPrecondition
71 case status >= 400 && status < 500:
72 return codes.InvalidArgument
73
74 case status == http.StatusNotImplemented:
75 return codes.Unimplemented
76 case status == http.StatusServiceUnavailable:
77 return codes.Unavailable
78 case status >= 500 && status < 600:
79 return codes.Internal
80
81 default:
82 return codes.Unknown
83 }
84 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698