11import datetime
22from typing import TYPE_CHECKING , AnyStr
3- from urllib .parse import quote
3+ from urllib .parse import quote , unquote
44
55import requests
66
@@ -608,9 +608,13 @@ def save_binary(context, server_relative_url, content):
608608 :type server_relative_url: str
609609 :type content: str
610610 """
611+ try :
612+ decoded_server_relative_url = unquote (server_relative_url )
613+ except (ValueError , AttributeError , TypeError ):
614+ decoded_server_relative_url = server_relative_url
611615 url = quote (
612616 r"{0}/web/getFileByServerRelativePath(DecodedUrl='{1}')/\$value" .format (
613- context .service_root_url (), server_relative_url
617+ context .service_root_url (), decoded_server_relative_url
614618 ),
615619 safe = ":/" ,
616620 )
@@ -630,9 +634,13 @@ def open_binary(context, server_relative_url):
630634 :type server_relative_url: str
631635 :return Response
632636 """
637+ try :
638+ decoded_server_relative_url = unquote (server_relative_url )
639+ except (ValueError , AttributeError , TypeError ):
640+ decoded_server_relative_url = server_relative_url
633641 url = quote (
634642 r"{0}/web/getFileByServerRelativePath(DecodedUrl='{1}')/\$value" .format (
635- context .service_root_url (), server_relative_url
643+ context .service_root_url (), decoded_server_relative_url
636644 ),
637645 safe = ":/" ,
638646 )
0 commit comments