2016-06-24 20 views
0

Ich versuche, mit einem Owncloud-Server (Sabre/WebDAV) mit Ruby 2.0 zu sprechen. Ich habe ein Curl-Beispiel, um einen Dateieintrag zu erhalten, bei dem Informationen in den HTTP-Headern übergeben werden müssen. Wie kann ich diese Header-Informationen von Ruby übergeben? Die net_dav docs scheinen zu zeigen, ist dies eine verfügbare Methode, aber der Rubin Fehler scheint anders vorschlagen:So senden Sie WebDAV-Header mit Ruby?

EDIT: fixed Syntaxfehler headers = zu headers()

undefined method headers= for #<Net::DAV:0x00000001276d10> (NoMethodError)

Locken-Befehl:

# curl -s -X PROPFIND -H "Depth: 100" -H "Content-Type: application/json" -u ${username}:${passwd} https://myserver.net/remote.php/webdav | egrep href 

Rubin-Code:

# get list of files 
    url = "https://myserver.net" 
    path = "/remote.php/webdav/" 

    dav = Net::DAV.new(url, :curl => false) 
    dav.verify_server = true 
    dav.credentials(user, pass) 
    dav.headers ("Depth: 100") # << something wrong ? 

    # get list of files 
    path = "/remote.php/webdav/" 
    options = '' 
    props = dav.propfind(path, options) 
+0

Tiefe: 100 ist keine Sache. Es kann nur "0", "1" oder "unendlich" sein. – Evert

+0

Bist du sicher? Variieren der Tiefe von 0-3 scheint mir die logischen Ebenen der Verzeichnisstruktur zu geben. Indefinity ist in der Tat, was ich will. Vielen Dank. – Koko

+0

Wenn der Server, mit dem Sie interagieren, "Depth: 3" unterstützt, implementiert dieser Server auch eine nicht standardmäßige Funktion. Referenz: Ich habe ein _lot_ von webdav gearbeitet und Sie können es auch in den Spezifikationen finden;) – Evert

Antwort

0

Am Ende fand ich die v0.5 Gem auf rubygems.org ist weit hinter dem v0.5 Code auf der net_dav github Seite. This comment zeigt, wie Sie den aktualisierten Edelstein erhalten, der funktioniert.

0

Die von Ihnen verknüpfte Dokumentation besagt, dass Sie dav.headers() verwenden möchten, Sie verwenden dav.headers =. Vielleicht ist das das Problem?

+0

Guter Fang. Der Code, den ich eingefügt habe, war nachdem ich es in Klammern getestet habe (ich bin neu in Ruby: /). Behoben, aber immer noch der 'NoMethodError' Fehler – Koko