gonextcloud/docs/README.md

36 KiB
Raw Blame History

gonextcloud

-- import "gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud"

Package gonextcloud is a Go client for the Nextcloud Provisioning API.

For more information about the Provisioning API, see the documentation: https://docs.nextcloud.com/server/13/admin_manual/configuration_user/user_provisioning_api.html

Usage

You use the library by creating a client object and calling methods on it.

For example, to list all the Nextcloud's instance users:

package main

import (
	"fmt"
	"gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud"
)

func main() {
	url := "https://www.mynextcloud.com"
	username := "admin"
	password := "password"
	c, err := gonextcloud.NewClient(url)
	if err != nil {
		panic(err)
	}
	if err := c.Login(username, password); err != nil {
		panic(err)
	}
	defer c.Logout()

	users, err := c.Users().List()
	if err != nil {
		panic(err)
	}
	fmt.Println("Users :", users)
}

Usage

type Apps

type Apps struct {
}

Apps contains all Apps available actions

func (*Apps) Disable

func (a *Apps) Disable(name string) error

Disable disables an app

func (*Apps) Enable

func (a *Apps) Enable(name string) error

Enable enables an app

func (*Apps) Infos

func (a *Apps) Infos(name string) (types.App, error)

Infos return the app's details

func (*Apps) List

func (a *Apps) List() ([]string, error)

List return the list of the Nextcloud Apps

func (*Apps) ListDisabled

func (a *Apps) ListDisabled() ([]string, error)

ListDisabled lists the disabled apps

func (*Apps) ListEnabled

func (a *Apps) ListEnabled() ([]string, error)

ListEnabled lists the enabled apps

type AppsConfig

type AppsConfig struct {
}

AppsConfig contains all Apps Configuration available actions

func (*AppsConfig) DeleteValue

func (a *AppsConfig) DeleteValue(id, key, value string) error

DeleteValue delete the config value and (!! be careful !!) the key

func (*AppsConfig) Details

func (a *AppsConfig) Details(appID string) (map[string]string, error)

Details returns all the config's key, values pair of the app

func (*AppsConfig) Get

func (a *AppsConfig) Get() (map[string]map[string]string, error)

Get returns all apps AppConfigDetails

func (*AppsConfig) Keys

func (a *AppsConfig) Keys(id string) (keys []string, err error)

Keys returns the app's config keys

func (*AppsConfig) List

func (a *AppsConfig) List() (apps []string, err error)

List lists all the available apps

func (*AppsConfig) SetValue

func (a *AppsConfig) SetValue(id, key, value string) error

SetValue set the config value for the given app's key

func (*AppsConfig) Value

func (a *AppsConfig) Value(id, key string) (string, error)

Value get the config value for the given app's key

type Client

type Client struct {
}

Client is the API client that performs all operations against a Nextcloud server.

func NewClient

func NewClient(hostname string) (*Client, error)

NewClient create a new Client from the Nextcloud Instance URL

func (*Client) Apps

func (c *Client) Apps() types.Apps

func (*Client) AppsConfig

func (c *Client) AppsConfig() types.AppsConfig

func (*Client) GroupFolders

func (c *Client) GroupFolders() types.GroupFolders

func (*Client) Groups

func (c *Client) Groups() types.Groups

func (*Client) Login

func (c *Client) Login(username string, password string) error

Login perform login and create a session with the Nextcloud API.

func (*Client) Logout

func (c *Client) Logout() error

Logout logs out from the Nextcloud API, close the session and delete session's cookie

func (*Client) Monitoring

func (c *Client) Monitoring() (*types.Monitoring, error)

Monitoring return nextcloud monitoring statistics

func (*Client) Notifications

func (c *Client) Notifications() types.Notifications

func (*Client) Shares

func (c *Client) Shares() types.Shares

func (*Client) Users

func (c *Client) Users() types.Users

type GroupFolders

type GroupFolders struct {
}

GroupFolders contains all Groups Folders available actions

func (*GroupFolders) AddGroup

func (g *GroupFolders) AddGroup(folderID int, groupName string) error

AddGroup adds group to folder

func (*GroupFolders) Create

func (g *GroupFolders) Create(name string) (id int, err error)

Create creates a group folder

func (*GroupFolders) Get

func (g *GroupFolders) Get(id int) (types.GroupFolder, error)

Get returns the group folder details

func (*GroupFolders) List

