private void button1_Click(object sender, EventArgs e) { CardDav.Client client = new CardDav.Client(this.urlTxt.Text, this.usernameTxt.Text, this.passwordTxt.Text); CardDavResponse response = client.Get(); /** Output the results from the Listing **/ resultsTxt.Text = response.ToString(); /** Set the client to the proper Address Book server URL **/ client.SetServer(response.AddressBooks.First().Url.ToString()); vCard card = client.GetVCard(response.Cards.First().Id); resultsTxt.Text = resultsTxt.Text + "\r\n\r\n\r\n" + card.ToString(); }
static void Main(string[] args) { string uri = "https://contacts.cloze.com/carddav/addressbooks/[email protected]/default/"; string username = "******"; string password = "******"; CardDav.Client client = new CardDav.Client(uri, username, password); CardDavResponse response = client.Get(); /** Output the results from the Listing **/ string results = response.ToString(); /** Set the client to the proper Address Book server URL **/ client.SetServer(response.AddressBooks.First().Url.ToString()); vCard card = client.GetVCard(response.Cards.First().Id); results = results + "\r\n\r\n\r\n" + card.ToString(); }
private CardDavResponse SimplifyResponse(string results) { XmlDocument document = new XmlDocument(); document.Load(new StringReader(results)); XmlNodeList responses = document.GetElementsByTagName("response"); CardDavResponse response = new CardDavResponse(); Uri serverUri = new Uri(this.serverUrl); foreach (XmlNode node in responses) { string contentType = CardDavParser.GetNodeContents(node, "getcontenttype").FirstOrDefault(); XmlNode addressBookNode = CardDavParser.GetNodesByTagName(node, "addressbook").FirstOrDefault(); string href = CardDavParser.GetNodeContents(node, "href").FirstOrDefault(); if (!String.IsNullOrEmpty(contentType) && !String.IsNullOrEmpty(href) && (contentType.IndexOf("vcard") > -1 || href.IndexOf("vcf") > -1)) { //It is a vcard element Uri hrefUri = new Uri("https://localhost/" + href); string id = Path.GetFileName(hrefUri.LocalPath).Replace(".vcf", ""); string idWithExtension = Path.GetFileName(hrefUri.LocalPath); string hrefWithoutIdWithoutVcf = href.Replace(id, "").Replace(".vcf", ""); Uri addressBookUrlForCard = new Uri(this.ServerAddress + hrefWithoutIdWithoutVcf); if (!String.IsNullOrEmpty(id)) { CardElement card = new CardElement(); card.Id = id; card.DavName = idWithExtension; card.Url = addressBookUrlForCard; string etag = CardDavParser.GetNodeContents(node, "getetag").FirstOrDefault(); if (!String.IsNullOrEmpty(etag)) { card.eTag = etag.Replace("\"", ""); } string dateString = CardDavParser.GetNodeContents(node, "getlastmodified").FirstOrDefault(); if (!String.IsNullOrEmpty(dateString)) { card.Modified = DateTime.Parse(dateString); } else { card.Modified = DateTime.Now; } response.Cards.Add(card); } } else if (addressBookNode != null && !String.IsNullOrEmpty(href)) { //It is a address book element string url = this.ServerAddress + href; AddressBookElement addressBook = new AddressBookElement(); addressBook.Url = new Uri(url); addressBook.DisplayName = CardDavParser.GetNodeContents(node, "displayname").FirstOrDefault(); string dateString = CardDavParser.GetNodeContents(node, "getlastmodified").FirstOrDefault(); if (!String.IsNullOrEmpty(dateString)) { addressBook.Modified = DateTime.Parse(dateString); } else { addressBook.Modified = DateTime.Now; } response.AddressBooks.Add(addressBook); } } return(response); }