github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/cmd/auth/utils/utils.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package utils 21 22 import ( 23 "context" 24 "net/http" 25 "net/url" 26 "os" 27 "strings" 28 29 "github.com/mattn/go-isatty" 30 ) 31 32 func IsTTY() bool { 33 return isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd()) 34 } 35 36 func NewRequest(ctx context.Context, url string, payload url.Values) (*http.Request, error) { 37 req, err := http.NewRequestWithContext( 38 ctx, 39 http.MethodPost, 40 url, 41 strings.NewReader(payload.Encode()), 42 ) 43 if err != nil { 44 return nil, err 45 } 46 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") 47 req.Header.Set("Accept", "application/json") 48 return req, nil 49 } 50 51 func NewFullRequest(ctx context.Context, url string, method string, header map[string]string, body string) (*http.Request, error) { 52 req, err := http.NewRequestWithContext( 53 ctx, 54 method, 55 url, 56 strings.NewReader(body), 57 ) 58 if err != nil { 59 return nil, err 60 } 61 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") 62 req.Header.Set("Accept", "application/json") 63 for key, value := range header { 64 req.Header.Set(key, value) 65 } 66 return req, nil 67 }