func (g *GroupFolders) List() (map[int]types.GroupFolder, error)

List returns the groups folders

func (*GroupFolders) RemoveGroup

func (g *GroupFolders) RemoveGroup(folderID int, groupName string) error

RemoveGroup remove a group from the group folder

func (*GroupFolders) Rename

func (g *GroupFolders) Rename(groupID int, name string) error

Rename renames the group folder

func (*GroupFolders) SetGroupPermissions

func (g *GroupFolders) SetGroupPermissions(folderID int, groupName string, permission types.SharePermission) error

SetGroupPermissions set groups permissions

func (*GroupFolders) SetQuota

func (g *GroupFolders) SetQuota(folderID int, quota int) error

SetQuota set quota on the group folder. quota in bytes, use -3 for unlimited

type Groups

type Groups struct {
}

Groups contains all Groups available actions

func (*Groups) Create

func (g *Groups) Create(name string) error

Create creates a group

func (*Groups) Delete

func (g *Groups) Delete(name string) error

Delete deletes the group

func (*Groups) List

func (g *Groups) List() ([]string, error)

List lists the Nextcloud groups

func (*Groups) ListDetails

func (g *Groups) ListDetails() ([]types.Group, error)

ListDetails lists the Nextcloud groups

func (g *Groups) Search(search string) ([]string, error)

Search return the list of groups matching the search string

func (*Groups) SubAdminList

func (g *Groups) SubAdminList(name string) ([]string, error)

SubAdminList lists the group's subadmins

func (*Groups) Users

func (g *Groups) Users(name string) ([]string, error)

Users list the group's users

type Notifications

type Notifications struct {
}

Notifications contains all Notifications available actions

func (*Notifications) AdminAvailable

func (n *Notifications) AdminAvailable() error

AdminAvailable returns an error if the admin-notifications app is not installed

func (*Notifications) Available

func (n *Notifications) Available() error

Available returns an error if the notifications app is not installed

func (*Notifications) Create

func (n *Notifications) Create(userID, title, message string) error

Create creates a notification (if the user is an admin)

func (*Notifications) Delete

func (n *Notifications) Delete(id int) error

Delete deletes the notification corresponding to the id

func (*Notifications) DeleteAll

func (n *Notifications) DeleteAll() error

DeleteAll deletes all notifications

func (*Notifications) Get

func (n *Notifications) Get(id int) (types.Notification, error)

Get returns the notification corresponding to the id

func (*Notifications) List

func (n *Notifications) List() ([]types.Notification, error)

List returns all the notifications

type Routes

type Routes struct {
}

Routes references the available routes

type Shares

type Shares struct {
}

Shares contains all Shares available actions

func (*Shares) Create

func (s *Shares) Create(
	path string,
	shareType types.ShareType,
	permission types.SharePermission,
	shareWith string,
	publicUpload bool,
	password string,
) (types.Share, error)

Create create a share

func (*Shares) Delete

func (s *Shares) Delete(shareID int) error

Delete Remove the given share.

func (*Shares) Get

func (s *Shares) Get(shareID string) (types.Share, error)

Get information about a known Share

func (*Shares) GetFromPath

func (s *Shares) GetFromPath(path string, reshares bool, subfiles bool) ([]types.Share, error)

GetFromPath return shares from a specific file or folder

func (*Shares) List

func (s *Shares) List() ([]types.Share, error)

List list all shares of the logged in user

func (*Shares) Update

func (s *Shares) Update(shareUpdate types.ShareUpdate) error

Update update share details expireDate expireDate expects a well formatted date string, e.g. YYYY-MM-DD

func (*Shares) UpdateExpireDate

func (s *Shares) UpdateExpireDate(shareID int, expireDate string) error

UpdateExpireDate updates the share's expire date expireDate expects a well formatted date string, e.g. YYYY-MM-DD

func (*Shares) UpdatePassword

func (s *Shares) UpdatePassword(shareID int, password string) error

UpdatePassword updates share password

func (*Shares) UpdatePermissions

func (s *Shares) UpdatePermissions(shareID int, permissions types.SharePermission) error

UpdatePermissions update permissions

func (*Shares) UpdatePublicUpload

func (s *Shares) UpdatePublicUpload(shareID int, public bool) error

UpdatePublicUpload enable or disable public upload

type Users

type Users struct {
}

Users contains all Users available actions

func (*Users) Create

func (u *Users) Create(username string, password string, user *types.User) error

Create create a new user

