Add managereports endpoints for global and board specific reports fetching

master
Thomas Lynch 1 year ago
parent 1668af570a
commit bffc697b97
  1. 51
      app/manage.go
  2. 43
      example.go

@ -5,6 +5,8 @@ import (
"fmt"
"jschan/app/models"
"net/http"
"net/url"
"strconv"
)
type GetManageRecentOptions struct {
@ -35,3 +37,52 @@ func (c *Client) GetManageRecent(ctx context.Context, options *GetManageRecentOp
return res, nil
}
type GetManageReportsOptions struct {
Page int
IP string
Board string
}
type GetManageReportsResponse struct {
Reports []models.Post `json:"reports"`
Page int `json:"page"`
IP models.IP `json:"ip"`
QueryString string `json:"queryString"`
}
func (c *Client) GetManageReports(ctx context.Context, options *GetManageReportsOptions) (*GetManageReportsResponse, error) {
query := url.Values{}
if options != nil {
if options.IP != "" {
query.Set("ip", options.IP)
}
if options.Page != 0 {
query.Set("page", strconv.Itoa(options.Page))
}
}
url := fmt.Sprintf("%s/globalmanage/reports.json", c.BaseURL)
if options != nil && options.Board != "" {
url = fmt.Sprintf("%s/%s/manage/reports.json", c.BaseURL, options.Board)
}
if len(query.Encode()) > 0 {
url = fmt.Sprintf("%s?%s", url, query.Encode())
}
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
res := GetManageReportsResponse{}
if err := c.sendRequest(req, &res, nil); err != nil {
return nil, err
}
return &res, nil
}

@ -1,22 +1,41 @@
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"jschan/client"
"context"
"fmt"
"jschan/app"
)
func main() {
a := app.New()
w := a.NewWindow("jschan")
content := container.NewMax()
content.Objects = []fyne.CanvasObject{client.Show(w)}
w.SetContent(content)
w.Resize(fyne.NewSize(750, 750))
w.ShowAndRun()
client := jschan.NewClient("http://dev-jschan.lan")
ctx := context.Background()
return
loginOptions := &jschan.PostLoginOptions{
//Credentials for a private dev jschan
Username: "admin",
Password: "WjPQLl7mOGsjpRjPezY8FsCdnXI=",
}
err := client.Login(ctx, loginOptions)
if err != nil {
fmt.Println(err)
}
if client.SessionCookie != "" {
fmt.Printf("Logged in as user %s\n", loginOptions.Username)
if _, err := client.GetCSRFToken(ctx); err != nil {
fmt.Println(err)
}
}
manageReportsOptions := &jschan.GetManageReportsOptions{
// Page: 0,
// IP: "10.0.0.192",
// Board: "test",
}
reports, err2 := client.GetManageReports(ctx, manageReportsOptions)
if err2 != nil {
fmt.Println(err2)
}
fmt.Printf("Fetched %d reports\n", len(reports.Reports))
}

Loading…
Cancel
Save