2
0

BrowserLauncher.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using MediaBrowser.Controller;
  3. using MediaBrowser.Controller.Configuration;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.Logging;
  6. namespace Emby.Server.Implementations.Browser
  7. {
  8. /// <summary>
  9. /// Assists in opening application URLs in an external browser.
  10. /// </summary>
  11. public static class BrowserLauncher
  12. {
  13. /// <summary>
  14. /// Opens the home page of the web client.
  15. /// </summary>
  16. /// <param name="appHost">The app host.</param>
  17. public static void OpenWebApp(IServerApplicationHost appHost)
  18. {
  19. TryOpenUrl(appHost, "/web/index.html");
  20. }
  21. /// <summary>
  22. /// Opens the swagger API page.
  23. /// </summary>
  24. /// <param name="appHost">The app host.</param>
  25. public static void OpenSwaggerPage(IServerApplicationHost appHost)
  26. {
  27. TryOpenUrl(appHost, "/api-docs/swagger");
  28. }
  29. /// <summary>
  30. /// Opens the specified URL in an external browser window. Any exceptions will be logged, but ignored.
  31. /// </summary>
  32. /// <param name="appHost">The application host.</param>
  33. /// <param name="relativeUrl">The URL to open, relative to the server base URL.</param>
  34. private static void TryOpenUrl(IServerApplicationHost appHost, string relativeUrl)
  35. {
  36. try
  37. {
  38. string baseUrl = appHost.GetLocalApiUrl("localhost");
  39. appHost.LaunchUrl(baseUrl + relativeUrl);
  40. }
  41. catch (Exception ex)
  42. {
  43. var logger = appHost.Resolve<ILogger<IServerApplicationHost>>();
  44. logger?.LogError(ex, "Failed to open browser window with URL {URL}", relativeUrl);
  45. }
  46. }
  47. }
  48. }