func (*Users) CreateWithoutPassword

func (u *Users) CreateWithoutPassword(username, email, displayName string) error

CreateWithoutPassword create a user without provisioning a password, the email address must be provided to send an init password email

func (*Users) Delete

func (u *Users) Delete(name string) error

Delete delete the user

func (*Users) Disable

func (u *Users) Disable(name string) error

Disable disables the user

func (*Users) Enable

func (u *Users) Enable(name string) error

Enable enables the user

func (*Users) Get

func (u *Users) Get(name string) (*types.User, error)

Get return the details about the specified user

func (*Users) GroupAdd

func (u *Users) GroupAdd(name string, group string) error

GroupAdd adds a the user to the group

func (*Users) GroupDemote

func (u *Users) GroupDemote(name string, group string) error

GroupDemote demotes the user

func (*Users) GroupList

func (u *Users) GroupList(name string) ([]string, error)

GroupList lists the user's groups

func (*Users) GroupPromote

func (u *Users) GroupPromote(name string, group string) error

GroupPromote promotes the user as group admin

func (*Users) GroupRemove

func (u *Users) GroupRemove(name string, group string) error

GroupRemove removes the user from the group

func (*Users) GroupSubAdminList

func (u *Users) GroupSubAdminList(name string) ([]string, error)

GroupSubAdminList lists the groups where he is subadmin

func (*Users) List

func (u *Users) List() ([]string, error)

List return the Nextcloud'user list

func (*Users) ListDetails

func (u *Users) ListDetails() (map[string]types.User, error)

ListDetails return a map of user with details

func (u *Users) Search(search string) ([]string, error)

Search returns the users whose name match the search string

func (*Users) SendWelcomeEmail

func (u *Users) SendWelcomeEmail(name string) error

SendWelcomeEmail (re)send the welcome mail to the user (return an error if the user has not configured his email)

func (*Users) Update

func (u *Users) Update(user *types.User) error

Update takes a *types.Users struct to update the user's information

func (*Users) UpdateAddress

func (u *Users) UpdateAddress(name string, address string) error

UpdateAddress update the user's address

func (*Users) UpdateDisplayName

func (u *Users) UpdateDisplayName(name string, displayName string) error

UpdateDisplayName update the user's display name

func (*Users) UpdateEmail

func (u *Users) UpdateEmail(name string, email string) error

UpdateEmail update the user's email

func (*Users) UpdatePassword

func (u *Users) UpdatePassword(name string, password string) error

UpdatePassword update the user's password

func (*Users) UpdatePhone

func (u *Users) UpdatePhone(name string, phone string) error

UpdatePhone update the user's phone

func (*Users) UpdateQuota

func (u *Users) UpdateQuota(name string, quota int) error

UpdateQuota update the user's quota (bytes)

func (*Users) UpdateTwitter

func (u *Users) UpdateTwitter(name string, twitter string) error

UpdateTwitter update the user's twitter

func (*Users) UpdateWebSite

func (u *Users) UpdateWebSite(name string, website string) error

UpdateWebSite update the user's website

types

-- import "gitlab.bertha.cloud/partitio/Nextcloud-Partitio/gonextcloud/types"

Usage

const (
	UserShare           ShareType = 0
	GroupShare          ShareType = 1
	PublicLinkShare     ShareType = 3
	FederatedCloudShare ShareType = 6

	ReadPermission    SharePermission = 1
	UpdatePermission  SharePermission = 2
	CreatePermission  SharePermission = 4
	DeletePermission  SharePermission = 8
	ReSharePermission SharePermission = 16
	AllPermissions    SharePermission = 31
)

type APIError

type APIError struct {
	Code    int
	Message string
}

APIError contains the returned error code and message from the Nextcloud's API

func ErrorFromMeta

func ErrorFromMeta(meta Meta) *APIError

ErrorFromMeta return a types.APIError from the Response's types.Meta

func (*APIError) Error

func (e *APIError) Error() string

Error return the types.APIError string

type ActiveUsers

type ActiveUsers struct {
	Last5Minutes int `json:"last5minutes"`
	Last1Hour    int `json:"last1hour"`
	Last24Hours  int `json:"last24hours"`
}

type App

