2016-05-23 10 views
1

Ich überprüfte die Dokumentation auf der XML-RPC-Schnittstelle here. Die Dokumentation erwähnt diese Methode für das Hinzufügen neuer Benutzer:Benutzer kann nicht mit XML-RPC-Schnittstelle erstellt werden: Kein solcher Handler: Default.setUser

boolean setUser(String name, String passwd, String digestPasswd, Vector groups) 

eulexistdb Mit meiner eXist Instanz zu verbinden, ich laufe:

import os 

from eulexistdb.db import ExistDB 

password = os.environ["PASS"] 
db = ExistDB("http://localhost:8088/", "admin", 
      password, timeout=None, keep_alive=True) 
db.server.setUser("foo", "foo", "", []) 

Aber dies führt zu diesem Fehler:

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    db.server.setUser("foo", "foo", "", []) 
    File "/usr/lib/python2.7/xmlrpclib.py", line 1243, in __call__ 
    return self.__send(self.__name, args) 
    File "/usr/lib/python2.7/xmlrpclib.py", line 1602, in __request 
    verbose=self.__verbose 
    File "/home/ldd/Documents/mangalam/btw/software/btw/.btw-venv/local/lib/python2.7/site-packages/eulexistdb/db.py", line 823, in request 
    return self.parse_response(resp) 
    File "/home/ldd/Documents/mangalam/btw/software/btw/.btw-venv/local/lib/python2.7/site-packages/eulexistdb/db.py", line 832, in parse_response 
    return unmarshaller.close() 
    File "/usr/lib/python2.7/xmlrpclib.py", line 800, in close 
    raise Fault(**self._stack[0]) 
xmlrpclib.Fault: <Fault 0: 'No such handler: Default.setUser'> 

Ich weiß, dass die Verbindung zum Server funktioniert, weil ich createCollection verwenden kann, was auch auf der gleichen Seite dokumentiert ist.

Ich benutze Version 2.2 von eXist.

Antwort

1

Die Dokumentation von eXist-db ist falsch.

setUser ist keine Funktion, die von Version 2.2 unterstützt wird. Für eine bessere Liste, welche Anrufe unterstützt werden, werfen Sie einen Blick auf die Javadoc für RpcApi. Sie werden sehen, dass setUser nicht aufgeführt ist, aber addAccount finden, die neue Benutzer erstellen kann. Also dieser Code funktioniert:

import os 

from eulexistdb.db import ExistDB 

password = os.environ["PASS"] 
db = ExistDB("http://localhost:8088/", "admin", 
      password, timeout=None, keep_alive=True) 
db.server.addAccount("foo", "foo", "", [], True, 0022, {}) 

ich auf dem Code von RpcConnection eigentlich auf der Suche empfehlen, die RpcApi implementiert, da die API-Dokumentation sagt fast nichts über das Format der erforderlichen Parameter und über das Verhalten der verschiedenen Methoden. Zum Beispiel gibt getGroup eine null (die in Python None wird) zurück, wenn die angeforderte Gruppe nicht existiert, aber getAccount löst eine Ausnahme aus, wenn das Konto nicht existiert. Warum? Wer weiß, aber die Dokumentation sagt dir das nicht.

+0

Bitte beachten Sie die Einreichung eines Problems für eXist-db unter https://github.com/exist-db/exist. – joewiz