コード例 #1
0
        private async Task<ResponseInfo> GetConnectionInfo(JToken parameters)
        {
            Guid deviceId = Guid.Parse(parameters["deviceId"].ToString());

            this.accessToken = this.library.RemoteAccessControl.RegisterRemoteAccessToken(deviceId);
            this.Log().Info("Registering new mobile client with access token {0}", this.accessToken);

            if (this.library.RemoteAccessControl.IsRemoteAccessReallyLocked)
            {
                var password = parameters["password"].Value<string>();

                if (password != null)
                {
                    try
                    {
                        this.library.RemoteAccessControl.UpgradeRemoteAccess(this.accessToken, password);
                    }

                    catch (WrongPasswordException)
                    {
                        return CreateResponse(ResponseStatus.WrongPassword);
                    }
                }
            }

            AccessPermission accessPermission = await this.library.RemoteAccessControl.ObserveAccessPermission(this.accessToken).FirstAsync();

            // This is stupid
            NetworkAccessPermission permission = accessPermission == AccessPermission.Admin ? NetworkAccessPermission.Admin : NetworkAccessPermission.Guest;

            int? remainingVotes = await this.library.RemoteAccessControl.ObserveRemainingVotes(this.accessToken).FirstAsync();

            var guestSystemInfo = new GuestSystemInfo
            {
                IsEnabled = remainingVotes.HasValue,
            };

            if (remainingVotes.HasValue)
            {
                guestSystemInfo.RemainingVotes = remainingVotes.Value;
            }

            var connectionInfo = new ConnectionInfo
            {
                AccessPermission = permission,
                ServerVersion = AppInfo.Version,
                GuestSystemInfo = guestSystemInfo
            };

            this.SetupPushNotifications();

            return CreateResponse(ResponseStatus.Success, null, JObject.FromObject(connectionInfo));
        }
コード例 #2
0
ファイル: MobileClient.cs プロジェクト: hur1can3/Espera
        private async Task<ResponseInfo> GetConnectionInfo(JToken parameters)
        {
            Guid deviceId = Guid.Parse(parameters["deviceId"].ToString());

            this.accessToken = this.library.RemoteAccessControl.RegisterRemoteAccessToken(deviceId);
            this.Log().Info("Registering new mobile client with access token {0}", this.accessToken);

            string password = parameters["password"].Value<string>();

            if (password != null)
            {
                try
                {
                    this.library.RemoteAccessControl.UpgradeRemoteAccess(this.accessToken, password);
                }

                catch (WrongPasswordException)
                {
                    return CreateResponse(ResponseStatus.WrongPassword);
                }
            }

            Version serverVersion = Assembly.GetExecutingAssembly().GetName().Version;
            AccessPermission accessPermission = await this.library.RemoteAccessControl.ObserveAccessPermission(this.accessToken).FirstAsync();

            // This is stupid
            NetworkAccessPermission permission = accessPermission == AccessPermission.Admin ? NetworkAccessPermission.Admin : NetworkAccessPermission.Guest;

            var connectionInfo = new ConnectionInfo
            {
                AccessPermission = permission,
                ServerVersion = serverVersion
            };

            this.SetupPushNotifications();

            return CreateResponse(ResponseStatus.Success, null, JObject.FromObject(connectionInfo));
        }