@@ -35,36 +35,37 @@ def load_variables():
3535 base_url = ("https://" + os .environ ["PYCONFLUENCE_ORG" ] + ".atlassian"
3636 ".net/wiki/rest/api/content" )
3737
38-
39- def rest (url , req = "GET" , data = None ):
38+ def rest (url , req = "GET" , data = None , files = None ):
4039 """Main function to be called from this module.
4140
4241 send a request using method 'req' and to the url. the _rest() function
4342 will add the base_url to this, so 'url' should be something like '/ips'.
4443 """
4544 load_variables ()
4645
47- return _rest (base_url + url , req , data )
46+ return _rest (base_url + url , req , data , files )
4847
4948
50- def _rest (url , req , data = None ):
49+ def _rest (url , req , data = None , files = None ):
5150 """Send a rest rest request to the server."""
52- if url .upper ().startswith ("HTTPS" ):
51+ if not url .upper ().startswith ("HTTPS" ):
5352 print ("Secure connection required: Please use HTTPS or https" )
5453 return ""
54+ if "../" in url :
55+ url = url .replace ("https://" ,"" )
56+ url = "https://" + os .path .normpath (url )
5557
5658 req = req .upper ()
5759 if req != "GET" and req != "PUT" and req != "POST" and req != "DELETE" :
5860 return ""
5961
60- status , body = _api_action (url , req , data )
62+ status , body = _api_action (url , req , data , files )
6163 if (int (status ) >= 200 and int (status ) <= 226 ):
6264 return body
6365 else :
6466 return body
6567
66-
67- def _api_action (url , req , data = None ):
68+ def _api_action (url , req , data = None , files = None ):
6869 """Take action based on what kind of request is needed."""
6970 requisite_headers = {'Accept' : 'application/json' ,
7071 'Content-Type' : 'application/json' }
@@ -76,8 +77,11 @@ def _api_action(url, req, data=None):
7677 response = requests .put (url , headers = requisite_headers , auth = auth ,
7778 data = data )
7879 elif req == "POST" :
80+ if files != None :
81+ requisite_headers .pop ('Content-Type' ,None )
82+ requisite_headers ["X-Atlassian-Token" ] = "no-check"
7983 response = requests .post (url , headers = requisite_headers , auth = auth ,
80- data = data )
84+ data = data , files = files )
8185 elif req == "DELETE" :
8286 response = requests .delete (url , headers = requisite_headers , auth = auth )
8387
0 commit comments