Skip to content

Commit af6bd7f

Browse files
author
Jarek Śmiejczak
committed
Initial bamboo support
1 parent 3884636 commit af6bd7f

File tree

2 files changed

+71
-5
lines changed

2 files changed

+71
-5
lines changed

atlassian/__init__.py

+19-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import json
22
import logging
3+
from urllib.parse import urlencode, urljoin
34
import requests
45

6+
57
log = logging.getLogger("atlassian")
68

79

@@ -22,12 +24,23 @@ def log_curl_debug(self, method, path, data=None, headers={}, level=logging.DEBU
2224
url='{0}{1}'.format(self.url, path))
2325
log.log(level=level, msg=message)
2426

25-
def request(self, method='GET', path='/', data=None,
27+
def resource_url(self, resource, version='latest'):
28+
return urljoin('rest', version, resource)
29+
30+
def request(self, method='GET', path='/', data=None, args=None, kwargs=None,
2631
headers={'Content-Type': 'application/json', 'Accept': 'application/json'}):
2732
self.log_curl_debug(method=method, path=path, headers=headers, data=data)
33+
url = urljoin(self.url, path)
34+
if data or args:
35+
url += '?'
36+
if data:
37+
url += urlencode(params or {})
38+
if args:
39+
url += ('&' if data else '') + '&'.join(args or [])
40+
2841
response = requests.request(
2942
method=method,
30-
url='{0}{1}'.format(self.url, path),
43+
url=url,
3144
headers=headers,
3245
data=json.dumps(data),
3346
auth=(self.username, self.password),
@@ -42,8 +55,8 @@ def request(self, method='GET', path='/', data=None,
4255
response.raise_for_status()
4356
return response
4457

45-
def get(self, path, data=None, headers={'Content-Type': 'application/json', 'Accept': 'application/json'}):
46-
return self.request('GET', path=path, data=data, headers=headers).json()
58+
def get(self, path, data=None, args=None, kwargs=None, headers={'Content-Type': 'application/json', 'Accept': 'application/json'}):
59+
return self.request('GET', path=path, args=args, kwargs=kwargs, data=data, headers=headers).json()
4760

4861
def post(self, path, data=None, headers={'Content-Type': 'application/json', 'Accept': 'application/json'}):
4962
try:
@@ -67,5 +80,6 @@ def delete(self, path, data=None, headers={'Content-Type': 'application/json', '
6780
from .jira import Jira
6881
from .stash import Stash
6982
from .portfolio import Portfolio
83+
from .bamboo import Bamboo
7084

71-
__all__ = ['Confluence', 'Jira', 'Stash', 'Portfolio']
85+
__all__ = ['Confluence', 'Jira', 'Stash', 'Portfolio', 'Bamboo']

atlassian/bamboo.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import logging
2+
from atlassian import AtlassianRestAPI
3+
4+
5+
log = logging.getLogger('atlassian.stash')
6+
7+
8+
class Stash(AtlassianRestAPI):
9+
10+
def projects_list(self, expand=None, favourite=False, cloverEnabled=False, start=0, limit=25):
11+
args = ()
12+
kwargs = {}
13+
return self.get(self.resource_url('project'), args=args, kwargs=kwargs)
14+
15+
def plans_list(self, expand=None, favourite=False, cloverEnabled=False, start=0, limit=25):
16+
pass
17+
18+
def result_list(self, project_key=None, plan_key=None, build_number=None,
19+
expand=None, favourite=False, cloverEnabled=False, label=None,
20+
start=0, limit=25):
21+
pass
22+
23+
def get_project_latest_results(self, project, expand=None, favourite=False, cloverEnabled=False, label=None,
24+
start=0, limit=25):
25+
return self.result_list(project_key, expand=expand, favourite=favourite, cloverEnabled=cloverEnabled,
26+
label=label, start=start, limit=limit)
27+
28+
def get_plan_results(self, project_key, plan_key, expand=None, favourite=False, cloverEnabled=False, label=None,
29+
start=0, limit=25):
30+
return self.result_list(project_key, plan_key, expand=expand, favourite=favourite, cloverEnabled=cloverEnabled,
31+
label=label, start=start, limit=limit)
32+
33+
def get_result(self, project_key, plan_key, build_key, expand=None, favourite=False, cloverEnabled=False, label=None,
34+
start=0, limit=25):
35+
return self.result_list(project_key, plan_key, expand=expand, favourite=favourite, cloverEnabled=cloverEnabled,
36+
label=label, start=start, limit=limit)
37+
38+
def chart_list(self, reportKey, buildKeys, groupByPeriod, dateFrom=None, dateTo=None,
39+
width=None, height=None):
40+
return self.result_list()
41+
42+
def reports_list(self, expand=None, start=0, limit=25):
43+
pass
44+
45+
def get_comments(self, project_key, plan_key, build_number):
46+
pass
47+
48+
def get_labels(self, project_key, plan_key, build_number):
49+
pass
50+
51+
def get_server_info(self):
52+
pass

0 commit comments

Comments
 (0)