Giter Club home page Giter Club logo

jsdav's Introduction

jsDAV

jsDAV allows you to easily add WebDAV support to a NodeJS application. jsDAV is meant to cover the entire standard, and attempts to allow integration using an easy to understand API.

SabreDAV

jsDAV started as a port of SabreDAV to NodeJS Javascript, written by Evert Pot and maintained by Evert and contributors. SabreDAV is regarded as one of the highest quality WebDAV implementations around and is written entirely in PHP and is the most feature complete implementation that I've seen to date. I am watching the SabreDAV repository closely for changes, improvements and bugfixes, to see if they can be ported to jsDAV.

Features

  • Fully WebDAV compliant
  • Supports Windows XP, Windows Vista, Mac OS/X, DavFSv2, Cadaver, Netdrive, Open Office, and probably more
  • Supporting class 1, 2 and 3 Webdav servers
  • Custom property support
  • Locking support
  • Pass all Litmus tests

Features in development

  • CalDAV (to be tested with Evolution, iCal, iPhone and Lightning).

Supported RFC's

  • RFC2617: Basic/Digest auth
  • RFC2518: First WebDAV spec
  • RFC5689: Extended MKCOL
  • CardDAV (to be tested with the iOS addressbook and Evolution)

RFC's in development

  • RFC4918: WebDAV revision
  • CalDAV ctag, CalDAV-proxy

See the wiki for more information or ask a question in the mailing list!

Amsterdam, 2010. Mike de Boer.

jsdav's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsdav's Issues

On creation, don't change the event UID

When a client creates an event, we update its UID.

iOS doesn't seem to like this. According to user reports, iOS creates another event with the new UID, so all events created on iOS appear twice in its calendar (everything is fine on server side).

TypeError: self.handler.getHTTPPRefer is not a function

TypeError: self.handler.getHTTPPRefer is not a function
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAVACL/plugin.js:1429:39
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAVACL/plugin.js:724:25
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:371:33)
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:146:21)
at Object.next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:451:13)
at next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:144:20)
at __dirname.end (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:368:16)
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAVACL/plugin.js:723:22
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:371:33)
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:146:21)

TypeError: Object #<Object> has no method 'createFile'

Sync crash with the following error:

Exception:  { [Error: Could not find node at path: principals/me/726c57a3-270d-4123-8ee7-f665909f217d.ics]
  code: 404,
  type: 'FileNotFound',
  message: 'Could not find node at path: principals/me/726c57a3-270d-4123-8ee7-f665909f217d.ics' }

TypeError: Object #<Object> has no method 'createFile'
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:2306:40
    at readDone (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:1334:13)
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:1298:25
    at Object.req.streambuffer.onend (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/util.js:850:17)
    at getRequestBody (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:1280:30)
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:2302:34
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:75:13
    at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:371:33)
    at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:146:21)
    at Object.next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:451:13)
Exception:  { [Error: Could not find node at path: principals/me/726c57a3-270d-4123-8ee7-f665909f217d.ics]
  code: 404,
  type: 'FileNotFound',
  message: 'Could not find node at path: principals/me/726c57a3-270d-4123-8ee7-f665909f217d.ics' }

Server crash when trying to sync contacts

Sync app has crashed on a user's instance, here are the logs:

TypeError: string is not a function
    at Object.module.exports.jsDAV_Collection.extend.createFile (/usr/local/cozy/apps/sync/node_modules/jsDAV/lib/CardDAV/userAddressBooks.js:96:9)
    at /usr/local/cozy/apps/sync/node_modules/jsDAV/lib/DAV/handler.js:2306:40
    at readDone (/usr/local/cozy/apps/sync/node_modules/jsDAV/lib/DAV/handler.js:1334:13)
    at /usr/local/cozy/apps/sync/node_modules/jsDAV/lib/DAV/handler.js:1298:25
    at Object.req.streambuffer.onend (/usr/local/cozy/apps/sync/node_modules/jsDAV/lib/shared/util.js:850:17)
    at getRequestBody (/usr/local/cozy/apps/sync/node_modules/jsDAV/lib/DAV/handler.js:1280:30)
    at /usr/local/cozy/apps/sync/node_modules/jsDAV/lib/DAV/handler.js:2302:34
    at /usr/local/cozy/apps/sync/node_modules/jsDAV/lib/shared/asyncEvents.js:75:13
    at handler (/usr/local/cozy/apps/sync/node_modules/jsDAV/node_modules/asyncjs/lib/async.js:371:33)
    at handler (/usr/local/cozy/apps/sync/node_modules/jsDAV/node_modules/asyncjs/lib/async.js:146:21)

CalDAV backend?

Unfortunately there is no backend implementation or example for iBackend interface in the lib/CalDAV folder?! Are there plans to complete the CalDAV features for this library?

TypeError: callback is not a function

A user report that calendar sync is broken for a few days between Cozy and its iOS device. Here are the logs:

Exception:  { [Error: Calendar with name '06AA96C4-38A2-4281-B369-934F9AEA3706' could not be found] code: 404, type: 'FileNotFound', message: 'Calendar with name 
              \'06AA96C4-38A2-4281-B369-934F9AEA3706\' could not be found' }
/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/CalDAV/plugin.js:180 return callback(false); ^ TypeError: callback is not a function
at Object.module.exports.jsDAV_Plugin.extend.unknownMethod (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/CalDAV/plugin.js:180:16)
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:57:22
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:148:21)
at Object.next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:449:13)
at next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:144:20)
at __dirname.end (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:368:16) 
at eventName.dispatchEvent (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:67:12)
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:253:22
at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:75:13
at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:371:33)

What's strange is that unknownMethod is called whereas the method is PUT. Event creation from the remote client make the Sync application crash.

TypeError: Cannot read property 'map' of undefined

Seen in user logs:

/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/CalDAV/userCalendars.js:143
            var objs = calendars.map(function(calendar) {
                                ^
TypeError: Cannot read property 'map' of undefined
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/CalDAV/userCalendars.js:143:33
    at null._onTimeout (/usr/local/cozy/apps/sync/build/server/backends/caldav.js:81:18)
    at Timer.listOnTimeout (timers.js:92:15)

TypeError: Object #<Object> has no method 'addressBookQueryReport'

When trying to sync contacts:

TypeError: Object #<Object> has no method 'addressBookQueryReport'
    at Object.module.exports.jsDAV_Plugin.extend.report (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/CardDAV/plugin.js:281:22)
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:57:22
    at handler (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:148:21)
    at Object.next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:449:13)
    at next (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:144:20)
    at end (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/node_modules/asyncjs/lib/async.js:368:16)
    at dispatchEvent (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/asyncEvents.js:67:12)
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:1166:22
    at Object.exports.loadDOMDocument (/usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/shared/xml.js:187:5)
    at /usr/local/cozy/apps/sync/node_modules/cozy-jsdav-fork/lib/DAV/handler.js:1164:17

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.