type App struct {
	ID            string   `json:"id"`
	Ocsid         string   `json:"ocsid"`
	Name          string   `json:"name"`
	Summary       string   `json:"summary"`
	Description   string   `json:"description"`
	Licence       string   `json:"licence"`
	Author        string   `json:"author"`
	Version       string   `json:"version"`
	Namespace     string   `json:"namespace"`
	Types         []string `json:"types"`
	Documentation struct {
		Admin     string `json:"admin"`
		Developer string `json:"developer"`
		User      string `json:"user"`
	} `json:"documentation"`
	Category   []string `json:"category"`
	Website    string   `json:"website"`
	Bugs       string   `json:"bugs"`
	Repository struct {
		Attributes struct {
			Type string `json:"type"`
		} `json:"@attributes"`
		Value string `json:"@value"`
	} `json:"repository"`
	Screenshot   []interface{} `json:"screenshot"`
	Dependencies struct {
		Owncloud struct {
			Attributes struct {
				MinVersion string `json:"min-version"`
				MaxVersion string `json:"max-version"`
			} `json:"@attributes"`
		} `json:"owncloud"`
		Nextcloud struct {
			Attributes struct {
				MinVersion string `json:"min-version"`
				MaxVersion string `json:"max-version"`
			} `json:"@attributes"`
		} `json:"nextcloud"`
	} `json:"dependencies"`
	Settings struct {
		Admin           []string      `json:"admin"`
		AdminSection    []string      `json:"admin-section"`
		Personal        []interface{} `json:"personal"`
		PersonalSection []interface{} `json:"personal-section"`
	} `json:"settings"`
	Info        []interface{} `json:"info"`
	Remote      []interface{} `json:"remote"`
	Public      []interface{} `json:"public"`
	RepairSteps struct {
		Install       []interface{} `json:"install"`
		PreMigration  []interface{} `json:"pre-migration"`
		PostMigration []interface{} `json:"post-migration"`
		LiveMigration []interface{} `json:"live-migration"`
		Uninstall     []interface{} `json:"uninstall"`
	} `json:"repair-steps"`
	BackgroundJobs     []interface{} `json:"background-jobs"`
	TwoFactorProviders []interface{} `json:"two-factor-providers"`
	Commands           []interface{} `json:"commands"`
	Activity           struct {
		Filters   []interface{} `json:"filters"`
		Settings  []interface{} `json:"settings"`
		Providers []interface{} `json:"providers"`
	} `json:"activity"`
}

App

type AppConfigResponse

type AppConfigResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Data []string `json:"data"`
		} `json:"data"`
	} `json:"ocs"`
}

type AppListResponse

type AppListResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Apps []string `json:"apps"`
		} `json:"data"`
	} `json:"ocs"`
}

AppListResponse

type AppResponse

type AppResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data App  `json:"data"`
	} `json:"ocs"`
}

AppResponse

type AppcConfigValueResponse

type AppcConfigValueResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Data string `json:"data"`
		} `json:"data"`
	} `json:"ocs"`
}

type Apps

type Apps interface {
	List() ([]string, error)
	ListEnabled() ([]string, error)
	ListDisabled() ([]string, error)
	Infos(name string) (App, error)
	Enable(name string) error
	Disable(name string) error
}

Apps available methods

type AppsConfig

type AppsConfig interface {
	List() (apps []string, err error)
	Keys(id string) (keys []string, err error)
	Value(id, key string) (string, error)
	SetValue(id, key, value string) error
	DeleteValue(id, key, value string) error
	Get() (map[string]map[string]string, error)
	Details(appID string) (map[string]string, error)
}

AppsConfig available methods

type Auth

type Auth interface {
	Login(username string, password string) error
	Logout() error
}

type BaseResponse

type BaseResponse struct {
	Ocs struct {
		Meta Meta     `json:"meta"`
		Data []string `json:"data"`
	} `json:"ocs"`
}

BaseResponse

type Capabilities

