Exemple #1
0
        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();
        }
Exemple #2
0
        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);
        }