1
# Copyright (C) 2006-2012, 2016 Canonical Ltd
1
# Copyright (C) 2006-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
247
250
transport._file_streams[self.abspath(relpath)] = result
250
def put_bytes(self, relpath, raw_bytes, mode=None):
251
if not isinstance(raw_bytes, str):
253
'raw_bytes must be a plain string, not %s' % type(raw_bytes))
254
resp = self._call_with_body_bytes(
253
def put_bytes(self, relpath, upload_contents, mode=None):
254
# FIXME: upload_file is probably not safe for non-ascii characters -
255
# should probably just pass all parameters as length-delimited
257
if type(upload_contents) is unicode:
258
# Although not strictly correct, we raise UnicodeEncodeError to be
259
# compatible with other transports.
260
raise UnicodeEncodeError(
261
'undefined', upload_contents, 0, 1,
262
'put_bytes must be given bytes, not unicode.')
263
resp = self._call_with_body_bytes('put',
256
264
(self._remote_path(relpath), self._serialise_optional_mode(mode)),
258
266
self._ensure_ok(resp)
259
return len(raw_bytes)
267
return len(upload_contents)
261
def put_bytes_non_atomic(self, relpath, raw_bytes, mode=None,
269
def put_bytes_non_atomic(self, relpath, bytes, mode=None,
262
270
create_parent_dir=False,
264
272
"""See Transport.put_bytes_non_atomic."""
271
279
'put_non_atomic',
272
280
(self._remote_path(relpath), self._serialise_optional_mode(mode),
273
281
create_parent_str, self._serialise_optional_mode(dir_mode)),
275
283
self._ensure_ok(resp)
277
285
def put_file(self, relpath, upload_file, mode=None):