From 26848535187821399b7b5800376161dff3ad0cc3 Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Wed, 10 Sep 2014 13:02:27 +0200 Subject: Add copy and move methods --- industriart/artifactory.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'industriart/artifactory.py') diff --git a/industriart/artifactory.py b/industriart/artifactory.py index 241d7ba..4a719a4 100644 --- a/industriart/artifactory.py +++ b/industriart/artifactory.py @@ -76,6 +76,46 @@ class Artifactory(object): url = posixpath.join(self.base, 'api/repositories') return self.get(url) + def _copy_or_move(self, action, source, target): + try: + if len(source) != 2: + raise ValueError("Source tuple not (repo, path)") + except TypeError: + raise TypeError("Source must be a tuple") + + try: + if len(target) != 2: + raise ValueError("Target tuple not (repo, path)") + except TypeError: + raise TypeError("Source must be a tuple") + + url = posixpath.join(self.base, + 'api', action, + source[0], source[1]) + dst = posixpath.join(target[0], target[1]) + + log.debug("%s %s", action.capitalize(), url) + # Parameter order matters for artifactory + return self.post(url, {'to': dst}) + + def copy(self, source, target): + """ + Copy artifacts in the repository from soure to target + + :arg tuple source: The source in the form (repo, path) to copy + :arg tuple target: The target in the form (repo, path) to copy + """ + return self._copy_or_move('copy', source, target) + + def move(self, source, target): + """ + Move artifacts in the repository from soure to target + + :arg tuple source: The source in the form (repo, path) to copy + :arg tuple target: The target in the form (repo, path) to copy + """ + return self._copy_or_move('move', source, target) + def _transform_url(self, url): """ Helper to rewrite URLs. All artifactory URLs are passed through this method -- cgit v1.2.3