diff options
Diffstat (limited to 'http.go')
| -rw-r--r-- | http.go | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -0,0 +1,77 @@ +// Copyright 1994-2025 WIT.COM Inc Licensed GPL 3.0 + +package zoopb + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http" + "os/user" + + "go.wit.com/log" +) + +func (m *Machine) HttpPostMachine(url string) ([]byte, error) { + if m == nil { + // run f.InitMachine() here? + log.Info("you must run f.InitMachine()") + return nil, fmt.Errorf("you must run f.InitMachine()") + } + if m.Hostname == "" { + log.Info("WTF. hostname is blank") + } else { + log.Info("GOOD. hostname is set to", m.Hostname) + } + log.Info("GOOD2. hostname is set to", m.Hostname) + msg, err := m.Marshal() + if err != nil { + log.Info("proto.Marshal() failed:", err) + return nil, err + } + log.Info("GOOD3. hostname is set to", m.Hostname) + + check := new(Machine) + check.Unmarshal(msg) + if check == nil { + log.Info("WTF. check == nil") + } + log.Info("good? check.hostname =", m.Hostname) + return m.HttpPost(url, msg) +} + +func (m *Machine) HttpPost(url string, data []byte) ([]byte, error) { + var err error + var req *http.Request + + req, err = http.NewRequest(http.MethodPost, url, bytes.NewBuffer(data)) + // log.Info("httpPost() with len", len(data), "url", url) + + usr, _ := user.Current() + req.Header.Set("author", usr.Username) + /* + if f.Machine == nil { + // run f.InitMachine() here? + log.Info("you must run f.InitMachine()") + return nil, fmt.Errorf("you must run f.InitMachine()") + } + */ + req.Header.Set("hostname", m.Hostname) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + log.Error(err) + return []byte("client.Do(req) error"), err + } + defer resp.Body.Close() + // log.Info("httpPost() with len", len(data)) + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Error(err) + return body, err + } + + return body, nil +} |
