diff options
| author | Jeff Carr <[email protected]> | 2025-09-08 04:35:28 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-09-08 04:35:28 -0500 |
| commit | f67d6184139374f168037523f46623e2c32547fc (patch) | |
| tree | 2a843fd4b93f41c3242e3402110866c799e01fbf /post.go | |
| parent | aef7b966ffc2ed4245713ec4d705eab22ecc9644 (diff) | |
generic POST functionv0.0.5
Diffstat (limited to 'post.go')
| -rw-r--r-- | post.go | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -13,6 +13,52 @@ import ( "go.wit.com/log" ) +// standard protobuf POST +// returns *HttpRequst protobuf +func DoPost(baseURL string, route string, data []byte) (*HttpRequest, error) { + // if you ever have 'http://www.wit.com//' GO will regect the server recieving it. + // Even though the linux kernel gets the network payload + // also it never gives you an error about that, it just goes away invisably inside GO + tmpURL, _ := url.Parse(baseURL) // "http://forge.grid.wit.com:2520") + finalURL := tmpURL.JoinPath(route) // Correctly produces ...:2520/patches + + var err error + var req *http.Request + + log.Info("httppb.HttpPost to", finalURL.String()) + req, err = http.NewRequest(http.MethodPost, finalURL.String(), bytes.NewBuffer(data)) + if req == nil { + return nil, err + } + + username := os.Getenv("GIT_AUTHOR_NAME") + if username == "" { + usr, _ := user.Current() + username = usr.Username + } + req.Header.Set("author", username) + hostname, _ := os.Hostname() + req.Header.Set("hostname", hostname) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + reqPB, err := ReqToPB(req) + reqPB.URL = finalURL.String() + reqPB.Body = body + + return reqPB, nil +} + func HttpPost(baseURL string, route string, data []byte) ([]byte, error) { // Fix using url.JoinPath (Best Practice) tmpURL, _ := url.Parse(baseURL) // "http://forge.grid.wit.com:2520") |
