public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { if (Uri.TryCreate(url.AbsoluteString, UriKind.Absolute, out var uri) && uri.Scheme.Equals("pawotter") && uri.Host.Equals("app")) { switch (uri.AbsolutePath) { case string authorize when Regex.IsMatch(authorize, @"^/authorize?.+"): var refreshToken = MastodonOAuthClient.GetRefreshTokenFromRedirectUri(new Uri(url.AbsoluteString)); Logger.Shared.Debug($"Application.OpenUrl: AUTHORIZE (code = {refreshToken})"); NSNotificationCenter.DefaultCenter.PostNotificationName(WebViewController.CloseSafariViewControllerNotification, url); break; case string home when Regex.IsMatch(home, @"^/home"): Logger.Shared.Debug($"Application.OpenUrl: HOME"); break; default: Logger.Shared.Debug($"Application.OpenUrl: {uri}"); break; } return(true); } Logger.Shared.Debug($"Application.OpenUrl: INVALID (uri = {uri})"); return(false); }
public void GetOAuthAuthorizeUriTest(string uri, string code) { Assert.AreEqual(code, MastodonOAuthClient.GetRefreshTokenFromRedirectUri(new Uri(uri))); }