From 3bc595757c6109878e4b55fec534f915f8381690 Mon Sep 17 00:00:00 2001 From: celogeek <65178+celogeek@users.noreply.github.com> Date: Tue, 14 Dec 2021 17:04:59 +0100 Subject: [PATCH] add cookie and revamp post --- internal/piwigo/post.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/internal/piwigo/post.go b/internal/piwigo/post.go index ac89d70..20d7c74 100644 --- a/internal/piwigo/post.go +++ b/internal/piwigo/post.go @@ -3,9 +3,9 @@ package piwigo import ( "encoding/json" "fmt" - "io/ioutil" "net/http" "net/url" + "strings" ) func (p *Piwigo) BuildUrl(method string) (string, error) { @@ -22,29 +22,34 @@ func (p *Piwigo) BuildUrl(method string) (string, error) { return Url.String(), nil } -func (p *Piwigo) Post(method string, req *url.Values, resp interface{}) error { +func (p *Piwigo) Post(method string, form *url.Values, resp interface{}) error { Url, err := p.BuildUrl(method) if err != nil { return err } - r, err := http.PostForm(Url, *req) + req, err := http.NewRequest("POST", Url, strings.NewReader(form.Encode())) + if err != nil { + return err + } + + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + if p.Token != "" { + req.AddCookie(&http.Cookie{Name: "pwg_id", Value: p.Token}) + } + + r, err := http.DefaultClient.Do(req) if err != nil { return err } defer r.Body.Close() - b, err := ioutil.ReadAll(r.Body) - if err != nil { - return err - } - Result := PiwigoResult{ Result: resp, } - err = json.Unmarshal(b, &Result) + err = json.NewDecoder(r.Body).Decode(&Result) if err != nil { return err }