1
1
import json
2
2
import logging
3
+ from urllib .parse import urlencode , urljoin
3
4
import requests
4
5
6
+
5
7
log = logging .getLogger ("atlassian" )
6
8
7
9
@@ -22,12 +24,23 @@ def log_curl_debug(self, method, path, data=None, headers={}, level=logging.DEBU
22
24
url = '{0}{1}' .format (self .url , path ))
23
25
log .log (level = level , msg = message )
24
26
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 ,
26
31
headers = {'Content-Type' : 'application/json' , 'Accept' : 'application/json' }):
27
32
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
+
28
41
response = requests .request (
29
42
method = method ,
30
- url = '{0}{1}' . format ( self . url , path ) ,
43
+ url = url ,
31
44
headers = headers ,
32
45
data = json .dumps (data ),
33
46
auth = (self .username , self .password ),
@@ -42,8 +55,8 @@ def request(self, method='GET', path='/', data=None,
42
55
response .raise_for_status ()
43
56
return response
44
57
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 ()
47
60
48
61
def post (self , path , data = None , headers = {'Content-Type' : 'application/json' , 'Accept' : 'application/json' }):
49
62
try :
@@ -67,5 +80,6 @@ def delete(self, path, data=None, headers={'Content-Type': 'application/json', '
67
80
from .jira import Jira
68
81
from .stash import Stash
69
82
from .portfolio import Portfolio
83
+ from .bamboo import Bamboo
70
84
71
- __all__ = ['Confluence' , 'Jira' , 'Stash' , 'Portfolio' ]
85
+ __all__ = ['Confluence' , 'Jira' , 'Stash' , 'Portfolio' , 'Bamboo' ]
0 commit comments