type Capabilities struct {
	Core struct {
		Pollinterval int    `json:"pollinterval"`
		WebdavRoot   string `json:"webdav-root"`
	} `json:"core"`
	Bruteforce struct {
		Delay int `json:"delay"`
	} `json:"bruteforce"`
	Activity struct {
		Apiv2 []string `json:"apiv2"`
	} `json:"activity"`
	Ocm struct {
		Enabled    bool   `json:"enabled"`
		APIVersion string `json:"apiVersion"`
		EndPoint   string `json:"endPoint"`
		ShareTypes []struct {
			Name      string `json:"name"`
			Protocols struct {
				Webdav string `json:"webdav"`
			} `json:"protocols"`
		} `json:"shareTypes"`
	} `json:"ocm"`
	Dav struct {
		Chunking string `json:"chunking"`
	} `json:"dav"`
	FilesSharing struct {
		APIEnabled bool `json:"api_enabled"`
		Public     struct {
			Enabled  bool `json:"enabled"`
			Password struct {
				Enforced bool `json:"enforced"`
			} `json:"password"`
			ExpireDate struct {
				Enabled bool `json:"enabled"`
			} `json:"expire_date"`
			SendMail        bool `json:"send_mail"`
			Upload          bool `json:"upload"`
			UploadFilesDrop bool `json:"upload_files_drop"`
		} `json:"public"`
		Resharing bool `json:"resharing"`
		User      struct {
			SendMail   bool `json:"send_mail"`
			ExpireDate struct {
				Enabled bool `json:"enabled"`
			} `json:"expire_date"`
		} `json:"user"`
		GroupSharing bool `json:"group_sharing"`
		Group        struct {
			Enabled    bool `json:"enabled"`
			ExpireDate struct {
				Enabled bool `json:"enabled"`
			} `json:"expire_date"`
		} `json:"group"`
		DefaultPermissions int `json:"default_permissions"`
		Federation         struct {
			Outgoing   bool `json:"outgoing"`
			Incoming   bool `json:"incoming"`
			ExpireDate struct {
				Enabled bool `json:"enabled"`
			} `json:"expire_date"`
		} `json:"federation"`
		Sharebymail struct {
			Enabled         bool `json:"enabled"`
			UploadFilesDrop struct {
				Enabled bool `json:"enabled"`
			} `json:"upload_files_drop"`
			Password struct {
				Enabled bool `json:"enabled"`
			} `json:"password"`
			ExpireDate struct {
				Enabled bool `json:"enabled"`
			} `json:"expire_date"`
		} `json:"sharebymail"`
	} `json:"files_sharing"`
	Notifications struct {
		OcsEndpoints       []string `json:"ocs-endpoints"`
		Push               []string `json:"push"`
		AdminNotifications []string `json:"admin-notifications"`
	} `json:"notifications"`
	PasswordPolicy struct {
		MinLength                int  `json:"minLength"`
		EnforceNonCommonPassword bool `json:"enforceNonCommonPassword"`
		EnforceNumericCharacters bool `json:"enforceNumericCharacters"`
		EnforceSpecialCharacters bool `json:"enforceSpecialCharacters"`
		EnforceUpperLowerCase    bool `json:"enforceUpperLowerCase"`
	} `json:"password_policy"`
	Theming struct {
		Name              string `json:"name"`
		URL               string `json:"url"`
		Slogan            string `json:"slogan"`
		Color             string `json:"color"`
		ColorText         string `json:"color-text"`
		ColorElement      string `json:"color-element"`
		Logo              string `json:"logo"`
		Background        string `json:"background"`
		BackgroundPlain   bool   `json:"background-plain"`
		BackgroundDefault bool   `json:"background-default"`
	} `json:"theming"`
	Files struct {
		Bigfilechunking  bool     `json:"bigfilechunking"`
		BlacklistedFiles []string `json:"blacklisted_files"`
		Undelete         bool     `json:"undelete"`
		Versioning       bool     `json:"versioning"`
	} `json:"files"`
	Registration struct {
		Enabled  bool   `json:"enabled"`
		APIRoot  string `json:"apiRoot"`
		APILevel string `json:"apiLevel"`
	} `json:"registration"`
}

Capabilities

type CapabilitiesResponse

type CapabilitiesResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Version      Version      `json:"version"`
			Capabilities Capabilities `json:"capabilities"`
		} `json:"data"`
	} `json:"ocs"`
}

CapabilitiesResponse

type Client

type Client interface {
	Apps() Apps
	AppsConfig() AppsConfig
	GroupFolders() GroupFolders
	Notifications() Notifications
	Shares() Shares
	Users() Users
	Groups() Groups
}

Client is the main client interface

type ErrorResponse

type ErrorResponse struct {
	Ocs struct {
		Meta Meta          `json:"meta"`
		Data []interface{} `json:"data"`
	} `json:"ocs"`
}

ErrorResponse

type Group

type Group struct {
	ID          string `json:"id"`
	Displayname string `json:"displayname"`
	UserCount   int    `json:"usercount"`
	Disabled    int    `json:"disabled"`
	CanAdd      bool   `json:"canAdd"`
	CanRemove   bool   `json:"canRemove"`
}

