@@ -282,6 +282,10 @@ def __init__(self, email=None, password=None, account_type='HOSTED_OR_GOOGLE',
282282 if http_request_handler .__name__ == 'gdata.urlfetch' :
283283 import gdata .alt .appengine
284284 self .http_client = gdata .alt .appengine .AppEngineHttpClient ()
285+
286+ def _SetSessionId (self , session_id ):
287+ """Used in unit tests to simulate a 302 which sets a gsessionid."""
288+ self .__gsessionid = session_id
285289
286290 # Define properties for GDataService
287291 def _SetAuthSubToken (self , auth_token , scopes = None ):
@@ -1213,10 +1217,9 @@ def PostOrPut(self, verb, data, uri, extra_headers=None, url_params=None,
12131217
12141218 if self .__gsessionid is not None :
12151219 if uri .find ('gsessionid=' ) < 0 :
1216- if uri .find ('?' ) > - 1 :
1217- uri += '&gsessionid=%s' % (self .__gsessionid ,)
1218- else :
1219- uri += '?gsessionid=%s' % (self .__gsessionid ,)
1220+ if url_params is None :
1221+ url_params = {}
1222+ url_params ['gsessionid' ] = self .__gsessionid
12201223
12211224 if data and media_source :
12221225 if ElementTree .iselement (data ):
@@ -1239,7 +1242,7 @@ def PostOrPut(self, verb, data, uri, extra_headers=None, url_params=None,
12391242 extra_headers ['Content-Type' ] = 'multipart/related; boundary=END_OF_PART'
12401243 server_response = self .request (verb , uri ,
12411244 data = [multipart [0 ], data_str , multipart [1 ], media_source .file_handle ,
1242- multipart [2 ]], headers = extra_headers )
1245+ multipart [2 ]], headers = extra_headers , url_params = url_params )
12431246 result_body = server_response .read ()
12441247
12451248 elif media_source or isinstance (data , gdata .MediaSource ):
@@ -1248,15 +1251,16 @@ def PostOrPut(self, verb, data, uri, extra_headers=None, url_params=None,
12481251 extra_headers ['Content-Length' ] = str (media_source .content_length )
12491252 extra_headers ['Content-Type' ] = media_source .content_type
12501253 server_response = self .request (verb , uri ,
1251- data = media_source .file_handle , headers = extra_headers )
1254+ data = media_source .file_handle , headers = extra_headers ,
1255+ url_params = url_params )
12521256 result_body = server_response .read ()
12531257
12541258 else :
12551259 http_data = data
12561260 content_type = 'application/atom+xml'
12571261 extra_headers ['Content-Type' ] = content_type
12581262 server_response = self .request (verb , uri , data = http_data ,
1259- headers = extra_headers )
1263+ headers = extra_headers , url_params = url_params )
12601264 result_body = server_response .read ()
12611265
12621266 # Server returns 201 for most post requests, but when performing a batch
@@ -1358,13 +1362,12 @@ def Delete(self, uri, extra_headers=None, url_params=None,
13581362
13591363 if self .__gsessionid is not None :
13601364 if uri .find ('gsessionid=' ) < 0 :
1361- if uri .find ('?' ) > - 1 :
1362- uri += '&gsessionid=%s' % (self .__gsessionid ,)
1363- else :
1364- uri += '?gsessionid=%s' % (self .__gsessionid ,)
1365+ if url_params is None :
1366+ url_params = {}
1367+ url_params ['gsessionid' ] = self .__gsessionid
13651368
13661369 server_response = self .request ('DELETE' , uri ,
1367- headers = extra_headers )
1370+ headers = extra_headers , url_params = url_params )
13681371 result_body = server_response .read ()
13691372
13701373 if server_response .status == 200 :
0 commit comments