Connecting web Applications with Desktop, confoo 2011
-
Upload
bachkoutou-toutou -
Category
Documents
-
view
1.063 -
download
0
description
Transcript of Connecting web Applications with Desktop, confoo 2011
![Page 2: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/2.jpg)
Connecting web and desktop: WebDAV 2 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
![Page 3: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/3.jpg)
Connecting web and desktop: WebDAV 3 / 49
About me
I Degree in computer sience
I More than 10 years ofprofessional PHP
I Open source enthusiastI Apache Zeta ComponentsI ArbitI PHPUnitI . . .
![Page 4: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/4.jpg)
Connecting web and desktop: WebDAV 3 / 49
About me
I Degree in computer sience
I More than 10 years ofprofessional PHP
I Open source enthusiastI Apache Zeta ComponentsI ArbitI PHPUnitI . . .
![Page 5: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/5.jpg)
Connecting web and desktop: WebDAV 3 / 49
About me
I Degree in computer sience
I More than 10 years ofprofessional PHP
I Open source enthusiastI Apache Zeta ComponentsI ArbitI PHPUnitI . . .
![Page 6: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/6.jpg)
Connecting web and desktop: WebDAV 3 / 49
About me
I Degree in computer sience
I More than 10 years ofprofessional PHP
I Open source enthusiastI Apache Zeta ComponentsI ArbitI PHPUnitI . . .
Co-Founder ofQafoo GmbH
http://qafoo.com
Qafoopassion for software quality
![Page 7: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/7.jpg)
Connecting web and desktop: WebDAV 3 / 49
About me
I Degree in computer sience
I More than 10 years ofprofessional PHP
I Open source enthusiastI Apache Zeta ComponentsI ArbitI PHPUnitI . . .
Co-Founder ofQafoo GmbH
http://qafoo.com
Qafoopassion for software quality
We help people to producehigh quality PHP code.
![Page 8: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/8.jpg)
Connecting web and desktop: WebDAV 4 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
![Page 9: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/9.jpg)
Connecting web and desktop: WebDAV 5 / 49
The concept
GET /some/resource
![Page 10: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/10.jpg)
Connecting web and desktop: WebDAV 5 / 49
The concept
POST /some/resource???
![Page 11: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/11.jpg)
Connecting web and desktop: WebDAV 5 / 49
The concept
PUT /some/resource???
![Page 12: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/12.jpg)
Connecting web and desktop: WebDAV 5 / 49
The concept
Please file that documentunder /some/resource
Done.
![Page 13: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/13.jpg)
Connecting web and desktop: WebDAV 5 / 49
The concept
Please create a new col-lection of documentsunder /some/more
Done.
![Page 14: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/14.jpg)
Connecting web and desktop: WebDAV 6 / 49
HTTP
I Network protocol driving the web
I Current version: 1.1
I RFC 2616 (June 1999)http://tools.ietf.org/html/rfc2616
I Inventor: Sir Tim Berners-Lee
I Client / server based
I Stateless communicationI Defines
I Request / responseI Headers / bodyI Formats / actions
![Page 15: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/15.jpg)
Connecting web and desktop: WebDAV 6 / 49
HTTP
I Network protocol driving the web
I Current version: 1.1
I RFC 2616 (June 1999)http://tools.ietf.org/html/rfc2616
I Inventor: Sir Tim Berners-Lee
I Client / server based
I Stateless communicationI Defines
I Request / responseI Headers / bodyI Formats / actions
![Page 16: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/16.jpg)
Connecting web and desktop: WebDAV 6 / 49
HTTP
I Network protocol driving the web
I Current version: 1.1
I RFC 2616 (June 1999)http://tools.ietf.org/html/rfc2616
I Inventor: Sir Tim Berners-Lee
I Client / server based
I Stateless communicationI Defines
I Request / responseI Headers / bodyI Formats / actions
![Page 17: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/17.jpg)
Connecting web and desktop: WebDAV 6 / 49
HTTP
I Network protocol driving the web
I Current version: 1.1
I RFC 2616 (June 1999)http://tools.ietf.org/html/rfc2616
I Inventor: Sir Tim Berners-Lee
I Client / server based
I Stateless communicationI Defines
I Request / responseI Headers / bodyI Formats / actions
![Page 18: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/18.jpg)
Connecting web and desktop: WebDAV 7 / 49
WebDAV
I HTTP Extensions for Distributed AuthoringI RFC 2518 (February 1999)I http://tools.ietf.org/html/rfc2518
I HTTP Extensions for Web Distributed Authoring andVersioning
I RFC 4918 (June 2007)I http://tools.ietf.org/html/rfc4918
I IETF Standard
I Extension to HTTP
I Allows distributed editing
![Page 19: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/19.jpg)
Connecting web and desktop: WebDAV 7 / 49
WebDAV
I HTTP Extensions for Distributed AuthoringI RFC 2518 (February 1999)I http://tools.ietf.org/html/rfc2518
I HTTP Extensions for Web Distributed Authoring andVersioning
I RFC 4918 (June 2007)I http://tools.ietf.org/html/rfc4918
I IETF Standard
I Extension to HTTP
I Allows distributed editing
![Page 20: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/20.jpg)
Connecting web and desktop: WebDAV 7 / 49
WebDAV
I HTTP Extensions for Distributed AuthoringI RFC 2518 (February 1999)I http://tools.ietf.org/html/rfc2518
I HTTP Extensions for Web Distributed Authoring andVersioning
I RFC 4918 (June 2007)I http://tools.ietf.org/html/rfc4918
I IETF Standard
I Extension to HTTP
I Allows distributed editing
![Page 21: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/21.jpg)
Connecting web and desktop: WebDAV 7 / 49
WebDAV
I HTTP Extensions for Distributed AuthoringI RFC 2518 (February 1999)I http://tools.ietf.org/html/rfc2518
I HTTP Extensions for Web Distributed Authoring andVersioning
I RFC 4918 (June 2007)I http://tools.ietf.org/html/rfc4918
I IETF Standard
I Extension to HTTP
I Allows distributed editing
![Page 22: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/22.jpg)
Connecting web and desktop: WebDAV 7 / 49
WebDAV
I HTTP Extensions for Distributed AuthoringI RFC 2518 (February 1999)I http://tools.ietf.org/html/rfc2518
I HTTP Extensions for Web Distributed Authoring andVersioning
I RFC 4918 (June 2007)I http://tools.ietf.org/html/rfc4918
I IETF Standard
I Extension to HTTP
I Allows distributed editing
WebDAV allows your users to edit web content easily.
![Page 23: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/23.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 24: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/24.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 25: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/25.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 26: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/26.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 27: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/27.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 28: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/28.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 29: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/29.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
![Page 30: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/30.jpg)
Connecting web and desktop: WebDAV 8 / 49
Request methods
I HTTPI GETI POSTI HEADI PUTI DELETEI OPTIONSI TRACEI CONNECT
I WebDAVI MKCOLI COPYI MOVEI PROPFINDI PROPPATCHI LOCKI UNLOCK
Significant for WebDAV
![Page 31: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/31.jpg)
Connecting web and desktop: WebDAV 9 / 49
Request headers
I HTTPI Accept[-*]I AuthorizationI If-[None-]MatchI If-[Un]Modified-SinceI User-AgentI ...
I WebDAVI DepthI DestinationI IfI OverwriteI Timeout
![Page 32: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/32.jpg)
Connecting web and desktop: WebDAV 9 / 49
Request headers
I HTTPI Accept[-*]I AuthorizationI If-[None-]MatchI If-[Un]Modified-SinceI User-AgentI ...
I WebDAVI DepthI DestinationI IfI OverwriteI Timeout
![Page 33: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/33.jpg)
Connecting web and desktop: WebDAV 9 / 49
Request headers
I HTTPI Accept[-*]I AuthorizationI If-[None-]MatchI If-[Un]Modified-SinceI User-AgentI ...
I WebDAVI DepthI DestinationI IfI OverwriteI Timeout
Significant for WebDAV
![Page 34: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/34.jpg)
Connecting web and desktop: WebDAV 10 / 49
Response headers
I HTTPI Accept-RangesI Content-LengthI Content-TypeI ETagI LocationI Retry-AfterI ServerI WWW-AuthenticateI ...
I WebDAVI DAVI Lock-TokenI Timeout
![Page 35: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/35.jpg)
Connecting web and desktop: WebDAV 10 / 49
Response headers
I HTTPI Accept-RangesI Content-LengthI Content-TypeI ETagI LocationI Retry-AfterI ServerI WWW-AuthenticateI ...
I WebDAVI DAVI Lock-TokenI Timeout
![Page 36: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/36.jpg)
Connecting web and desktop: WebDAV 10 / 49
Response headers
I HTTPI Accept-RangesI Content-LengthI Content-TypeI ETagI LocationI Retry-AfterI ServerI WWW-AuthenticateI ...
I WebDAVI DAVI Lock-TokenI Timeout
Significant for WebDAV
![Page 37: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/37.jpg)
Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
I HTTPI Request body mostly not significantI Only PUT method needs body (to be stored)I Response body usually content to deliver (unspecified)I Error responses may contain arbitrary content
![Page 38: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/38.jpg)
Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
I WebDAVI Bodies are significantI Many methods require XML bodies
Request
I PROPFIND
I PROPPATCH
I COPY (optional)
I MOVE (optional)
I LOCK
Response
I PROPFIND
I PROPPATCH
I LOCK
I Potentially others(multi-status)
![Page 39: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/39.jpg)
Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
I WebDAVI Bodies are significantI Many methods require XML bodies
Request
I PROPFIND
I PROPPATCH
I COPY (optional)
I MOVE (optional)
I LOCK
Response
I PROPFIND
I PROPPATCH
I LOCK
I Potentially others(multi-status)
![Page 40: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/40.jpg)
Connecting web and desktop: WebDAV 11 / 49
Request / response bodies
I WebDAVI Bodies are significantI Many methods require XML bodies
Request
I PROPFIND
I PROPPATCH
I COPY (optional)
I MOVE (optional)
I LOCK
Response
I PROPFIND
I PROPPATCH
I LOCK
I Potentially others(multi-status)
![Page 41: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/41.jpg)
Connecting web and desktop: WebDAV 12 / 49
Properties
I Concept introduced by WebDAV
I Store meta information about content
I Usually not directly visible to the user
I Live propertiesI creationdateI displaynameI get*I lockdiscoveryI . . .
I Dead propertiesI Arbitrary dataI Custom namespaceI XML favored
![Page 42: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/42.jpg)
Connecting web and desktop: WebDAV 12 / 49
Properties
I Concept introduced by WebDAV
I Store meta information about content
I Usually not directly visible to the user
I Live propertiesI creationdateI displaynameI get*I lockdiscoveryI . . .
I Dead propertiesI Arbitrary dataI Custom namespaceI XML favored
![Page 43: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/43.jpg)
Connecting web and desktop: WebDAV 12 / 49
Properties
I Concept introduced by WebDAV
I Store meta information about content
I Usually not directly visible to the user
I Live propertiesI creationdateI displaynameI get*I lockdiscoveryI . . .
I Dead propertiesI Arbitrary dataI Custom namespaceI XML favored
![Page 44: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/44.jpg)
Connecting web and desktop: WebDAV 13 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
![Page 45: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/45.jpg)
Connecting web and desktop: WebDAV 14 / 49
Development challenges
I Server development in generalI WebDAV RFCs are a BBOM
I UnstructuredI AmbiguousI Design fails
I Misbehaving clientsI Ignore the specificationI Different interpretations of RFCsI Proprietary BS
I Exchangeable back ends
![Page 46: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/46.jpg)
Connecting web and desktop: WebDAV 15 / 49
Outline
Development challengesRFC problemsClient problemsBack end flexibility
![Page 47: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/47.jpg)
Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
I Errors on COPY“[...] if an error occurs while copying an internal collection,the server MUST NOT copy any resources identified bymembers of this collection (i.e., the server must skip thissubtree) [...]” [?]
I MOVE“[...] is the logical equivalent of a copy (COPY), followed byconsistency maintenance processing, followed by a delete ofthe source,[...]” [?]
I MOVE errors“[...] after detecting the error, the move operation SHOULDtry to finish as much of the original move as possible [...]” [?]
![Page 48: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/48.jpg)
Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
I Errors on COPY“[...] if an error occurs while copying an internal collection,the server MUST NOT copy any resources identified bymembers of this collection (i.e., the server must skip thissubtree) [...]” [?]
I MOVE“[...] is the logical equivalent of a copy (COPY), followed byconsistency maintenance processing, followed by a delete ofthe source,[...]” [?]
I MOVE errors“[...] after detecting the error, the move operation SHOULDtry to finish as much of the original move as possible [...]” [?]
![Page 49: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/49.jpg)
Connecting web and desktop: WebDAV 16 / 49
COPY / MOVE methods
I Errors on COPY“[...] if an error occurs while copying an internal collection,the server MUST NOT copy any resources identified bymembers of this collection (i.e., the server must skip thissubtree) [...]” [?]
I MOVE“[...] is the logical equivalent of a copy (COPY), followed byconsistency maintenance processing, followed by a delete ofthe source,[...]” [?]
I MOVE errors“[...] after detecting the error, the move operation SHOULDtry to finish as much of the original move as possible [...]” [?]
![Page 50: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/50.jpg)
Connecting web and desktop: WebDAV 17 / 49
The If header
I Makes operations conditional.I Apply operation only if
I all conditions are metI no condition is met
1 No−tag− l i s t = L i s t2 Tagged− l i s t = R e s o u r c e 1∗ L i s t3 R e s o u r c e = Coded−URL4 L i s t = ” ( ”5 1∗ ( [ ”Not” ] ( State−token | ” [ ” e n t i t y−tag ” ] ” ) )6 ” ) ”7 State−token = Coded−URL8 Coded−URL = ”<” a b s o l u t e U R I ”>”
![Page 51: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/51.jpg)
Connecting web and desktop: WebDAV 18 / 49
The If header
I Can containI lock tokensI entity tags
1 I f : (< l o c k t o k e n : a−w r i t e−l o c k−token>2 [ ” I am an ETag” ] ) ( [ ” I am a n o t h e r ETag” ] )
![Page 52: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/52.jpg)
Connecting web and desktop: WebDAV 19 / 49
The If header
I Conditions can apply toI single resourcesI sets of resourcesI all affected resources
1 <h t t p : // example . com/ r e s o u r c e 1 >2 (< l o c k t o k e n : a−w r i t e−l o c k−token> [W/”A weak ETag” ] )3 ( Not [ ” s t r o n g ETag” ] )
I Required own parser implementation
I Parser is about 150 LOC
![Page 53: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/53.jpg)
Connecting web and desktop: WebDAV 20 / 49
Locking
I 2 different types of locksI ExclusiveI Shared
I Lock conditions must be validated before anything else
I Timeout refresh on every lock use (successful or not)(Fixed in RCF 4918)
I Not specified how to associate principles with lock tokens
I Lock-Null-Resources(Partly fixed in RFC 4918)
I Do not behave like real resourcesI Must vanish when the lock is releasedI A collection can be created on them
![Page 54: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/54.jpg)
Connecting web and desktop: WebDAV 20 / 49
Locking
I 2 different types of locksI ExclusiveI Shared
I Lock conditions must be validated before anything else
I Timeout refresh on every lock use (successful or not)(Fixed in RCF 4918)
I Not specified how to associate principles with lock tokens
I Lock-Null-Resources(Partly fixed in RFC 4918)
I Do not behave like real resourcesI Must vanish when the lock is releasedI A collection can be created on them
![Page 55: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/55.jpg)
Connecting web and desktop: WebDAV 20 / 49
Locking
I 2 different types of locksI ExclusiveI Shared
I Lock conditions must be validated before anything else
I Timeout refresh on every lock use (successful or not)(Fixed in RCF 4918)
I Not specified how to associate principles with lock tokens
I Lock-Null-Resources(Partly fixed in RFC 4918)
I Do not behave like real resourcesI Must vanish when the lock is releasedI A collection can be created on them
![Page 56: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/56.jpg)
Connecting web and desktop: WebDAV 20 / 49
Locking
I 2 different types of locksI ExclusiveI Shared
I Lock conditions must be validated before anything else
I Timeout refresh on every lock use (successful or not)(Fixed in RCF 4918)
I Not specified how to associate principles with lock tokens
I Lock-Null-Resources(Partly fixed in RFC 4918)
I Do not behave like real resourcesI Must vanish when the lock is releasedI A collection can be created on them
![Page 57: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/57.jpg)
Connecting web and desktop: WebDAV 20 / 49
Locking
I 2 different types of locksI ExclusiveI Shared
I Lock conditions must be validated before anything else
I Timeout refresh on every lock use (successful or not)(Fixed in RCF 4918)
I Not specified how to associate principles with lock tokens
I Lock-Null-Resources(Partly fixed in RFC 4918)
I Do not behave like real resourcesI Must vanish when the lock is releasedI A collection can be created on them
![Page 58: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/58.jpg)
Connecting web and desktop: WebDAV 21 / 49
Outline
Development challengesRFC problemsClient problemsBack end flexibility
![Page 59: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/59.jpg)
Connecting web and desktop: WebDAV 22 / 49
Konqueror / Nautilus
I Konqueror (KDE)I Does not decode URLs properlyI Requires Apache like error messages for 404
I Nautilus (Gnome)I Cannot cope with charset="..." info in MIME types
![Page 60: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/60.jpg)
Connecting web and desktop: WebDAV 22 / 49
Konqueror / Nautilus
I Konqueror (KDE)I Does not decode URLs properlyI Requires Apache like error messages for 404
I Nautilus (Gnome)I Cannot cope with charset="..." info in MIME types
![Page 61: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/61.jpg)
Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
I At least 3 different WebDAV user agents in WindowsI Loaded depending on how you initialize connectionI Transparently switched occasionally
I Requires custom header MS-Author-Via on every responseI Requires custom namespaces set on live properties
I Requires special namespace shortcut to be used (sic!)I Requires different shortcuts for DAV: namespace
![Page 62: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/62.jpg)
Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
I At least 3 different WebDAV user agents in WindowsI Loaded depending on how you initialize connectionI Transparently switched occasionally
I Requires custom header MS-Author-Via on every responseI Requires custom namespaces set on live properties
I Requires special namespace shortcut to be used (sic!)I Requires different shortcuts for DAV: namespace
![Page 63: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/63.jpg)
Connecting web and desktop: WebDAV 23 / 49
Windows / InternetExplorer
I At least 3 different WebDAV user agents in WindowsI Loaded depending on how you initialize connectionI Transparently switched occasionally
I Requires custom header MS-Author-Via on every responseI Requires custom namespaces set on live properties
I Requires special namespace shortcut to be used (sic!)I Requires different shortcuts for DAV: namespace
![Page 64: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/64.jpg)
Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
I Cannot cope with non-significant white spaces in XML bodies
I Requires newline at the end of every XML body
I Occasionally sends invalid PROPFIND requests
![Page 65: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/65.jpg)
Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
I Cannot cope with non-significant white spaces in XML bodies
I Requires newline at the end of every XML body
I Occasionally sends invalid PROPFIND requests
![Page 66: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/66.jpg)
Connecting web and desktop: WebDAV 24 / 49
Windows / InternetExplorer II
I Cannot cope with non-significant white spaces in XML bodies
I Requires newline at the end of every XML body
I Occasionally sends invalid PROPFIND requests
![Page 67: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/67.jpg)
Connecting web and desktop: WebDAV 25 / 49
Outline
Development challengesRFC problemsClient problemsBack end flexibility
![Page 68: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/68.jpg)
Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
I Exchangeable back endI File systemI Memory (testing)I SQL Database?I Subversion?
I Independent of client issues
I Protocol enhancements back end independent
I Easy implementation
![Page 69: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/69.jpg)
Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
I Exchangeable back endI File systemI Memory (testing)I SQL Database?I Subversion?
I Independent of client issues
I Protocol enhancements back end independent
I Easy implementation
![Page 70: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/70.jpg)
Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
I Exchangeable back endI File systemI Memory (testing)I SQL Database?I Subversion?
I Independent of client issues
I Protocol enhancements back end independent
I Easy implementation
![Page 71: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/71.jpg)
Connecting web and desktop: WebDAV 26 / 49
Back end flexibility
I Exchangeable back endI File systemI Memory (testing)I SQL Database?I Subversion?
I Independent of client issues
I Protocol enhancements back end independent
I Easy implementation
![Page 72: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/72.jpg)
Connecting web and desktop: WebDAV 27 / 49
Outline
Introduction
HTTP & WebDAV
Development challenges
Zeta Webdav component
![Page 73: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/73.jpg)
Connecting web and desktop: WebDAV 28 / 49
Outline
Zeta Webdav componentBackgroundUsageCustomizationEnd note
![Page 74: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/74.jpg)
Connecting web and desktop: WebDAV 29 / 49
eZ Components
![Page 75: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/75.jpg)
Connecting web and desktop: WebDAV 29 / 49
Apache Zeta Components
ZetaComponents
apache
![Page 76: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/76.jpg)
Connecting web and desktop: WebDAV 30 / 49
History: eZ Components
I Developed since 2004 by eZ Systems ASI Makers of enterprise OSS CMS eZ PublishI http://ez.no
I Initial goalI Refactor and cleanup core libs of eZ PublishI Pull out standalone, general purpose library
I ObjectivesI High quality codeI Well thought out APII Backwards compatibilityI Extensive documentation
![Page 77: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/77.jpg)
Connecting web and desktop: WebDAV 31 / 49
History: The break
March 2010
I All eZ Components developers left eZ SystemsI Still, we wanted to . . .
I put voluntary efforts into the projectI push it furtherI ensure it is not broken
I Discussion with eZ SystemsI Spin off the project to become independentI Look for or create a foundation
I Result: Propose code to Apache Software Foundation
![Page 78: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/78.jpg)
Connecting web and desktop: WebDAV 32 / 49
Apache Software Foundation
I http://apache.org
I Well knwon OSS foundationI Home of OSS projects like
I Apache HTTP serverI SubversionI CouchDB
I http://zeta-components.org
![Page 79: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/79.jpg)
Connecting web and desktop: WebDAV 33 / 49
The Webdav component
I General purpose WebDAV server
I Easy integration and customization
I Work around client issues
![Page 80: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/80.jpg)
Connecting web and desktop: WebDAV 34 / 49
Zeta Webdav architecture
Back end layer
Simple backend (base class)
File systemback end
eZ Publishback end
Your customback end
Server layer
Plugin APIYour
authentication /authorization
RFC conformtransport
Microsoftcompatibletransport
Nautiluscompatibletransport
Transport layer Plugins
Lock plugin
Your custom plugin
![Page 81: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/81.jpg)
Connecting web and desktop: WebDAV 35 / 49
Outline
Zeta Webdav componentBackgroundUsageCustomizationEnd note
![Page 82: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/82.jpg)
Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;2 $backend = new ezcWebdavFi leBackend (3 dirname ( F I L E ) . ’ / backend ’4 ) ;56 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 83: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/83.jpg)
Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;2 $backend = new ezcWebdavFi leBackend (3 dirname ( F I L E ) . ’ / backend ’4 ) ;56 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 84: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/84.jpg)
Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;2 $backend = new ezcWebdavFi leBackend (3 dirname ( F I L E ) . ’ / backend ’4 ) ;56 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 85: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/85.jpg)
Connecting web and desktop: WebDAV 36 / 49
Setup a simple WebDAV server
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;2 $backend = new ezcWebdavFi leBackend (3 dirname ( F I L E ) . ’ / backend ’4 ) ;56 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 86: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/86.jpg)
Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 r e q u i r e o n c e ’ c u s t o m l o c k a u t h . php ’ ;23 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;45 $ s e r v e r−>auth = new myCustomLockAuth (6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e7 dirname ( F I L E ) . ’ / t o k e n s . php ’8 ) ;9
10 $ s e r v e r−>p l u g i n R e g i s t r y−>r e g i s t e r P l u g i n (11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )12 ) ;1314 $backend = new ezcWebdavFi leBackend (15 // Your WebDAV d i r e c t o r y h e r e16 dirname ( F I L E ) . ’ / backend ’17 ) ;1819 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 87: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/87.jpg)
Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 r e q u i r e o n c e ’ c u s t o m l o c k a u t h . php ’ ;23 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;45 $ s e r v e r−>auth = new myCustomLockAuth (6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e7 dirname ( F I L E ) . ’ / t o k e n s . php ’8 ) ;9
10 $ s e r v e r−>p l u g i n R e g i s t r y−>r e g i s t e r P l u g i n (11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )12 ) ;1314 $backend = new ezcWebdavFi leBackend (15 // Your WebDAV d i r e c t o r y h e r e16 dirname ( F I L E ) . ’ / backend ’17 ) ;1819 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 88: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/88.jpg)
Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 r e q u i r e o n c e ’ c u s t o m l o c k a u t h . php ’ ;23 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;45 $ s e r v e r−>auth = new myCustomLockAuth (6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e7 dirname ( F I L E ) . ’ / t o k e n s . php ’8 ) ;9
10 $ s e r v e r−>p l u g i n R e g i s t r y−>r e g i s t e r P l u g i n (11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )12 ) ;1314 $backend = new ezcWebdavFi leBackend (15 // Your WebDAV d i r e c t o r y h e r e16 dirname ( F I L E ) . ’ / backend ’17 ) ;1819 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 89: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/89.jpg)
Connecting web and desktop: WebDAV 37 / 49
WebDAV server with locking
1 r e q u i r e o n c e ’ c u s t o m l o c k a u t h . php ’ ;23 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;45 $ s e r v e r−>auth = new myCustomLockAuth (6 // Some c o n f i g u r a t i o n d i r e c t o r y h e r e7 dirname ( F I L E ) . ’ / t o k e n s . php ’8 ) ;9
10 $ s e r v e r−>p l u g i n R e g i s t r y−>r e g i s t e r P l u g i n (11 new e z c W e b d a v L o c k P l u g i n C o n f i g u r a t i o n ( )12 ) ;1314 $backend = new ezcWebdavFi leBackend (15 // Your WebDAV d i r e c t o r y h e r e16 dirname ( F I L E ) . ’ / backend ’17 ) ;1819 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 90: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/90.jpg)
Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n authent i cateAnonymous ( ezcWebdavAnonymousAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v B a s i c A u t h e n t i c a t o r e x t e n d s ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v D i g e s t A u t h e n t i c a t o r e x t e n d s e z c W e b d a v B a s i c A u t h e n t i c a t o r2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;4 }
![Page 91: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/91.jpg)
Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n authent i cateAnonymous ( ezcWebdavAnonymousAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v B a s i c A u t h e n t i c a t o r e x t e n d s ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v D i g e s t A u t h e n t i c a t o r e x t e n d s e z c W e b d a v B a s i c A u t h e n t i c a t o r2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;4 }
![Page 92: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/92.jpg)
Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n authent i cateAnonymous ( ezcWebdavAnonymousAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v B a s i c A u t h e n t i c a t o r e x t e n d s ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v D i g e s t A u t h e n t i c a t o r e x t e n d s e z c W e b d a v B a s i c A u t h e n t i c a t o r2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;4 }
![Page 93: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/93.jpg)
Connecting web and desktop: WebDAV 38 / 49
Authentication
1 i n t e r f a c e ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n authent i cateAnonymous ( ezcWebdavAnonymousAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v B a s i c A u t h e n t i c a t o r e x t e n d s ezcWebdavAnonymousAuthent icator2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e B a s i c ( ezcWebdavBasicAuth $data ) ;4 }
1 i n t e r f a c e e z c W e b d a v D i g e s t A u t h e n t i c a t o r e x t e n d s e z c W e b d a v B a s i c A u t h e n t i c a t o r2 {3 p u b l i c f u n c t i o n a u t h e n t i c a t e D i g e s t ( ezcWebdavDigestAuth $data ) ;4 }
![Page 94: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/94.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 95: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/95.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 96: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/96.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 97: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/97.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 98: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/98.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 99: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/99.jpg)
Connecting web and desktop: WebDAV 39 / 49
Authorization
1 i n t e r f a c e ezcWebdavAuthor i ze r2 {3 c o n s t ACCESS READ = 1 ;4 c o n s t ACCESS WRITE = 2 ;56 p u b l i c f u n c t i o n a u t h o r i z e ( $user , $path , $ a c c e s s = s e l f : : ACCESS READ ) ;7 }
1 i n t e r f a c e ezcWebdavLockAuthor i ze r e x t e n d s ezcWebdavAuthor i ze r2 {3 p u b l i c f u n c t i o n a s s i g n L o c k ( $user , $ lockToken ) ;45 p u b l i c f u n c t i o n ownsLock ( $user , $ lockToken ) ;67 p u b l i c f u n c t i o n r e l e a s e L o c k ( $user , $ lockToken ) ;8 }
![Page 100: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/100.jpg)
Connecting web and desktop: WebDAV 40 / 49
Outline
Zeta Webdav componentBackgroundUsageCustomizationEnd note
![Page 101: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/101.jpg)
Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;23 $ p a t h F a c t o r y = new ezcWebdavBas icPathFactory (4 ’ h t t p : / / example . com/ webdav / i n d e x . php ’5 ) ;67 f o r each ( $ s e r v e r−>c o n f i g u r a t i o n s as $ c o n f )8 {9 $conf−>p a t h F a c t o r y = $ p a t h F a c t o r y ;
10 }1112 $backend = new ezcWebdavFi leBackend (13 dirname ( F I L E ) . ’ / backend ’14 ) ;1516 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 102: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/102.jpg)
Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;23 $ p a t h F a c t o r y = new ezcWebdavBas icPathFactory (4 ’ h t t p : / / example . com/ webdav / i n d e x . php ’5 ) ;67 f o r each ( $ s e r v e r−>c o n f i g u r a t i o n s as $ c o n f )8 {9 $conf−>p a t h F a c t o r y = $ p a t h F a c t o r y ;
10 }1112 $backend = new ezcWebdavFi leBackend (13 dirname ( F I L E ) . ’ / backend ’14 ) ;1516 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 103: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/103.jpg)
Connecting web and desktop: WebDAV 41 / 49
Path handling
1 $ s e r v e r = ezcWebdavServer : : g e t I n s t a n c e ( ) ;23 $ p a t h F a c t o r y = new ezcWebdavBas icPathFactory (4 ’ h t t p : / / example . com/ webdav / i n d e x . php ’5 ) ;67 f o r each ( $ s e r v e r−>c o n f i g u r a t i o n s as $ c o n f )8 {9 $conf−>p a t h F a c t o r y = $ p a t h F a c t o r y ;
10 }1112 $backend = new ezcWebdavFi leBackend (13 dirname ( F I L E ) . ’ / backend ’14 ) ;1516 $ s e r v e r−>h a n d l e ( $backend ) ;
![Page 104: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/104.jpg)
Connecting web and desktop: WebDAV 42 / 49
The back end
I ezcWebdavFileBackend
I ezcWebdavMemoryBackend
I Write your ownI ezcWebdavSimpleBackendI ezcWebdavBackend
I ezcWebdavBackendPutI ezcWebdavBackendChangeI ezcWebdavBackendMakeCollectionI ezcWebdavLockBackend
![Page 105: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/105.jpg)
Connecting web and desktop: WebDAV 42 / 49
The back end
I ezcWebdavFileBackend
I ezcWebdavMemoryBackend
I Write your ownI ezcWebdavSimpleBackendI ezcWebdavBackend
I ezcWebdavBackendPutI ezcWebdavBackendChangeI ezcWebdavBackendMakeCollectionI ezcWebdavLockBackend
![Page 106: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/106.jpg)
Connecting web and desktop: WebDAV 42 / 49
The back end
I ezcWebdavFileBackend
I ezcWebdavMemoryBackend
I Write your ownI ezcWebdavSimpleBackendI ezcWebdavBackend
I ezcWebdavBackendPutI ezcWebdavBackendChangeI ezcWebdavBackendMakeCollectionI ezcWebdavLockBackend
![Page 107: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/107.jpg)
Connecting web and desktop: WebDAV 42 / 49
The back end
I ezcWebdavFileBackend
I ezcWebdavMemoryBackend
I Write your ownI ezcWebdavSimpleBackendI ezcWebdavBackend
I ezcWebdavBackendPutI ezcWebdavBackendChangeI ezcWebdavBackendMakeCollectionI ezcWebdavLockBackend
![Page 108: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/108.jpg)
Connecting web and desktop: WebDAV 43 / 49
ezcWebdavSimpleBackend
I Proper method handling
I Authorization
I Handling of If[-*] headers
I about 1600 LOC
I No deeper knowledge on WebDAV required
![Page 109: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/109.jpg)
Connecting web and desktop: WebDAV 44 / 49
New clients
I Adjust transport layerI Needs some patience
I Use Wireshark!
I Extend one or more ofI ezcWebdavTransportI ezcWebdavHeaderHandlerI ezcWebdavPropertyHandler
![Page 110: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/110.jpg)
Connecting web and desktop: WebDAV 44 / 49
New clients
I Adjust transport layerI Needs some patience
I Use Wireshark!
I Extend one or more ofI ezcWebdavTransportI ezcWebdavHeaderHandlerI ezcWebdavPropertyHandler
1 $ n e w C l i e n t C o n f = new e z c W e b d a v S e r v e r C o n f i g u r a t i o n (2 ’ (My.∗Webdav\s+C l i e n g t ) i ’ ,3 ’ myCustomTransportTransport ’4 // . . .5 ) ;67 $ s e r v e r−>c o n f i g u r a t i o n s−>i n s e r t B e f o r e ( $newCl ientConf , 0 ) ;
![Page 111: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/111.jpg)
Connecting web and desktop: WebDAV 44 / 49
New clients
I Adjust transport layerI Needs some patience
I Use Wireshark!
I Extend one or more ofI ezcWebdavTransportI ezcWebdavHeaderHandlerI ezcWebdavPropertyHandler
1 $ n e w C l i e n t C o n f = new e z c W e b d a v S e r v e r C o n f i g u r a t i o n (2 ’ (My.∗Webdav\s+C l i e n g t ) i ’ ,3 ’ myCustomTransportTransport ’4 // . . .5 ) ;67 $ s e r v e r−>c o n f i g u r a t i o n s−>i n s e r t B e f o r e ( $newCl ientConf , 0 ) ;
![Page 112: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/112.jpg)
Connecting web and desktop: WebDAV 45 / 49
Plugins
I Hook into requests / responses
I Handle unknown requests
I Issue unknown responses
I Send requests to the back end
![Page 113: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/113.jpg)
Connecting web and desktop: WebDAV 46 / 49
Outline
Zeta Webdav componentBackgroundUsageCustomizationEnd note
![Page 114: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/114.jpg)
Connecting web and desktop: WebDAV 47 / 49
Join the team!
I Come and contribute!
I Highly technical discussions
I Open minded people
I Apache Software Foundation
I http://zeta-components.org
![Page 115: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/115.jpg)
Connecting web and desktop: WebDAV 48 / 49
Q / A
Are there any questions left?
![Page 116: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/116.jpg)
Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk athttp://joind.in/2808
and / or give me some feedback right now!
![Page 117: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/117.jpg)
Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk athttp://joind.in/2808
and / or give me some feedback right now!
This is very important for . . .
I Speakers
I Organizers
I You!
![Page 118: Connecting web Applications with Desktop, confoo 2011](https://reader033.fdocuments.net/reader033/viewer/2022052522/548fe561b47959962d8b4ce9/html5/thumbnails/118.jpg)
Connecting web and desktop: WebDAV 49 / 49
Thanks for listening
Please rate this talk athttp://joind.in/2808
and / or give me some feedback right now!
Stay in touch
I Tobias Schlitt
I @tobySen / @qafoo
Rent a PHP quality expert:http://qafoo.com