Ticket #1849: FL_ticket_1849.diff

File FL_ticket_1849.diff, 3.1 kB (added by tracguest, 3 years ago)
  • funkload/PatchWebunit.py

    old new  
    253253        else: 
    254254            # Normal post 
    255255            h.putrequest('POST', url) 
    256         is_multipart = False 
     256        is_multipart = is_urlencoded = False 
    257257        if postdata: 
    258             for field, value in postdata: 
    259                 if isinstance(value, Upload): 
    260                     # Post with a data file requires multipart mimeencode 
    261                     is_multipart = True 
     258            if isinstance(postdata, dict): 
     259                is_urlencoded = True 
     260                for field, value in postdata: 
     261                    if isinstance(value, Upload): 
     262                        # Post with a data file requires multipart mimeencode 
     263                        is_multipart = True 
    262264        if is_multipart: 
    263265            params = mimeEncode(postdata) 
    264266            h.putheader('Content-type', 'multipart/form-data; boundary=%s'% 
    265267                        BOUNDARY) 
    266         else
     268        elif is_urlencoded
    267269            params = urlencode(postdata) 
    268270            h.putheader('Content-type', 'application/x-www-form-urlencoded') 
     271        elif isinstance(postdata, str): 
     272            params = postdata 
    269273        h.putheader('Content-length', str(len(params))) 
    270274    else: 
    271275        if webproxy: 
  • funkload/FunkLoadTestCase.py

    old new  
    231231        # ok codes 
    232232        if ok_codes is None: 
    233233            ok_codes = self.ok_codes 
     234        params = None 
    234235        if type(params_in) is DictType: 
    235236            params_in = params_in.items() 
    236         params = [] 
    237         if params_in: 
    238             for key, value in params_in: 
    239                 if type(value) is DictType: 
    240                     for val, selected in value.items(): 
    241                         if selected: 
     237             
     238            params = [] 
     239            if params_in: 
     240                for key, value in params_in: 
     241                    if type(value) is DictType: 
     242                        for val, selected in value.items(): 
     243                            if selected: 
     244                                params.append((key, val)) 
     245                    elif type(value) in (ListType, TupleType): 
     246                        for val in value: 
    242247                            params.append((key, val)) 
    243                 elif type(value) in (ListType, TupleType): 
    244                     for val in value: 
    245                         params.append((key, val)) 
    246                 else: 
    247                     params.append((key, value)) 
    248  
     248                    else: 
     249                        params.append((key, value)) 
     250        elif isinstance(params_in, unicode): 
     251            params = params_in.encode('utf-8') 
     252        elif isinstance(params_in, str): 
     253            params = params_in 
     254        elif hasattr(params_in, 'read'): 
     255            params = params_in.read() 
     256             
    249257        if method == 'get' and params: 
    250258            url = url_in + '?' + urlencode(params) 
    251259        else: