From e470de205a8d122af9d5689e6a0ba7fb096b7009 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 20 Jan 2025 03:18:44 -0600 Subject: add GetPatchsets() --- doGetPatchsets.go | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ post.go | 50 ---------------------------------- windowPatches.go | 35 ++++++++++++++++++------ 3 files changed, 107 insertions(+), 58 deletions(-) create mode 100644 doGetPatchsets.go delete mode 100644 post.go diff --git a/doGetPatchsets.go b/doGetPatchsets.go new file mode 100644 index 0000000..18db441 --- /dev/null +++ b/doGetPatchsets.go @@ -0,0 +1,80 @@ +// Copyright 2024 WIT.COM Inc Licensed GPL 3.0 + +package main + +import ( + "bytes" + "io/ioutil" + "net/http" + "os" + "os/user" + + "go.wit.com/lib/protobuf/forgepb" + "go.wit.com/log" +) + +var forgeURL string = "https://go.wit.com/" + +func GetPatchesets() (*forgepb.Patchsets, error) { + url := forgeURL + "/GetPatchsets" + log.Info("GetPatchsets() url", url) + body, err := httpPost(url, nil) + if err != nil { + log.Info("httpPost() failed:", err) + return nil, err + } + log.Info("GetPatchets() len(body)", len(body)) + var psets *forgepb.Patchsets + psets = new(forgepb.Patchsets) + err = psets.Unmarshal(body) + if err != nil { + log.Info("Unmarshal failed", err) + return nil, err + } + /* + filename := filepath.Join("/tmp", pbfile) + f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + f.Write(body) + f.Close() + */ + return psets, nil +} + +func httpPost(url string, data []byte) ([]byte, error) { + var err error + var req *http.Request + + // data := []byte("some junk") + // url := "https://go.wit.com/register/" + + 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) + hostname, _ := os.Hostname() + req.Header.Set("hostname", 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 + } + + // test := strings.TrimSpace(string(body)) + // log.Info("go.wit.com returned body:", test) + // if test == "OK" { + // return body, nil + // } + + return body, nil +} diff --git a/post.go b/post.go deleted file mode 100644 index e0a7c4a..0000000 --- a/post.go +++ /dev/null @@ -1,50 +0,0 @@ -package main - -import ( - "bytes" - "io/ioutil" - "net/http" - "os" - "os/user" - - "go.wit.com/log" -) - -func httpPost(url string, data []byte) ([]byte, error) { - var err error - var req *http.Request - - // data := []byte("some junk") - // url := "https://go.wit.com/register/" - - 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) - hostname, _ := os.Hostname() - req.Header.Set("hostname", 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 - } - - // test := strings.TrimSpace(string(body)) - // log.Info("go.wit.com returned body:", test) - // if test == "OK" { - // return body, nil - // } - - return body, nil -} diff --git a/windowPatches.go b/windowPatches.go index cab0323..907a796 100644 --- a/windowPatches.go +++ b/windowPatches.go @@ -10,14 +10,12 @@ import ( ) type patchesWindow struct { - once sync.Once - win *gadgets.BasicWindow - stack *gui.Node - - // the top box of the repolist window - shelf *gui.Node - - summary *patchSummary + once sync.Once // only init() the window once + win *gadgets.BasicWindow // the patches window + stack *gui.Node // the top box set as vertical + shelf *gui.Node // the first box in the stack, set as horizontal + grid *gui.Node // the list of available patches + summary *patchSummary // summary of current patches } func (r *patchesWindow) Hidden() bool { @@ -62,6 +60,8 @@ func (r *patchesWindow) initWindow() { r.win.Hide() } + r.grid = r.stack.NewGrid("", 0, 0) + r.shelf = r.initGroup() r.summary = submitPatchesBox(r.stack) } @@ -90,5 +90,24 @@ func (r *patchesWindow) initGroup() *gui.Node { me.patchWin.initGroup() }) + hbox.NewButton("Get Patchsets", func() { + // if psets, err := me.forge.GetPatchesets(); err != nil { + psets, err := GetPatchesets() + if err != nil { + log.Info(err) + return + } + all := psets.All() + for all.Scan() { + pset := all.Next() + log.Info(pset) + } + /* + if err := listPatches(); err != nil { + log.Info(err) + } + */ + }) + return vbox } -- cgit v1.2.3