aboutsummaryrefslogtreecommitdiff
path: root/industriart
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-09-10 13:02:27 +0200
committerGuido Günther <agx@sigxcpu.org>2014-09-10 14:50:11 +0200
commit26848535187821399b7b5800376161dff3ad0cc3 (patch)
tree90b379adb24f9134b04c2c52b345ad2dac5d4fc0 /industriart
parent370cda042d68706af27115893d062e42f8480424 (diff)
Add copy and move methods
Diffstat (limited to 'industriart')
-rw-r--r--industriart/artifactory.py40
1 files changed, 40 insertions, 0 deletions
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