mirror of
https://gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud
synced 2025-07-03 14:32:25 +00:00
Added Apps support, added full UserUpdate and create
This commit is contained in:
58
utils.go
Normal file
58
utils.go
Normal file
@ -0,0 +1,58 @@
|
||||
package gonextcloud
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
req "github.com/levigross/grequests"
|
||||
"github.com/partitio/gonextcloud/types"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (c *Client) baseRequest(route *url.URL, name string, subroute string, ro *req.RequestOptions, method string) (*req.Response, error) {
|
||||
if !c.loggedIn() {
|
||||
return nil, unauthorized
|
||||
}
|
||||
u := c.baseURL.ResolveReference(route)
|
||||
if name != "" {
|
||||
u.Path = path.Join(u.Path, name)
|
||||
}
|
||||
if subroute != "" {
|
||||
u.Path = path.Join(u.Path, subroute)
|
||||
}
|
||||
var (
|
||||
res *req.Response
|
||||
err error
|
||||
)
|
||||
if method == http.MethodGet {
|
||||
res, err = c.session.Get(u.String(), ro)
|
||||
} else if method == http.MethodPost {
|
||||
res, err = c.session.Post(u.String(), ro)
|
||||
} else if method == http.MethodPut {
|
||||
res, err = c.session.Put(u.String(), ro)
|
||||
} else if method == http.MethodDelete {
|
||||
res, err = c.session.Delete(u.String(), ro)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// As we cannot read the ReaderCloser twice, we use the string content
|
||||
js := res.String()
|
||||
var r types.BaseResponse
|
||||
json.Unmarshal([]byte(js), &r)
|
||||
if r.Ocs.Meta.Statuscode != 100 {
|
||||
err := types.ErrorFromMeta(r.Ocs.Meta)
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func reformatJSON(json string) string {
|
||||
// Nextcloud encode boolean as string
|
||||
json = strings.Replace(json, "\"true\"", "true", -1)
|
||||
json = strings.Replace(json, "\"false\"", "false", -1)
|
||||
// Nextcloud encode quota as an empty array for never connected users
|
||||
json = strings.Replace(json, "\"quota\":[],", "", -1)
|
||||
return json
|
||||
}
|
Reference in New Issue
Block a user