-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathaccessor.go
More file actions
248 lines (208 loc) · 7.07 KB
/
accessor.go
File metadata and controls
248 lines (208 loc) · 7.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
/*
* Tencent is pleased to support the open source community by making
* 蓝鲸智云 - 配置平台 (BlueKing - Configuration System) available.
* Copyright (C) 2017 Tencent. All rights reserved.
* Licensed under the MIT License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://opensource.org/licenses/MIT
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
* We undertake not to change the open source license (MIT license) applicable
* to the current version of the project delivered to anyone in the future.
*/
package header
import (
"net/http"
"configcenter/src/common"
)
// GetRid get request id from http header
func GetRid(header http.Header) string {
if rid := header.Get(BkRidHeader); rid != "" {
return rid
}
// get request id from apigw rid header if not set
return header.Get(BkApigwRidHeader)
}
// GetBkJWT get blueking api gateway jwt info from http header
func GetBkJWT(header http.Header) string {
return header.Get(BkJWTHeader)
}
// GetAppCode get blueking app code from http header
func GetAppCode(header http.Header) string {
return header.Get(AppCodeHeader)
}
// GetUser get username from http header
func GetUser(header http.Header) string {
if user := header.Get(UserHeader); user != "" {
return user
}
if user := header.Get("BK_User"); user != "" {
return user
}
return ""
}
// GetUserToken get blueking user token from http header
func GetUserToken(header http.Header) string {
return header.Get(UserTokenHeader)
}
// GetUserTicket get blueking user ticket from http header
func GetUserTicket(header http.Header) string {
return header.Get(UserTicketHeader)
}
// GetLanguage get language from http header
func GetLanguage(header http.Header) string {
return header.Get(LanguageHeader)
}
// GetSupplierAccount get supplier account from http header
func GetSupplierAccount(header http.Header) string {
if supplier := header.Get(SupplierAccountHeader); supplier != "" {
return supplier
}
if supplier := header.Get("X-Bkapi-Supplier-Account"); supplier != "" {
return supplier
}
if supplier := header.Get("HTTP_BK_SUPPLIER_ACCOUNT"); supplier != "" {
header.Set("HTTP_BLUEKING_SUPPLIER_ID", supplier)
return supplier
}
if supplier := header.Get("HTTP_BLUEKING_SUPPLIER_ID"); supplier != "" {
return supplier
}
return ""
}
// IsReqFromWeb check if request is from web server
func IsReqFromWeb(header http.Header) bool {
return header.Get(ReqFromWebHeader) == "true"
}
// GetReqRealIP get request real ip from http header
func GetReqRealIP(header http.Header) string {
return header.Get(ReqRealIPHeader)
}
// GetTXId get transaction id from http header
func GetTXId(header http.Header) string {
return header.Get(common.TransactionIdHeader)
}
// GetTXTimeout get transaction timeout from http header
func GetTXTimeout(header http.Header) string {
return header.Get(common.TransactionTimeoutHeader)
}
// SetRid set request id to http header
func SetRid(header http.Header, value string) {
header.Set(BkRidHeader, value)
}
// SetBkAuth set blueking api gateway authorization info to http header
func SetBkAuth(header http.Header, value string) http.Header {
h := make(http.Header)
for key := range header {
h.Set(key, header.Get(key))
}
h.Set(BkAuthHeader, value)
return h
}
// SetBkJWT set blueking api gateway jwt info to http header
func SetBkJWT(header http.Header, value string) {
header.Set(BkJWTHeader, value)
}
// SetAppCode set blueking app code to http header
func SetAppCode(header http.Header, value string) {
header.Set(AppCodeHeader, value)
}
// SetUser set username to http header
func SetUser(header http.Header, value string) {
header.Set(UserHeader, value)
header.Set("BK_User", value)
}
// SetUserToken set blueking user token to http header
func SetUserToken(header http.Header, value string) {
header.Set(UserTokenHeader, value)
}
// SetUserTicket set blueking user ticket to http header
func SetUserTicket(header http.Header, value string) {
header.Set(UserTicketHeader, value)
}
// SetLanguage set language to http header
func SetLanguage(header http.Header, value string) {
header.Set(LanguageHeader, value)
}
// SetSupplierAccount set supplier account to http header
func SetSupplierAccount(header http.Header, value string) {
header.Set(SupplierAccountHeader, value)
header.Set("X-Bkapi-Supplier-Account", value)
header.Set("HTTP_BLUEKING_SUPPLIER_ID", value)
header.Set("HTTP_BK_SUPPLIER_ACCOUNT", value)
}
// SetReqFromWeb set the request from web server flag to http header
func SetReqFromWeb(header http.Header) {
header.Set(ReqFromWebHeader, "true")
}
// SetReqRealIP set request real ip to http header
func SetReqRealIP(header http.Header, value string) {
header.Set(ReqRealIPHeader, value)
}
// SetTXId set transaction id to http header
func SetTXId(header http.Header, value string) {
header.Set(common.TransactionIdHeader, value)
}
// SetTXTimeout set transaction timeout to http header
func SetTXTimeout(header http.Header, value string) {
header.Set(common.TransactionTimeoutHeader, value)
}
// AddRid add request id to http header
func AddRid(header http.Header, value string) {
if GetRid(header) != value {
header.Add(BkRidHeader, value)
}
}
// AddUser add user to http header
func AddUser(header http.Header, value string) {
if GetUser(header) != value {
header.Add(UserHeader, value)
}
}
// AddSupplierAccount add supplier account to http header
func AddSupplierAccount(header http.Header, value string) {
if GetSupplierAccount(header) != value {
header.Add(SupplierAccountHeader, value)
}
}
// AddLanguage add language to http header
func AddLanguage(header http.Header, value string) {
if GetLanguage(header) != value {
header.Add(LanguageHeader, value)
}
}
// IsInnerReq check if request is inner request
func IsInnerReq(header http.Header) bool {
return header.Get(IsInnerReqHeader) == "true"
}
// SetIsInnerReqHeader set the request is inner flag to http header
func SetIsInnerReqHeader(header http.Header) {
header.Set(IsInnerReqHeader, "true")
}
// GetScene get audit scene from http header
func GetScene(header http.Header) string {
return header.Get(CCSceneHeader)
}
// GetSceneDesc get audit scene description from http header
func GetSceneDesc(header http.Header) string {
return header.Get(CCSceneDescHeader)
}
// GetSceneCode get audit scene code from http header
func GetSceneCode(header http.Header) string {
return header.Get(CCSceneCodeHeader)
}
// SetScene set audit scene to http header
func SetScene(header http.Header, value string) {
header.Set(CCSceneHeader, value)
}
// SetSceneDesc set audit scene description to http header
func SetSceneDesc(header http.Header, value string) {
header.Set(CCSceneDescHeader, value)
}
// SetSceneCode set audit scene code to http header
func SetSceneCode(header http.Header, value string) {
header.Set(CCSceneCodeHeader, value)
}