Go to file
Philippe-Adrien Nousse e03fd9fd88 removed memory sanitizer 2018-07-31 15:47:29 +02:00
cover update coverage 2018-07-25 16:52:55 +02:00
docs removed sensitive data 2018-07-30 10:31:19 +02:00
types Added Nextcloud Monitoring 2018-07-31 13:24:20 +02:00
vendor added gitlab-ci.yml and Makefile 2018-07-31 15:09:39 +02:00
.gitignore added gitlab-ci.yml and Makefile 2018-07-31 15:09:39 +02:00
.gitlab-ci.yml removed memory sanitizer 2018-07-31 15:47:29 +02:00
LICENCE Added Licence 2018-07-09 13:40:45 +02:00
Makefile fix coverage 2018-07-31 15:32:58 +02:00
README.md fix README.md 2018-07-30 10:48:17 +02:00
apps.go added comments 2018-07-30 10:03:38 +02:00
auth.go fix golint errors 2018-07-30 10:08:35 +02:00
client.go added comments 2018-07-30 10:03:38 +02:00
config.ymle added gitlab-ci.yml and Makefile 2018-07-31 15:09:39 +02:00
coverage.html update coverage 2018-07-25 16:52:55 +02:00
example.config.yml removed sensitive data 2018-07-30 10:31:19 +02:00
gonextcloud.iml Nextcloud API Client, Uers/Response types, User list/search/get/create/delete 2018-07-05 12:50:56 +02:00
gonextcloud_test.go added comments 2018-07-30 10:03:38 +02:00
groups.go Added missing comments 2018-07-30 10:18:54 +02:00
monitoring.go added golint dependecy to travis-ci.yml 2018-07-31 15:38:07 +02:00
routes.go Added Nextcloud Monitoring 2018-07-31 13:24:20 +02:00
users.go fix golint errors 2018-07-30 10:08:35 +02:00
utils.go fix golint errors 2018-07-30 10:08:35 +02:00

README.md

Nextcloud

Go Report Card

GoNextcloud

A simple Client for Nextcloud's Provisioning API in Go.

    import "github.com/partitio/gonextcloud"

Usage

package main

import (
	"fmt"
	"github.com/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()
}

Run tests

Configure the tests for your instance by editing example.config.yml and renaming it config.yml

then run the tests :

$ go test -v .

Docs

type Client

type Client struct {
}

func NewClient

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

func (*Client) AppDisable

func (c *Client) AppDisable(name string) error

func (*Client) AppEnable

func (c *Client) AppEnable(name string) error

func (*Client) AppInfos

func (c *Client) AppInfos(name string) (types.App, error)

func (*Client) AppList

func (c *Client) AppList() ([]string, error)

func (*Client) AppListDisabled

func (c *Client) AppListDisabled() ([]string, error)

func (*Client) AppListEnabled

func (c *Client) AppListEnabled() ([]string, error)

func (*Client) GroupCreate

func (c *Client) GroupCreate(name string) error

func (*Client) GroupDelete

func (c *Client) GroupDelete(name string) error

func (*Client) GroupList

func (c *Client) GroupList() ([]string, error)

func (*Client) GroupSearch

func (c *Client) GroupSearch(search string) ([]string, error)

func (*Client) GroupSubAdminList

func (c *Client) GroupSubAdminList(name string) ([]string, error)

func (*Client) GroupUsers

func (c *Client) GroupUsers(name string) ([]string, error)

func (*Client) Login

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

func (*Client) Logout

func (c *Client) Logout() error

func (*Client) User

func (c *Client) User(name string) (*types.User, error)

func (*Client) UserCreate

func (c *Client) UserCreate(username string, password string, user *types.User) error

func (*Client) UserDelete

func (c *Client) UserDelete(name string) error

func (*Client) UserDisable

func (c *Client) UserDisable(name string) error

func (*Client) UserEnable

func (c *Client) UserEnable(name string) error

func (*Client) UserGroupAdd

func (c *Client) UserGroupAdd(name string, group string) error

func (*Client) UserGroupDemote

func (c *Client) UserGroupDemote(name string, group string) error

func (*Client) UserGroupList

func (c *Client) UserGroupList(name string) ([]string, error)

func (*Client) UserGroupPromote

func (c *Client) UserGroupPromote(name string, group string) error

func (*Client) UserGroupRemove

func (c *Client) UserGroupRemove(name string, group string) error

func (*Client) UserGroupSubAdminList

func (c *Client) UserGroupSubAdminList(name string) ([]string, error)

func (*Client) UserList

func (c *Client) UserList() ([]string, error)

func (*Client) UserSearch

func (c *Client) UserSearch(search string) ([]string, error)

func (*Client) UserSendWelcomeEmail

func (c *Client) UserSendWelcomeEmail(name string) error

func (*Client) UserUpdate

func (c *Client) UserUpdate(user *types.User) error

func (*Client) UserUpdateAddress

func (c *Client) UserUpdateAddress(name string, address string) error

func (*Client) UserUpdateDisplayName

func (c *Client) UserUpdateDisplayName(name string, displayName string) error

func (*Client) UserUpdateEmail

func (c *Client) UserUpdateEmail(name string, email string) error

func (*Client) UserUpdatePassword

func (c *Client) UserUpdatePassword(name string, password string) error

func (*Client) UserUpdatePhone

func (c *Client) UserUpdatePhone(name string, phone string) error

func (*Client) UserUpdateQuota

func (c *Client) UserUpdateQuota(name string, quota int) error

func (*Client) UserUpdateTwitter

func (c *Client) UserUpdateTwitter(name string, twitter string) error

func (*Client) UserUpdateWebSite

func (c *Client) UserUpdateWebSite(name string, website string) error

type Routes

type Routes struct {
}

types

import "github.com/partitio/gonextcloud/types"

type APIError

type APIError struct {
	Code    int
	Message string
}

func ErrorFromMeta

func ErrorFromMeta(meta Meta) *APIError

func (*APIError) Error

func (e *APIError) Error() string

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"`
}

type AppListResponse

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

type AppResponse

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

type BaseResponse

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

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"`
	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"`
		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"`
	} `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"`
}

type CapabilitiesResponse

type CapabilitiesResponse struct {
	Ocs struct {
		Meta Meta `json:"meta"`
		Data struct {
			Version struct {
				Major   int    `json:"major"`
				Minor   int    `json:"minor"`
				Micro   int    `json:"micro"`
				String  string `json:"string"`
				Edition string `json:"edition"`
			} `json:"version"`
			Capabilities Capabilities `json:"capabilities"`
		} `json:"data"`
	} `json:"ocs"`
}

type ErrorResponse

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

type GroupListResponse

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

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"`
}

type UpdateError

type UpdateError struct {
	Field string
	Error 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"`
}

type UserListResponse

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

type UserResponse

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

type UserUpdateError

type UserUpdateError struct {
	Errors map[string]error
}

func NewUpdateError

func NewUpdateError(errors chan UpdateError) *UserUpdateError

func (*UserUpdateError) Error

func (e *UserUpdateError) Error() string