11
11
from xmlrpclib import ServerProxy , Binary , Fault
12
12
from urllib import urlencode
13
13
14
+ from base64 import b64decode , b64encode
15
+
14
16
ERR = 'XML or text declaration not at start of entity: line 2, column 0'
15
17
16
18
def utc2local (date ):
@@ -97,7 +99,7 @@ def __init__(self, dokuwiki):
97
99
self ._dokuwiki = dokuwiki
98
100
99
101
def list (self , namespace = '/' , ** options ):
100
- return self ._dokuwiki .send ('dokuwiki.getPagelist' , namespace , ** options )
102
+ return self ._dokuwiki .send ('dokuwiki.getPagelist' , namespace , options )
101
103
102
104
def changes (self , timestamp ):
103
105
return self ._dokuwiki .send ('wiki.getRecentChanges' , timestamp )
@@ -112,12 +114,15 @@ def info(self, pagename, version=''):
112
114
return (self ._dokuwiki .send ('wiki.getPageInfoVersion' , pagename , version )
113
115
if version else self ._dokuwiki .send ('wiki.getPageInfo' , pagename ))
114
116
115
- def get (self , pagename , version = '' ):
116
- return (self ._dokuwiki .send ('wiki.getPageVersion' , pagename , version ))
117
+ def get (self , pagename , version = None ):
118
+ if version is None :
119
+ return self ._dokuwiki .send ('wiki.getPage' , pagename )
120
+
121
+ return self ._dokuwiki .send ('wiki.getPageVersion' , pagename , version )
117
122
118
123
def append (self , pagename , content , ** options ):
119
124
return self ._dokuwiki .send (
120
- 'dokuwiki.appendPage' , pagename , content , ** options )
125
+ 'dokuwiki.appendPage' , pagename , content , options )
121
126
122
127
def html (self , pagename , version = '' ):
123
128
return (self ._dokuwiki .send ('wiki.getPageHTMLVersion' , pagename , version )
@@ -126,7 +131,7 @@ def html(self, pagename, version=''):
126
131
def set (self , pagename , content , ** options ):
127
132
try :
128
133
return self ._dokuwiki .send (
129
- 'wiki.putPage' , pagename , content , ** options )
134
+ 'wiki.putPage' , pagename , content , options )
130
135
except ExpatError as err :
131
136
# Sometime the first line of the XML response is blank which raise
132
137
# the 'ExpatError' exception although the change has been done. This
@@ -167,10 +172,15 @@ def changes(self, timestamp):
167
172
return self ._dokuwiki .send ('wiki.getRecentMediaChanges' , timestamp )
168
173
169
174
def list (self , namespace = '/' , ** options ):
170
- return self ._dokuwiki .send ('wiki.getAttachments' , namespace , ** options )
175
+ return self ._dokuwiki .send ('wiki.getAttachments' , namespace , options )
171
176
172
- def get (self , media , dirpath , filename = '' , overwrite = False ):
177
+ def get (self , media , dirpath = None , filename = '' , overwrite = False ):
173
178
import os
179
+ data = self ._dokuwiki .send ('wiki.getAttachment' , media )
180
+ data = b64decode (data )
181
+ if dirpath is None :
182
+ return data
183
+
174
184
if not filename :
175
185
filename = media .replace ('/' , ':' ).split (':' )[- 1 ]
176
186
if not os .path .exists (dirpath ):
@@ -179,7 +189,7 @@ def get(self, media, dirpath, filename='', overwrite=False):
179
189
if os .path .exists (filepath ) and not overwrite :
180
190
raise FileExistsError ("[Errno 17] File exists: '%s'" % filepath )
181
191
with open (filepath , 'wb' ) as fhandler :
182
- fhandler .write (self . _dokuwiki . send ( 'wiki.getAttachment' , media ). data )
192
+ fhandler .write (data )
183
193
184
194
def info (self , media ):
185
195
return self ._dokuwiki .send ('wiki.getAttachmentInfo' , media )
@@ -189,6 +199,10 @@ def add(self, media, filepath, overwrite=True):
189
199
self ._dokuwiki .send ('wiki.putAttachment' ,
190
200
media , Binary (fhandler .read ()), ow = overwrite )
191
201
202
+ def set (self , media , _bytes , overwrite = True ):
203
+ self ._dokuwiki .send ('wiki.putAttachment' , media ,
204
+ b64encode (_bytes ), ow = overwrite )
205
+
192
206
def delete (self , media ):
193
207
return self ._dokuwiki .send ('wiki.deleteAttachment' , media )
194
208
0 commit comments