2828
2929import datetime
3030import email .parser
31+ import io
3132import json
3233import mimetypes
3334from multiprocessing .pool import ThreadPool
4142from six .moves .urllib .parse import quote
4243import six
4344from urllib3 import encode_multipart_formdata
45+ from base64 import b64encode
4446
4547from asposewordscloud .configuration import Configuration
4648import asposewordscloud .models
@@ -81,12 +83,12 @@ def __init__(self, configuration=None, header_name=None, header_value=None,
8183
8284 self .pool = None
8385 self .rest_client = rest .RESTClientObject (configuration )
84- self .default_headers = {'x-aspose-client' : 'python sdk' , 'x-aspose-version' : '21.10 ' }
86+ self .default_headers = {'x-aspose-client' : 'python sdk' , 'x-aspose-version' : '21.11 ' }
8587 if header_name is not None :
8688 self .default_headers [header_name ] = header_value
8789 self .cookie = cookie
8890 # Set default User-Agent.
89- self .user_agent = 'python sdk 21.10 '
91+ self .user_agent = 'python sdk 21.11 '
9092
9193 def __del__ (self ):
9294 if not self .pool is None :
@@ -252,15 +254,21 @@ def sanitize_for_serialization(self, obj):
252254 return {key : self .sanitize_for_serialization (val )
253255 for key , val in six .iteritems (obj_dict )}
254256
255- def deserialize_multipart (self , multipart , requests ):
256- if len (multipart .parts ) != len (requests ):
257- raise rest .ApiException (status = 0 , reason = "Response parts and requests count mismatch." )
257+ def deserialize_multipart (self , without_intermediate_results , multipart , requests ):
258+ if without_intermediate_results :
259+ if len (multipart .parts ) != 1 :
260+ raise rest .ApiException (status = 0 , reason = "Response must have one part." )
261+ else :
262+ if len (multipart .parts ) != len (requests ):
263+ raise rest .ApiException (status = 0 , reason = "Response parts and requests count mismatch." )
264+
265+ id_to_requests = {}
266+ for r in requests :
267+ id_to_requests [r .id ] = r
258268
259269 results = []
260- for part_id in range ( len ( multipart .parts )) :
270+ for part in multipart .parts :
261271 try :
262- response_type = requests [part_id ].get_response_type ()
263- part = multipart .parts [part_id ]
264272 data = part .content
265273 packet_parts = data .split (b"\r \n \r \n " , 1 )
266274 header_parts = packet_parts [0 ].split (b"\r \n " )
@@ -274,6 +282,8 @@ def deserialize_multipart(self, multipart, requests):
274282 if len (header_line_parts ) == 2 :
275283 headers [header_line_parts [0 ].strip ()] = header_line_parts [1 ].strip ()
276284
285+ response_type = id_to_requests [headers ["RequestId" ]].get_response_type ()
286+
277287 result = None
278288 if code == 200 :
279289 if response_type is not 'None' :
@@ -524,12 +534,13 @@ def prepare_post_parameters(self, post_params=None):
524534 continue
525535 file_names = v if type (v ) is list else [v ]
526536 for n in file_names :
527- filename = os .path .basename (n .name )
528- filedata = n .read ()
529- mimetype = (mimetypes .guess_type (filename )[0 ] or
530- 'application/octet-stream' )
531- params .append (
532- tuple ([k , tuple ([filename , filedata , mimetype ])]))
537+ if isinstance (n , io .StringIO ):
538+ params .append (tuple ([k , tuple (['document' , n .getvalue (), 'application/octet-stream' ])]))
539+ else :
540+ filename = os .path .basename (n .name )
541+ filedata = n .read ()
542+ mimetype = (mimetypes .guess_type (filename )[0 ] or 'application/octet-stream' )
543+ params .append (tuple ([k , tuple ([filename , filedata , mimetype ])]))
533544
534545 return params
535546
@@ -708,11 +719,13 @@ def __deserialize_model(self, data, klass):
708719 instance = self .__deserialize (data , klass_name )
709720 return instance
710721
711- def request_to_batch_part (self , request ):
722+ def request_to_batch_part (self , request , rsa_key ):
712723 http_request = request .create_http_request (self )
713724 if http_request ['form_params' ] and http_request ['body' ]:
714725 raise ValueError ("body parameter cannot be used with post_params parameter." )
715726
727+ self .handle_password (http_request , rsa_key )
728+
716729 url = http_request ['path' ][len ('/v4.0/words/' ):]
717730 if http_request ['query_params' ]:
718731 url += '?' + urlencode (http_request ['query_params' ])
@@ -746,4 +759,20 @@ def request_to_batch_part(self, request):
746759 if body :
747760 result .extend (body )
748761
749- return [None , result , 'multipart' ]
762+ return [None , result , 'multipart' ]
763+
764+ def handle_password (self , http_params , rsa_key ):
765+
766+ if rsa_key is None :
767+ return
768+
769+ index = - 1
770+ for i in range (len (http_params ['query_params' ])):
771+ k , v = http_params ['query_params' ][i ]
772+ if k == 'password' :
773+ index = i
774+ break
775+
776+ if index > - 1 :
777+ k ,v = http_params ['query_params' ].pop (index )
778+ http_params ['query_params' ].append (('encryptedPassword' , b64encode (rsa_key .encrypt (v .encode ('utf-8' )))))
0 commit comments