private async Task<ArgumentHandleResult> ProcessUriRequestObsolete(string request) {
string key, param;
NameValueCollection query;
{
var splitted = request.Split(new[] { '/' }, 2);
if (splitted.Length != 2) return ArgumentHandleResult.FailedShow;
key = splitted[0];
param = splitted[1];
var index = param.IndexOf('?');
if (index != -1) {
query = HttpUtility.ParseQueryString(param.SubstringExt(index + 1));
param = param.Substring(0, index);
} else {
query = null;
}
}
switch (key) {
case "quickdrive":
var preset = Convert.FromBase64String(param).ToUtf8String();
if (!QuickDrive.RunSerializedPreset(preset)) {
NonfatalError.Notify(AppStrings.Common_CannotStartRace, AppStrings.Arguments_CannotStartRace_Commentary);
return ArgumentHandleResult.Failed;
}
break;
case "race":
var raceIni = Convert.FromBase64String(param).ToUtf8String();
await GameWrapper.StartAsync(new Game.StartProperties {
PreparedConfig = IniFile.Parse(raceIni)
});
break;
case "open":
case "install":
var address = Convert.FromBase64String(param).ToUtf8String();
var path = await LoadRemoveFile(address, query?.Get(@"name"));
if (string.IsNullOrWhiteSpace(path)) return ArgumentHandleResult.FailedShow;
try {
if (!FileUtils.Exists(path)) return ArgumentHandleResult.FailedShow;
} catch (Exception) {
return ArgumentHandleResult.FailedShow;
}
return await ProcessInputFile(path);
}
return ArgumentHandleResult.Successful;
}