示例#1
0
        /// <summary>
        /// Get phonebook by name
        /// </summary>
        /// <param name="service"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static phonebooksPhonebook GetPhonebook(this Contact service, string name)
        {
            var phonebook = service.GetPhonebookList().Where(p => p.Item2.Equals(name)).FirstOrDefault();

            if (null == phonebook)
            {
                return(new phonebooksPhonebook());
            }

            phonebooks pbooks = FritzSerializer.DeserializePhonebookXml(phonebook.Item4);

            return(pbooks.Items[0]);
        }
示例#2
0
        /// <summary>
        /// Write phonebook to csv file.
        /// </summary>
        /// <param name="name">phonebook name, if empty all phonebooks will be written</param>
        /// <param name="folder">output folder</param>
        public void WritePhonebookCsv(string name = "", string folder = "", string separator = ";")
        {
            if (!string.IsNullOrEmpty(folder))
            {
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }
            }

            var service = new Contact(Url);

            service.SoapHttpClientProtocol.Credentials = new NetworkCredential(userName: UserName, password: Password);

            foreach (var phoneBook in service.GetPhonebookList())
            {
                var phonebookName = phoneBook.Item2;

                if (!string.IsNullOrEmpty(name) && !phonebookName.Equals(name))
                {
                    continue;
                }

                var        phonebookUrl = phoneBook.Item4;
                phonebooks pbooks       = FritzSerializer.DeserializePhonebookXml(phonebookUrl);

                if (null == pbooks)
                {
                    continue;
                }

                var content = new StringBuilder($"category{separator}uniqueid{separator}name{separator}number{separator}type{Environment.NewLine}");
                foreach (phonebooksPhonebookContact contact in pbooks.Items[0].contact)
                {
                    content.Append($"{contact.category}{separator}{contact.uniqueid}{separator}{contact.person[0].realName}{separator}{contact.telephony[0].number[0].Value}{separator}{contact.telephony[0].number[0].type}{Environment.NewLine}");
                }

                var fileName = string.IsNullOrEmpty(folder)
                    ? $"{phonebookName}.csv"
                    : Path.Combine(folder, $"{phonebookName}.csv");

                File.WriteAllText(fileName, content.ToString(), Encoding.UTF8);
            }
        }