1
# Copyright (C) 2006-2010 Canonical Ltd
1
# Copyright (C) 2006-2012, 2016 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
247
transport._file_streams[self.abspath(relpath)] = result
250
def put_bytes(self, relpath, upload_contents, mode=None):
251
# FIXME: upload_file is probably not safe for non-ascii characters -
252
# should probably just pass all parameters as length-delimited
254
if type(upload_contents) is unicode:
255
# Although not strictly correct, we raise UnicodeEncodeError to be
256
# compatible with other transports.
257
raise UnicodeEncodeError(
258
'undefined', upload_contents, 0, 1,
259
'put_bytes must be given bytes, not unicode.')
260
resp = self._call_with_body_bytes('put',
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(
261
256
(self._remote_path(relpath), self._serialise_optional_mode(mode)),
263
258
self._ensure_ok(resp)
264
return len(upload_contents)
259
return len(raw_bytes)
266
def put_bytes_non_atomic(self, relpath, bytes, mode=None,
261
def put_bytes_non_atomic(self, relpath, raw_bytes, mode=None,
267
262
create_parent_dir=False,
269
264
"""See Transport.put_bytes_non_atomic."""
276
271
'put_non_atomic',
277
272
(self._remote_path(relpath), self._serialise_optional_mode(mode),
278
273
create_parent_str, self._serialise_optional_mode(dir_mode)),
280
275
self._ensure_ok(resp)
282
277
def put_file(self, relpath, upload_file, mode=None):