public override Vcard GetVCard(Jid jid) { ASCContext.SetCurrentTenant(jid.Server); jid = new Jid(jid.Bare.ToLowerInvariant()); var ui = ASCContext.UserManager.GetUserByUserName(jid.User); if (ui != null) { var vcard = (Vcard)cache.Get(jid.ToString()); if (vcard != null) { return vcard; } vcard = new Vcard(); vcard.Name = new Name(ui.LastName, ui.FirstName, null); vcard.Fullname = UserFormatter.GetUserName(ui); vcard.Nickname = ui.UserName; vcard.Description = ui.Notes; if (ui.BirthDate != null) vcard.Birthday = ui.BirthDate.Value; vcard.JabberId = jid; if (ui.Sex.HasValue) { vcard.Gender = ui.Sex.Value ? Gender.MALE : Gender.FEMALE; } var index = ui.Contacts.FindIndex(c => string.Compare(c, "phone", true) == 0) + 1; if (0 < index && index < ui.Contacts.Count) { vcard.AddTelephoneNumber(new Telephone(TelephoneLocation.WORK, TelephoneType.NUMBER, ui.Contacts[index])); } vcard.AddEmailAddress(new Email(EmailType.INTERNET, ui.Email, true)); var tenant = ASCContext.GetCurrentTenant(); if (tenant != null) vcard.Organization = new Organization(tenant.Name, ui.Department); vcard.Title = ui.Title; var image = PreparePhoto(ASCContext.UserManager.GetUserPhoto(ui.ID, Guid.Empty)); if (image != null) { vcard.Photo = new Photo(image, ImageFormat.Png); image.Dispose(); } cache.Insert(jid.ToString(), vcard, CACHE_TIMEOUT); return vcard; } else { return base.GetVCard(jid); } }
public void VCardTest() { var jid = new Jid("jid1", "s", "R1"); var vcard = new Vcard(); vcard.JabberId = jid; store.SetVCard(jid, vcard); var v = store.GetVCard(jid); Assert.IsNotNull(v); Assert.AreEqual(vcard.JabberId, v.JabberId); v = store.GetVCard(new Jid("jid2", "s", "R1")); Assert.IsNull(v); }
public void PrivateStoreTest() { var jid = new Jid("n", "s", "r"); var el = new Vcard(); el.Fullname = "x"; store.SetPrivate(jid, el); var el2 = (Vcard)store.GetPrivate(jid, new Vcard()); Assert.AreEqual(el.Fullname, el2.Fullname); var el3 = store.GetPrivate(new Jid("n2", "s", "r"), new Vcard()); Assert.IsNull(el3); var el4 = store.GetPrivate(jid, new Roster()); Assert.IsNull(el4); }
public virtual void SetVCard(Jid jid, Vcard vcard) { if (jid == null) throw new ArgumentNullException("jid"); if (vcard == null) throw new ArgumentNullException("vcard"); try { lock (vcardsCache) { ExecuteNonQuery( new SqlInsert("jabber_vcard", true) .InColumnValue("jid", jid.Bare.ToLowerInvariant()) .InColumnValue("vcard", ElementSerializer.SerializeElement(vcard))); vcardsCache[jid.Bare.ToLowerInvariant()] = vcard; } } catch (Exception e) { throw new JabberException("Could not save VCard.", e); } }
private IQ SetVCardSearch(XmppStream stream, IQ iq, XmppHandlerContext context) { var answer = new IQ(IqType.result); answer.Id = iq.Id; answer.To = iq.From; answer.From = iq.To; var search = (Search)iq.Query; var pattern = new Vcard(); pattern.Nickname = search.Nickname; pattern.Name = new Name(search.Lastname, search.Firstname, null); //pattern.AddEmailAddress(new Email() { UserId = search.Email }); search = new Search(); foreach (var vcard in context.StorageManager.VCardStorage.Search(pattern)) { var item = new SearchItem(); item.Jid = vcard.JabberId; item.Nickname = vcard.Nickname; if (vcard.Name != null) { item.Firstname = vcard.Name.Given; item.Lastname = vcard.Name.Family; } var email = vcard.GetPreferedEmailAddress(); if (email != null) { item.Email = email.UserId; } search.AddChild(item); } answer.Query = search; return answer; }
public VcardIq(IqType type, Jid to, Jid from, Vcard vcard) : this(type, to, from) { Vcard = vcard; }
public VcardIq(IqType type, Jid to, Vcard vcard) : this(type, to) { Vcard = vcard; }
public VcardIq(IqType type, Vcard vcard) : this(type) { Vcard = vcard; }
public virtual ICollection<Vcard> Search(Vcard pattern) { return new Vcard[0]; }
public override void SetVCard(Jid jid, Vcard vcard) { ASCContext.SetCurrentTenant(jid.Server); if (ASCContext.UserManager.IsUserNameExists(jid.User)) throw new JabberException(ErrorCode.Forbidden); base.SetVCard(jid, vcard); }
public override ICollection<Vcard> Search(Vcard pattern) { throw new NotImplementedException(); }