github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/system/gate/common/response.go (about) 1 // This file is part of the Smart Home 2 // Program complex distribution https://github.com/e154/smart-home 3 // Copyright (C) 2023, Filippov Alex 4 // 5 // This library is free software: you can redistribute it and/or 6 // modify it under the terms of the GNU Lesser General Public 7 // License as published by the Free Software Foundation; either 8 // version 3 of the License, or (at your option) any later version. 9 // 10 // This library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // Library General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public 16 // License along with this library. If not, see 17 // <https://www.gnu.org/licenses/>. 18 19 package common 20 21 import ( 22 "fmt" 23 "net/http" 24 ) 25 26 // HTTPResponse is a serializable version of http.Response ( with only useful fields ) 27 type HTTPResponse struct { 28 StatusCode int 29 Header http.Header 30 ContentLength int64 31 } 32 33 // SerializeHTTPResponse create a new HTTPResponse from a http.Response 34 func SerializeHTTPResponse(resp *http.Response) *HTTPResponse { 35 r := new(HTTPResponse) 36 r.StatusCode = resp.StatusCode 37 r.Header = resp.Header 38 r.ContentLength = resp.ContentLength 39 return r 40 } 41 42 // NewHTTPResponse creates a new HTTPResponse 43 func NewHTTPResponse() (r *HTTPResponse) { 44 r = new(HTTPResponse) 45 r.Header = make(http.Header) 46 return 47 } 48 49 // ProxyError log error and return a HTTP 526 error with the message 50 func ProxyError(w http.ResponseWriter, err error) { 51 fmt.Println(err.Error()) 52 http.Error(w, err.Error(), 526) 53 } 54 55 // ProxyErrorf log error and return a HTTP 526 error with the message 56 func ProxyErrorf(w http.ResponseWriter, format string, args ...interface{}) { 57 ProxyError(w, fmt.Errorf(format, args...)) 58 }