Group

type GroupFolder

type GroupFolder struct {
	ID         int                        `json:"id"`
	MountPoint string                     `json:"mount_point"`
	Groups     map[string]SharePermission `json:"groups"`
	Quota      int                        `json:"quota"`
	Size       int                        `json:"size"`
}

type GroupFolderBadFormatGroups

type GroupFolderBadFormatGroups struct {
	ID         int               `json:"id"`
	MountPoint string            `json:"mount_point"`
	Groups     map[string]string `json:"groups"`
	Quota      string            `json:"quota"`
	Size       int               `json:"size"`
}

func (*GroupFolderBadFormatGroups) FormatGroupFolder

func (gf *GroupFolderBadFormatGroups) FormatGroupFolder() GroupFolder

type GroupFolderBadFormatIDAndGroups

type GroupFolderBadFormatIDAndGroups struct {
	ID         string            `json:"id"`
	MountPoint string            `json:"mount_point"`
	Groups     map[string]string `json:"groups"`
	Quota      string            `json:"quota"`
	Size       int               `json:"size"`
}

func (*GroupFolderBadFormatIDAndGroups) FormatGroupFolder

func (gf *GroupFolderBadFormatIDAndGroups) FormatGroupFolder() GroupFolder

type GroupFolders

type GroupFolders interface {
	List() (map[int]GroupFolder, error)
	Get(id int) (GroupFolder, error)
	Create(name string) (id int, err error)
	Rename(groupID int, name string) error
	AddGroup(folderID int, groupName string) error
	RemoveGroup(folderID int, groupName string) error
	SetGroupPermissions(folderID int, groupName string, permission SharePermission) error
	SetQuota(folderID int, quota int) error
}

GroupFolders available methods

type GroupFoldersCreateResponse

type GroupFoldersCreateResponse struct {
	Ocs struct {
		Meta Meta                            `json:"meta"`
		Data GroupFolderBadFormatIDAndGroups `json:"data"`
	} `json:"ocs"`
}

type GroupFoldersListResponse

type GroupFoldersListResponse struct {
	Ocs struct {
		Meta Meta                                       `json:"meta"`
		Data map[string]GroupFolderBadFormatIDAndGroups `json:"data"`
	} `json:"ocs"`
}

type GroupFoldersResponse

type GroupFoldersResponse struct {
	Ocs struct {
		Meta Meta                       `json:"meta"`
		Data GroupFolderBadFormatGroups `json:"data"`
	} `json:"ocs"`
}

type GroupListDetailsResponse

type GroupListDetailsResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Groups []Group `json:"groups"`
		} `json:"data"`
	} `json:"ocs"`
}

GroupListDetailsResponse

type GroupListResponse

type GroupListResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Groups []string `json:"groups"`
		} `json:"data"`
	} `json:"ocs"`
}

GroupListResponse

type Groups

type Groups interface {
	List() ([]string, error)
	ListDetails() ([]Group, error)
	Users(name string) ([]string, error)
	Search(search string) ([]string, error)
	Create(name string) error
	Delete(name string) error
	SubAdminList(name string) ([]string, error)
}

Groups available methods

type Meta

type Meta struct {
	Status       string `json:"status"`
	Statuscode   int    `json:"statuscode"`
	Message      string `json:"message"`
	Totalitems   string `json:"totalitems"`
	Itemsperpage string `json:"itemsperpage"`
}

Meta

type Monitoring

type Monitoring struct {
	Nextcloud struct {
		System  System  `json:"system"`
		Storage Storage `json:"storage"`
		Shares  struct {
			NumShares               int `json:"num_shares"`
			NumSharesUser           int `json:"num_shares_user"`
			NumSharesGroups         int `json:"num_shares_groups"`
			NumSharesLink           int `json:"num_shares_link"`
			NumSharesLinkNoPassword int `json:"num_shares_link_no_password"`
			NumFedSharesSent        int `json:"num_fed_shares_sent"`
			NumFedSharesReceived    int `json:"num_fed_shares_received"`
		} `json:"shares"`
	} `json:"nextcloud"`
	Server struct {
		Webserver string `json:"webserver"`
		Php       struct {
			Version           string `json:"version"`
			MemoryLimit       int    `json:"memory_limit"`
			MaxExecutionTime  int    `json:"max_execution_time"`
			UploadMaxFilesize int    `json:"upload_max_filesize"`
		} `json:"php"`
		Database struct {
			Type    string `json:"type"`
			Version string `json:"version"`
			Size    int    `json:"size"`
		} `json:"database"`
	} `json:"server"`
	ActiveUsers ActiveUsers `json:"activeUsers"`
}

