コード例 #1
0
ファイル: PlexOAuthController.cs プロジェクト: sir-marv/Ombi
        public async Task <IActionResult> OAuthWizardCallBack([FromRoute] int pinId)
        {
            var accessToken = await _manager.GetAccessTokenFromPin(pinId);

            if (accessToken.IsNullOrEmpty())
            {
                return(Json(new
                {
                    success = false,
                    error = "Authentication did not work. Please try again"
                }));
            }
            var settings = await _plexSettings.GetSettingsAsync();

            var server = await _plexApi.GetServer(accessToken);

            var servers = server.Server.FirstOrDefault();

            if (servers == null)
            {
                _log.LogWarning("Looks like we can't find any Plex Servers");
            }
            _log.LogDebug("Adding first server");

            settings.Enable  = true;
            settings.Servers = new List <PlexServers> {
                new PlexServers
                {
                    PlexAuthToken     = accessToken,
                    Id                = new Random().Next(),
                    Ip                = servers?.LocalAddresses?.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)?.FirstOrDefault() ?? string.Empty,
                    MachineIdentifier = servers?.MachineIdentifier ?? string.Empty,
                    Port              = int.Parse(servers?.Port ?? "0"),
                    Ssl               = (servers?.Scheme ?? "http") != "http",
                    Name              = "Server 1",
                }
            };

            await _plexSettings.SaveSettingsAsync(settings);

            return(Json(new { accessToken }));
        }