Skip to content

Commit 098b556

Browse files
committed
open file for writing only after token is successfully obtained
1 parent d1bf0be commit 098b556

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

scripts/sasl-xoauth2-tool.in

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ def url_safe_escape(instring:str) -> str:
3939
return urllib.parse.quote(instring, safe='~-._')
4040

4141

42-
def dump_overwrite(token:dict, output_file:IO[str], input_dict:dict):
42+
def dump_overwrite(token:dict, output_filename:str, input_dict:dict):
4343
# overwrite fields in previous token (represented by input_dict)
4444
# that also have values from new token
4545
input_dict.update(token)
46-
json.dump(input_dict, output_file, indent=4)
46+
with open(output_filename,'w') as output_file:
47+
json.dump(input_dict, output_file, indent=4)
4748

4849

4950
def gmail_redirect_uri(local_port:int) -> str:
@@ -70,7 +71,7 @@ def gmail_get_token_from_code(client_id:str, client_secret:str, authorization_co
7071
return json.loads(response)
7172

7273

73-
def gmail_get_RequestHandler(client_id:str, client_secret:str, output_file:IO[str], input_dict:dict) -> type:
74+
def gmail_get_RequestHandler(client_id:str, client_secret:str, output_filename:str, input_dict:dict) -> type:
7475
class GMailRequestHandler(http.server.BaseHTTPRequestHandler):
7576
def log_request(self, code:Union[int,str]='-', size:Union[int,str]='-') -> None:
7677
# Silence request logging.
@@ -97,8 +98,7 @@ def gmail_get_RequestHandler(client_id:str, client_secret:str, output_file:IO[st
9798
code,
9899
self.server.server_address[1],
99100
)
100-
dump_overwrite(token, output_file, input_dict)
101-
output_file.close()
101+
dump_overwrite(token, output_filename, input_dict)
102102
sys.exit(0)
103103

104104
def ExtractCodeFromResponse(self) -> Optional[str]:
@@ -115,11 +115,11 @@ def gmail_get_RequestHandler(client_id:str, client_secret:str, output_file:IO[st
115115
return GMailRequestHandler
116116

117117

118-
def get_token_gmail(client_id:str, client_secret:str, scope:str, output_file:IO[str], input_dict:dict) -> None:
118+
def get_token_gmail(client_id:str, client_secret:str, scope:str, output_filename:str, input_dict:dict) -> None:
119119
request_handler_class = gmail_get_RequestHandler(
120120
client_id,
121121
client_secret,
122-
output_file,
122+
output_filename,
123123
input_dict,
124124
)
125125
server = http.server.HTTPServer(('', 0), request_handler_class)
@@ -207,13 +207,13 @@ def outlook_get_initial_tokens_by_device_flow(client_id:str, tenant:str) -> Dict
207207
}
208208

209209

210-
def get_token_outlook(client_id:str, client_secret:str, tenant:str, use_device_flow:bool, output_file:IO[str], input_dict:dict) -> None:
210+
def get_token_outlook(client_id:str, client_secret:str, tenant:str, use_device_flow:bool, output_filename:str, input_dict:dict) -> None:
211211
if use_device_flow:
212212
tokens = outlook_get_initial_tokens_by_device_flow(client_id, tenant)
213213
else:
214214
code = outlook_get_authorization_code(client_id, tenant)
215215
tokens = outlook_get_initial_tokens(client_id, client_secret, tenant, code)
216-
dump_overwrite(tokens, output_file, input_dict)
216+
dump_overwrite(tokens, output_filename, input_dict)
217217

218218
##########
219219

@@ -234,7 +234,6 @@ def subcommand_get_token(args:argparse.Namespace) -> None:
234234
else:
235235
with open(args.output_file,'r') as input_file:
236236
input_dict = json.load(input_file)
237-
args.output_file = open(args.output_file,'w')
238237
if args.service == 'outlook':
239238
if not args.tenant:
240239
parser.error("'outlook' service requires 'tenant' argument.")

0 commit comments

Comments
 (0)