package gitpb import ( "bytes" "net/http" "net/url" "os" "os/user" "go.wit.com/lib/protobuf/httppb" "go.wit.com/log" ) func (p *Repos) HttpPost(baseURL string, route string) (*Repos, 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("/repos/", route) data, _ := p.Marshal() var err error var req *http.Request log.Info("reposs PB HttpPost", finalURL.String()) req, err = http.NewRequest(http.MethodPost, finalURL.String(), bytes.NewBuffer(data)) if req == nil { return nil, err } usr, _ := user.Current() req.Header.Set("author", usr.Username) hostname, _ := os.Hostname() req.Header.Set("hostname", hostname) newdata, err := httppb.PostReq(req) newpb := NewRepos() err = newpb.Unmarshal(newdata) log.Infof("repos PB HttpPost %s sent len(%d) got len(%d)\n", finalURL.String(), p.Len(), newpb.Len()) return newpb, err }