コード例 #1
0
        public void CleanTest()
        {
            var structure = new List <StructureType>(
                new StructureType[] { StructureType.NAME, StructureType.ADDRESS }
                );

            var data = new List <List <string> >(new List <string>[] {
                new List <string>(new string[] { "Кузнецов Петр Алексеич", "Москва Милютинский 13" }),
                new List <string>(new string[] { "Марципанова Ольга Викторовна", null }),
                new List <string>(new string[] { "Пузин Витя", null })
            });

            var request        = new CleanRequest(structure, data);
            var cleanedRecords = api.Clean(request).data;

            Assert.AreEqual(cleanedRecords.Count, 3,
                            String.Format("Expected 3 records, but got {0}", cleanedRecords.Count));

            Assert.IsInstanceOf <NameData>(cleanedRecords[0][0], "Expected [0,0] entity to be a Name");
            var firstName = (NameData)cleanedRecords[0][0];

            Assert.AreEqual(firstName.name, "Петр",
                            String.Format("Expected name 'Петр', but got {0}", firstName.name));
            Assert.AreEqual(firstName.patronymic, "Алексеевич",
                            String.Format("Expected patronymic 'Алексеевич', but got {0}", firstName.patronymic));
            Assert.AreEqual(firstName.surname, "Кузнецов",
                            String.Format("Expected surname 'Кузнецов', but got {0}", firstName.surname));

            Assert.IsInstanceOf <AddressData>(cleanedRecords[0][1], "Expected [0,1] entity to be an Address");
            var firstAddress = (AddressData)cleanedRecords[0][1];

            Assert.AreEqual(firstAddress.kladr_id, "77000000000717100",
                            String.Format("Expected kladr id '77000000000717100', but got {0}", firstAddress.kladr_id));
            Assert.AreEqual(firstAddress.metro[0].name, "Чистые пруды");
        }
コード例 #2
0
ファイル: CleanClient.cs プロジェクト: mryabets/dadata-csharp
        /// <summary>
        /// Clean records via DaData.ru.
        /// </summary>
        /// <param name="request">Clean request.</param>
        public CleanResponse Clean(CleanRequest request)
        {
            var httpRequest = CreateHttpRequest();

            // prepare serialized json request
            using (var w = new StreamWriter(httpRequest.GetRequestStreamAsync().Result)) {
                using (JsonWriter writer = new JsonTextWriter(w)) {
                    this.serializer.Serialize(writer, request);
                }
            }

            // get response and de-serialize it to typed records
            var httpResponse = (HttpWebResponse)httpRequest.GetResponseAsync().Result;

            using (var r = new StreamReader(httpResponse.GetResponseStream())) {
                string responseText = r.ReadToEnd();
                return(JsonConvert.DeserializeObject <CleanResponse>(responseText, this.converter));
            }
        }
コード例 #3
0
ファイル: CleanClient.cs プロジェクト: mryabets/dadata-csharp
        /// <summary>
        /// Clean entities of specified type via DaData.ru.
        /// </summary>
        /// <param name="inputs">Input data as array of raw strings (addresses, phones etc).</param>
        /// <typeparam name="T">Target entity type as supported by DaData (IDadataEntity subtypes — AddressData, PhoneData etc).</typeparam>
        public IList <T> Clean <T>(IEnumerable <string> inputs) where T : IDadataEntity
        {
            // infer structure from target entity type
            var structure = new List <StructureType>(
                new StructureType[] { TYPE_TO_STRUCTURE[typeof(T)] }
                );
            // transform enity list to CleanRequest data structure
            var data = new List <List <string> >();

            foreach (string input in inputs)
            {
                data.Add(new List <string>(new string[] { input }));
            }
            var request = new CleanRequest(structure, data);
            // get response and transform it to list of entities
            var response = Clean(request);
            var outputs  = new List <T>();

            foreach (IList <IDadataEntity> row in response.data)
            {
                outputs.Add((T)row[0]);
            }
            return(outputs);
        }