Re: webDAV/CalDAV client class experience ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2013-02-18 at 12:19 +0100, B. Aerts wrote:
> >> - Adding the HTTP header "Accept: */*" made sure all read actions ( e.g.
> >> GET, PROPFIND, REPORT) worked perfectly
> >
> > This is interesting. The Accept header has to do with what media types
> > the browser will accept in return. I didn't think it had anything to
> > do with what operations the server/application accepts. Must go read
> > further....
> 
> I'll have to revoke this statement, as I can't reproduce it anymore.
> I noticed the DaviCal didn't use it, bu the CURL call did - and yielded 
> more ( = meaningfull) results.
> But, as I said, can't reproduce it.
> 
> The thing I could reproduce was that, if the request was sent to the 
> default port, AND this port was included in the "Host" header, both GET 
> and PUT yielded HTTP 404.
> 
> >
> >> Only problem remaining was that PUT still isn't possible - at least not with
> >> one of the providers. Since I used a verbatim copy of a PUT action from the
> >> RFC, I strongly suspect the problem to be with the provider.
> >
> > You've no doubt considered this already, but it might be intentional
> > on the provider's part. I'm not up on all the webDAV/calDAV providers;
> > I imagine some of them might add in additional layers of auth
> > (including the NOWAI layer)  just to consider themselves more secure.
> >
> Yes I did, but the following arguments should negate that consideration:
> - when running OPTIONS, PUT is included in the allowed HTTP methods
> - the HTTP return code from the PUT command is 301, where a security 
> issue would have yielded a code in the 400 range

Ok, and the 301 response contains a Location: header?  A 301 as a
response to PUT just means the server relocated/renamed the resource. 

> - the other provider does respond as expected (though I agree, that is 
> the weakest argument: expectations != specifications )

Nobody, nowhere, matches the spec.

> - the provider does allow sync'ing Sunbird, iCal, ... over CalDAV, and 
> that works, even entering a new event (which is a PUT action). The 
> Charles debugging proxy too shows that it's only Basic authentication 
> that's going up - and succeeding

If your response is 301 why do you believe it is failing?

> $body = <<<XML
> <?xml version="1.0" encoding="utf-8" ?>
> <C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
>       <D:prop>
>         <C:calendar-data/>
>         <D:getetag/>
>       </D:prop>
>       <C:filter>
>         <C:comp-filter name="VCALENDAR">
>           <C:comp-filter name="VEVENT">
>             <C:time-range start="20130201T000001Z" end="20130228T000001Z"/>
>           </C:comp-filter>
>         </C:comp-filter>
>       </C:filter>
> </C:calendar-query>

Does PHP provide some kind of XML building library?  String building XML
is *always* dicey and it is *VERY* easy to introduce encoding problems.
Something at least with an codepage codec would be good.  [although it
*should* work, I manipulate WebDAV servers via curl CLI all the time].

In Python a combination of ElementFlow and the codecs module is
perfection.  I assume there is a PHP equivalent.

-- 
Adam Tauno Williams <awilliam@xxxxxxxxxxxxx>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux