From aeeb63a0ee060287e4101f186848fe6ddee2c8eb Mon Sep 17 00:00:00 2001 From: joelei Date: Sat, 6 Dec 2025 18:03:31 +0800 Subject: [PATCH] add check status --- rest/transport/check_status.go | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 rest/transport/check_status.go diff --git a/rest/transport/check_status.go b/rest/transport/check_status.go new file mode 100644 index 0000000..a7e4356 --- /dev/null +++ b/rest/transport/check_status.go @@ -0,0 +1,41 @@ +/* + * TencentBlueKing is pleased to support the open source community by making + * 蓝鲸智云 - 配置平台 (BlueKing - CMDB) available. + * Copyright (C) 2025 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 transport + +import ( + "fmt" + "net/http" +) + +// HTTPIsSuccess method returns ok if HTTP status `code >= 200 and <= 299` otherwise a error. +func HTTPIsSuccess(next http.RoundTripper) http.RoundTripper { + f := func(req *http.Request) (*http.Response, error) { + resp, err := next.RoundTrip(req) + if err != nil { + return nil, err + } + + // HTTP status `code >= 200 and <= 299` + if resp.StatusCode >= 200 && resp.StatusCode <= 299 { + return resp, nil + } + + return nil, fmt.Errorf("http status not success, code=%d", resp.StatusCode) + } + + return RoundTripFunc(f) +}