type MonitoringResponse

type MonitoringResponse struct {
	Ocs struct {
		Meta Meta       `json:"meta"`
		Data Monitoring `json:"data"`
	} `json:"ocs"`
}

type Notification

type Notification struct {
	NotificationID        int           `json:"notification_id"`
	App                   string        `json:"app"`
	User                  string        `json:"user"`
	Datetime              time.Time     `json:"datetime"`
	ObjectType            string        `json:"object_type"`
	ObjectID              string        `json:"object_id"`
	Subject               string        `json:"subject"`
	Message               string        `json:"message"`
	Link                  string        `json:"link"`
	SubjectRich           string        `json:"subjectRich"`
	SubjectRichParameters []interface{} `json:"subjectRichParameters"`
	MessageRich           string        `json:"messageRich"`
	MessageRichParameters []interface{} `json:"messageRichParameters"`
	Icon                  string        `json:"icon"`
	Actions               []interface{} `json:"actions"`
}

type NotificationResponse

type NotificationResponse struct {
	Ocs struct {
		Meta Meta         `json:"meta"`
		Data Notification `json:"data"`
	} `json:"ocs"`
}

type Notifications

type Notifications interface {
	List() ([]Notification, error)
	Get(id int) (Notification, error)
	Delete(id int) error
	DeleteAll() error
	Create(userID, title, message string) error
	AdminAvailable() error
	Available() error
}

Notifications available methods

type NotificationsListResponse

type NotificationsListResponse struct {
	Ocs struct {
		Meta Meta           `json:"meta"`
		Data []Notification `json:"data"`
	} `json:"ocs"`
}

type Share

type Share struct {
	ID                   string      `json:"id"`
	ShareType            int         `json:"share_type"`
	UIDOwner             string      `json:"uid_owner"`
	DisplaynameOwner     string      `json:"displayname_owner"`
	Permissions          int         `json:"permissions"`
	Stime                int         `json:"stime"`
	Parent               interface{} `json:"parent"`
	Expiration           string      `json:"expiration"`
	Token                string      `json:"token"`
	UIDFileOwner         string      `json:"uid_file_owner"`
	DisplaynameFileOwner string      `json:"displayname_file_owner"`
	Path                 string      `json:"path"`
	ItemType             string      `json:"item_type"`
	Mimetype             string      `json:"mimetype"`
	StorageID            string      `json:"storage_id"`
	Storage              int         `json:"storage"`
	ItemSource           int         `json:"item_source"`
	FileSource           int         `json:"file_source"`
	FileParent           int         `json:"file_parent"`
	FileTarget           string      `json:"file_target"`
	ShareWith            string      `json:"share_with"`
	ShareWithDisplayname string      `json:"share_with_displayname"`
	MailSend             int         `json:"mail_send"`
	Tags                 []string    `json:"tags"`
}

type SharePermission

type SharePermission int

type ShareType

type ShareType int

type ShareUpdate

type ShareUpdate struct {
	ShareID      int
	Permissions  SharePermission
	Password     string
	PublicUpload bool
	ExpireDate   string
}

type Shares

type Shares interface {
	List() ([]Share, error)
	GetFromPath(path string, reshares bool, subfiles bool) ([]Share, error)
	Get(shareID string) (Share, error)
	Create(
		path string,
		shareType ShareType,
		permission SharePermission,
		shareWith string,
		publicUpload bool,
		password string,
	) (Share, error)
	Delete(shareID int) error
	Update(shareUpdate ShareUpdate) error
	UpdateExpireDate(shareID int, expireDate string) error
	UpdatePublicUpload(shareID int, public bool) error
	UpdatePassword(shareID int, password string) error
	UpdatePermissions(shareID int, permissions SharePermission) error
}

Shares available methods

type SharesListResponse

type SharesListResponse struct {
	Ocs struct {
		Meta Meta    `json:"meta"`
		Data []Share `json:"data"`
	} `json:"ocs"`
}

type SharesResponse

type SharesResponse struct {
	Ocs struct {
		Meta Meta  `json:"meta"`
		Data Share `json:"data"`
	} `json:"ocs"`
}

