private async Task<ArgumentHandleResult> ProcessUriRequest(string uri) {
if (!uri.StartsWith(CustomUriSchemeHelper.UriScheme, StringComparison.OrdinalIgnoreCase)) return ArgumentHandleResult.FailedShow;
var request = uri.SubstringExt(CustomUriSchemeHelper.UriScheme.Length);
Logging.Debug("URI Request: " + request);
if (!request.StartsWith(@"//", StringComparison.Ordinal)) {
#pragma warning disable 612
return await ProcessUriRequestObsolete(request);
#pragma warning restore 612
}
CustomUriRequest custom;
try {
custom = CustomUriRequest.Parse(uri);
} catch (Exception) {
NonfatalError.Notify(AppStrings.Arguments_CannotParseRequest, AppStrings.Main_CannotProcessArgument_Commentary);
return ArgumentHandleResult.Failed;
}
try {
switch (custom.Path.ToLowerInvariant()) {
case "setsteamid":
return ArgumentHandleResult.Ignore; // TODO?
case "race/online":
return await ProgressRaceOnline(custom.Params);
case "loadgooglespreadsheetslocale":
return await ProcessGoogleSpreadsheetsLocale(custom.Params.Get(@"id"), custom.Params.Get(@"locale"), custom.Params.GetFlag(@"around"));
case "replay":
return await ProcessReplay(custom.Params.Get(@"url"), custom.Params.Get(@"uncompressed") == null);
case "rsr":
return await ProcessRsrEvent(custom.Params.Get(@"id"));
case "rsr/setup":
return await ProcessRsrSetup(custom.Params.Get(@"id"));
case "shared":
return await ProcessShared(custom.Params.Get(@"id"));
default:
NonfatalError.Notify(string.Format(AppStrings.Main_NotSupportedRequest, custom.Path), AppStrings.Main_CannotProcessArgument_Commentary);
return ArgumentHandleResult.Failed;
}
} catch (Exception e) {
NonfatalError.Notify(AppStrings.Arguments_CannotProcessRequest, AppStrings.Arguments_CannotProcessRequest_Commentary, e);
return ArgumentHandleResult.Failed;
}
}