NextCloud Developer
https://docs.nextcloud.com/server/latest/developer_manual
목차
파고들기[편집 | 원본 편집]
그룹웨어 통합[편집 | 원본 편집]
달력 통합[편집 | 원본 편집]
달력과 이벤트에 접근[편집 | 원본 편집]
달력 객체[편집 | 원본 편집]
"Calendar manager service"를 통해서 back end에서 달력 컨텐츠에 쿼리할 수 있다.
Calendars[편집 | 원본 편집]
Calendar providers[편집 | 원본 편집]
넥스트 클라우드 앱들은 넥스트 클라우드의 CalDAV 백 엔드의 내부 달력외에도 달력을 등록할 수 있다. 달력은 오직 요구하면 로딩된다. 그래서 lazy provider mechanism이 사용된다.
CalendarProvider 클래스는 ICalendarProvider 인터페이스를 구현해야 한다.
Write support[편집 | 원본 편집]
Handling iMIP data[편집 | 원본 편집]
Resources[편집 | 원본 편집]
Rooms[편집 | 원본 편집]
Client API[편집 | 원본 편집]
Webdav[편집 | 원본 편집]
Basic APIs[편집 | 원본 편집]
WebDAV basics[편집 | 원본 편집]
base url: /remote.php/dav
모든 요청은 인증정보가 필요하다.
Testing requests with curl[편집 | 원본 편집]
WebDAV 요청은 curl로 간단하게 테스트할 수 있다.
예를 들어, 폴더에서 파일들을 찾는 요청을 할 수 있다.
$ curl -u username:password 'https://cloud.example.com/remote.php/dav/files/username/folder' -X PROPFIND --data '<?xml version="1.0" encoding="UTF-8"?>
<d:propfind xmlns:d="DAV:">
<d:prop xmlns:oc="http://owncloud.org/ns">
<d:getlastmodified/>
<d:getcontentlength/>
<d:getcontenttype/>
<oc:permissions/>
<d:resourcetype/>
<d:getetag/>
</d:prop>
</d:propfind>'
Listing folders[편집 | 원본 편집]
rfc4918: https://tools.ietf.org/html/rfc4918
폴더에 PROPFIND요청을 보내서 폴더의 컨텐츠를 리스트할 수 있다.
PROPFIND remote.php/dav/files/user/path/to/folder
Requesting properties[편집 | 원본 편집]
기본적으로 수정일시, 파일 크기, 폴더여부, eTag, mime type을 리턴한다.
PROPFIND요청을 보낼 때 추가속성을 요청할 수 있다.
<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
<d:prop>
<d:getlastmodified />
<d:getetag />
<d:getcontenttype />
<d:resourcetype />
<oc:fileid />
<oc:permissions />
<oc:size />
<d:getcontentlength />
<nc:has-preview />
<oc:favorite />
<oc:comments-unread />
<oc:owner-display-name />
<oc:share-types />
<nc:contained-folder-count />
<nc:contained-file-count />
</d:prop>
</d:propfind>
지원되는 속성들
{DAV:}getlastmodified
{DAV:}getetag
{DAV:}getcontenttype
{DAV:}resourcetype
{DAV:}getcontentlength
{http://owncloud.org/ns}id
The fileid namespaced by the instance id, globally unique{http://owncloud.org/ns}fileid
The unique id for the file within the instance{http://owncloud.org/ns}favorite
{http://owncloud.org/ns}comments-href
{http://owncloud.org/ns}comments-count
{http://owncloud.org/ns}comments-unread
{http://owncloud.org/ns}owner-id
The user id of the owner of a shared file{http://owncloud.org/ns}owner-display-name
The display name of the owner of a shared file{http://owncloud.org/ns}share-types
{http://owncloud.org/ns}checksums
{http://nextcloud.org/ns}has-preview
{http://owncloud.org/ns}size
Unlikegetcontentlength
, this property also works for folders reporting the size of everything in the folder.{http://nextcloud.org/ns}rich-workspace
this property is provided by the text app{http://nextcloud.org/ns}contained-folder-count
The number of folders directly contained in the folder (not recursively){http://nextcloud.org/ns}contained-file-count
The number of files directly contained in the folder (not recursively)
Getting properties for just the folder[편집 | 원본 편집]
요청헤더에 Depth: 0
을 추가하면 폴더 컨텐츠 없이 폴더 속성을 요청할 수 있다.
Downloading files[편집 | 원본 편집]
GET remote.php/dav/files/user/path/to/file
Uploading files[편집 | 원본 편집]
PUT remote.php/dav/files/user/path/to/file
Creating folders ([rfc:4918 rfc4918])[편집 | 원본 편집]
MKCOL remote.php/dav/files/user/path/to/new/folder
Deleting files and folders ([rfc:4918 rfc4918])[편집 | 원본 편집]
DELETE remote.php/dav/files/user/path/to/file