Skip to content

Commit fac56d2

Browse files
committed
Merge pull request #4 from JelteF/master
Fix two bugs encountered
2 parents ad21fa1 + 1621291 commit fac56d2

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

dokuwiki.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from xmlrpclib import ServerProxy, Binary, Fault
1212
from urllib import urlencode
1313

14+
from base64 import b64decode, b64encode
15+
1416
ERR = 'XML or text declaration not at start of entity: line 2, column 0'
1517

1618
def utc2local(date):
@@ -97,7 +99,7 @@ def __init__(self, dokuwiki):
9799
self._dokuwiki = dokuwiki
98100

99101
def list(self, namespace='/', **options):
100-
return self._dokuwiki.send('dokuwiki.getPagelist', namespace, **options)
102+
return self._dokuwiki.send('dokuwiki.getPagelist', namespace, options)
101103

102104
def changes(self, timestamp):
103105
return self._dokuwiki.send('wiki.getRecentChanges', timestamp)
@@ -112,12 +114,15 @@ def info(self, pagename, version=''):
112114
return (self._dokuwiki.send('wiki.getPageInfoVersion', pagename, version)
113115
if version else self._dokuwiki.send('wiki.getPageInfo', pagename))
114116

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)
117122

118123
def append(self, pagename, content, **options):
119124
return self._dokuwiki.send(
120-
'dokuwiki.appendPage', pagename, content, **options)
125+
'dokuwiki.appendPage', pagename, content, options)
121126

122127
def html(self, pagename, version=''):
123128
return (self._dokuwiki.send('wiki.getPageHTMLVersion', pagename, version)
@@ -126,7 +131,7 @@ def html(self, pagename, version=''):
126131
def set(self, pagename, content, **options):
127132
try:
128133
return self._dokuwiki.send(
129-
'wiki.putPage', pagename, content, **options)
134+
'wiki.putPage', pagename, content, options)
130135
except ExpatError as err:
131136
# Sometime the first line of the XML response is blank which raise
132137
# the 'ExpatError' exception although the change has been done. This
@@ -167,10 +172,15 @@ def changes(self, timestamp):
167172
return self._dokuwiki.send('wiki.getRecentMediaChanges', timestamp)
168173

169174
def list(self, namespace='/', **options):
170-
return self._dokuwiki.send('wiki.getAttachments', namespace, **options)
175+
return self._dokuwiki.send('wiki.getAttachments', namespace, options)
171176

172-
def get(self, media, dirpath, filename='', overwrite=False):
177+
def get(self, media, dirpath=None, filename='', overwrite=False):
173178
import os
179+
data = self._dokuwiki.send('wiki.getAttachment', media)
180+
data = b64decode(data)
181+
if dirpath is None:
182+
return data
183+
174184
if not filename:
175185
filename = media.replace('/', ':').split(':')[-1]
176186
if not os.path.exists(dirpath):
@@ -179,7 +189,7 @@ def get(self, media, dirpath, filename='', overwrite=False):
179189
if os.path.exists(filepath) and not overwrite:
180190
raise FileExistsError("[Errno 17] File exists: '%s'" % filepath)
181191
with open(filepath, 'wb') as fhandler:
182-
fhandler.write(self._dokuwiki.send('wiki.getAttachment', media).data)
192+
fhandler.write(data)
183193

184194
def info(self, media):
185195
return self._dokuwiki.send('wiki.getAttachmentInfo', media)
@@ -189,6 +199,10 @@ def add(self, media, filepath, overwrite=True):
189199
self._dokuwiki.send('wiki.putAttachment',
190200
media, Binary(fhandler.read()), ow=overwrite)
191201

202+
def set(self, media, _bytes, overwrite=True):
203+
self._dokuwiki.send('wiki.putAttachment', media,
204+
b64encode(_bytes), ow=overwrite)
205+
192206
def delete(self, media):
193207
return self._dokuwiki.send('wiki.deleteAttachment', media)
194208

0 commit comments

Comments
 (0)