コード例 #1
0
        public ContactDetail(SettingsCapsula settings, SearchCServerCapsula user, App app)
        {
            InitializeComponent();
            this.settings = settings;
            this.app      = app;

            using (Context context = new Context(settings.Config))
            {
                var tryContact = context.Contacts
                                 .Where(u => u.PublicId == user.UserId)
                                 .SingleOrDefault();
                if (tryContact != null)
                {
                    throw new Exception("This user is already saved");
                }
            }

            Adding = true;
            Contacts contact = new Contacts()
            {
                PublicId          = user.UserId,
                UserName          = user.UserName,
                AlarmPermission   = 0,
                NickName          = null,
                Trusted           = 0,
                SendAesKey        = null,
                PublicCertificate = user.PemCertificate,
                ReceiveAesKey     = null
            };

            LoadContact(contact);
        }
コード例 #2
0
        private void SearchContact()
        {
            SearchCClientCapsula searchCapsula = TextEncoder.ReadJson <SearchCClientCapsula>(stream);
            SearchCServerCapsula ret;

            using (Context context = new Context(config))
            {
                ret = new SearchCServerCapsula(context.Users
                                               .Where(u => u.Id == searchCapsula.UserId)
                                               .SingleOrDefault());

                if (!ret.Succeeded)
                {
                    ret = new SearchCServerCapsula(context.Users
                                                   .Where(u => u.UserName == searchCapsula.UserName)
                                                   .SingleOrDefault());
                }

                if (!ret.Succeeded)
                {
                    ret = new SearchCServerCapsula(context.Users
                                                   .Where(u => u.PublicCertificateSha256 == searchCapsula.CertificateHash)
                                                   .SingleOrDefault());
                }
            }
            TextEncoder.SendJson(stream, ret);
        }
コード例 #3
0
        private async void start_Clicked(object sender, EventArgs e)
        {
            try
            {
                SearchCServerCapsula capsula = null;
                using (LoadingLock theLock = new LoadingLock(this, "Trying to find the user..."))
                {
                    await Task.Run(() =>
                    {
                        if (userNameEntry.Text == null || !Validators.ValidateRegexUserName(userNameEntry.Text))
                        {
                            if (int.TryParse(publicIdEntry.Text, out int publicId))
                            {
                                capsula = app.connection.SearchContact(publicId);
                            }
                            else
                            {
                                return;
                            }
                        }
                        else
                        {
                            capsula = app.connection.SearchContact(userNameEntry.Text);
                        }
                    });
                }

                if (capsula == null)
                {
                    ShowError("Parsing input", "Public id nor username isn't correct.");
                    return;
                }


                if (!capsula.Succeeded)
                {
                    ShowError("Searching user", "User not found");
                }
                else
                {
                    await Navigation.PopModalAsync();

                    await app.MainPage.Navigation.PushModalAsync(new NavigationPage(new ContactDetail(app.settings, capsula, app)));
                }
            }
            catch (Exception ex)
            {
                app.logger.LogException(this, ex);
                ShowError(ex.Source, ex.Message);
            }
        }
コード例 #4
0
 static void SaveUser(SearchCServerCapsula searchCapsula)
 {
     using (Context context = new Context(config))
     {
         CContact contact = new CContact()
         {
             AlarmPermission   = false,
             NickName          = null,
             PublicCertificate = searchCapsula.PemCertificate,
             PublicId          = searchCapsula.UserId,
             ReceiveAesKey     = null,
             SendAesKey        = null,
             Trusted           = false,
             UserName          = searchCapsula.UserName
         };
         PushOperations.Insert(context, contact, settings.UserPublicId, settings.UserPublicId);
     }
 }
コード例 #5
0
 static void PrintSearchCapsula(SearchCServerCapsula searchCapsula)
 {
     WriteLine($"UserId: {searchCapsula.UserId}");
     WriteLine($"UserName: {searchCapsula.UserName}");
     WriteLine($"Certificate SHA-256 hash: {SHA256Utils.ComputeCertHash(searchCapsula.PemCertificate)}");
 }