type Storage

type Storage struct {
	NumUsers         int `json:"num_users"`
	NumFiles         int `json:"num_files"`
	NumStorages      int `json:"num_storages"`
	NumStoragesLocal int `json:"num_storages_local"`
	NumStoragesHome  int `json:"num_storages_home"`
	NumStoragesOther int `json:"num_storages_other"`
}

type System

type System struct {
	Version             string    `json:"version"`
	Theme               string    `json:"theme"`
	EnableAvatars       string    `json:"enable_avatars"`
	EnablePreviews      string    `json:"enable_previews"`
	MemcacheLocal       string    `json:"memcache.local"`
	MemcacheDistributed string    `json:"memcache.distributed"`
	FilelockingEnabled  string    `json:"filelocking.enabled"`
	MemcacheLocking     string    `json:"memcache.locking"`
	Debug               string    `json:"debug"`
	Freespace           int64     `json:"freespace"`
	Cpuload             []float32 `json:"cpuload"`
	MemTotal            int       `json:"mem_total"`
	MemFree             int       `json:"mem_free"`
	SwapTotal           int       `json:"swap_total"`
	SwapFree            int       `json:"swap_free"`
}

type UpdateError

type UpdateError struct {
	Field string
	Error error
}

UpdateError contains the user's field and corresponding error

type User

type User struct {
	Enabled bool   `json:"enabled"`
	ID      string `json:"id"`
	Quota   struct {
		Free     int64   `json:"free"`
		Used     int     `json:"used"`
		Total    int64   `json:"total"`
		Relative float64 `json:"relative"`
		Quota    int     `json:"quota"`
	} `json:"quota"`
	Email       string   `json:"email"`
	Displayname string   `json:"displayname"`
	Phone       string   `json:"phone"`
	Address     string   `json:"address"`
	Website     string   `json:"website"`
	Twitter     string   `json:"twitter"`
	Groups      []string `json:"groups"`
	Language    string   `json:"language,omitempty"`

	StorageLocation string        `json:"storageLocation,omitempty"`
	LastLogin       int64         `json:"lastLogin,omitempty"`
	Backend         string        `json:"backend,omitempty"`
	Subadmin        []interface{} `json:"subadmin,omitempty"`
	Locale          string        `json:"locale,omitempty"`
}

Users

type UserListDetailsResponse

type UserListDetailsResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Users map[string]User `json:"users"`
		} `json:"data"`
	} `json:"ocs"`
}

type UserListResponse

type UserListResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Users []string `json:"users"`
		} `json:"data"`
	} `json:"ocs"`
}

UserListResponse

type UserResponse

type UserResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data User `json:"data"`
	} `json:"ocs"`
}

UserResponse

type UserUpdateError

type UserUpdateError struct {
	Errors map[string]error
}

UpdateError contains the errors resulting from a UserUpdate or a UserCreateFull call

func NewUpdateError

func NewUpdateError(errors chan UpdateError) *UserUpdateError

NewUpdateError returns an UpdateError based on an UpdateError channel

func (*UserUpdateError) Error

func (e *UserUpdateError) Error() string

type Users

type Users interface {
	List() ([]string, error)
	ListDetails() (map[string]User, error)
	Get(name string) (*User, error)
	Search(search string) ([]string, error)
	Create(username string, password string, user *User) error
	CreateWithoutPassword(username, email, displayName, quota, language string, groups ...string) error
	Delete(name string) error
	Enable(name string) error
	Disable(name string) error
	SendWelcomeEmail(name string) error
	Update(user *User) error
	UpdateEmail(name string, email string) error
	UpdateDisplayName(name string, displayName string) error
	UpdatePhone(name string, phone string) error
	UpdateAddress(name string, address string) error
	UpdateWebSite(name string, website string) error
	UpdateTwitter(name string, twitter string) error
	UpdatePassword(name string, password string) error
	UpdateQuota(name string, quota int) error
	GroupList(name string) ([]string, error)
	GroupAdd(name string, group string) error
	GroupRemove(name string, group string) error
	GroupPromote(name string, group string) error
	GroupDemote(name string, group string) error
	GroupSubAdminList(name string) ([]string, error)
}

Users available methods

type Version

type Version struct {
	Major   int    `json:"major"`
	Minor   int    `json:"minor"`
	Micro   int    `json:"micro"`
	String  string `json:"string"`
	Edition string `json:"edition"`
}