package gonextcloud import ( req "github.com/levigross/grequests" "gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud/types" "net/url" ) // Client is the API client that performs all operations against a Nextcloud server. type Client struct { baseURL *url.URL username string password string session *req.Session headers map[string]string capabilities *types.Capabilities version *types.Version apps *Apps appsConfig *AppsConfig groupFolders *GroupFolders notifications *Notifications shares *Shares users *Users groups *Groups } // NewClient create a new Client from the Nextcloud Instance URL func NewClient(hostname string) (*Client, error) { baseURL, err := url.ParseRequestURI(hostname) if err != nil { baseURL, err = url.ParseRequestURI("https://" + hostname) if err != nil { return nil, err } } c := &Client{ baseURL: baseURL, headers: map[string]string{ "OCS-APIREQUEST": "true", "Accept": "application/json", }, } c.apps = &Apps{c} c.appsConfig = &AppsConfig{c} c.groupFolders = &GroupFolders{c} c.notifications = &Notifications{c} c.shares = &Shares{c} c.users = &Users{c} c.groups = &Groups{c} return c, nil } //Apps return the Apps client Interface func (c *Client) Apps() types.Apps { return c.apps } //AppsConfig return the AppsConfig client Interface func (c *Client) AppsConfig() types.AppsConfig { return c.appsConfig } //GroupFolders return the GroupFolders client Interface func (c *Client) GroupFolders() types.GroupFolders { return c.groupFolders } //Notifications return the Notifications client Interface func (c *Client) Notifications() types.Notifications { return c.notifications } //Shares return the Shares client Interface func (c *Client) Shares() types.Shares { return c.shares } //Users return the Users client Interface func (c *Client) Users() types.Users { return c.users } //Groups return the Groups client Interface func (c *Client) Groups() types.Groups { return c.groups }