├── .gitignore
├── .gitlab-ci.yml
├── .gitlab
└── settings.xml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── pom.xml
└── src
├── main
└── java
│ └── ru
│ └── dadata
│ └── api
│ ├── DaData.java
│ └── entity
│ ├── AbstractEntity.java
│ ├── Address.java
│ ├── Birthdate.java
│ ├── Email.java
│ ├── Name.java
│ ├── Passport.java
│ ├── Phone.java
│ └── Vehicle.java
└── test
├── java
└── ru
│ └── dadata
│ └── api
│ └── DaDataTest.java
└── resources
└── log4j2-test.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Linux template
3 | *~
4 |
5 | # temporary files which can be created if a process still has a handle open of a deleted file
6 | .fuse_hidden*
7 |
8 | # KDE directory preferences
9 | .directory
10 |
11 | # Linux trash folder which might appear on any partition or disk
12 | .Trash-*
13 | ### TortoiseGit template
14 | # Project-level settings
15 | /.tgitconfig
16 | ### NotepadPP template
17 | # Notepad++ backups #
18 | *.bak
19 | ### Windows template
20 | # Windows image file caches
21 | Thumbs.db
22 | ehthumbs.db
23 |
24 | # Folder config file
25 | Desktop.ini
26 |
27 | # Recycle Bin used on file shares
28 | $RECYCLE.BIN/
29 |
30 | # Windows Installer files
31 | *.cab
32 | *.msi
33 | *.msm
34 | *.msp
35 |
36 | # Windows shortcuts
37 | *.lnk
38 | ### JetBrains template
39 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
40 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
41 |
42 | # User-specific stuff:
43 | .idea/workspace.xml
44 | .idea/tasks.xml
45 | .idea/dictionaries
46 | .idea/vcs.xml
47 | .idea/jsLibraryMappings.xml
48 |
49 | # Sensitive or high-churn files:
50 | .idea/dataSources.ids
51 | .idea/dataSources.xml
52 | .idea/dataSources.local.xml
53 | .idea/sqlDataSources.xml
54 | .idea/dynamic.xml
55 | .idea/uiDesigner.xml
56 |
57 | # Gradle:
58 | .idea/gradle.xml
59 | .idea/libraries
60 |
61 | # Mongo Explorer plugin:
62 | .idea/mongoSettings.xml
63 |
64 | ## File-based project format:
65 | *.iws
66 |
67 | ## Plugin-specific files:
68 |
69 | # IntelliJ
70 | /out/
71 | /target/
72 |
73 | # mpeltonen/sbt-idea plugin
74 | .idea_modules/
75 |
76 | # JIRA plugin
77 | atlassian-ide-plugin.xml
78 |
79 | # Crashlytics plugin (for Android Studio and IntelliJ)
80 | com_crashlytics_export_strings.xml
81 | crashlytics.properties
82 | crashlytics-build.properties
83 | fabric.properties
84 | ### Mercurial template
85 | .hg/
86 | .hgignore
87 | .hgsigs
88 | .hgsub
89 | .hgsubstate
90 | .hgtags
91 | ### Example user template template
92 | ### Example user template
93 |
94 | # IntelliJ project files
95 | .idea
96 | *.iml
97 | out
98 | gen### Java template
99 | *.class
100 |
101 | # Mobile Tools for Java (J2ME)
102 | .mtj.tmp/
103 |
104 | # Package Files #
105 | *.jar
106 | *.war
107 | *.ear
108 |
109 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
110 | hs_err_pid*
111 | ### Eclipse template
112 |
113 | .metadata
114 | bin/
115 | tmp/
116 | *.tmp
117 | *.bak
118 | *.swp
119 | *~.nib
120 | local.properties
121 | .settings/
122 | .loadpath
123 | .recommenders
124 |
125 | # Eclipse Core
126 | .project
127 |
128 | # External tool builders
129 | .externalToolBuilders/
130 |
131 | # Locally stored "Eclipse launch configurations"
132 | *.launch
133 |
134 | # PyDev specific (Python IDE for Eclipse)
135 | *.pydevproject
136 |
137 | # CDT-specific (C/C++ Development Tooling)
138 | .cproject
139 |
140 | # JDT-specific (Eclipse Java Development Tools)
141 | .classpath
142 |
143 | # Java annotation processor (APT)
144 | .factorypath
145 |
146 | # PDT-specific (PHP Development Tools)
147 | .buildpath
148 |
149 | # sbteclipse plugin
150 | .target
151 |
152 | # Tern plugin
153 | .tern-project
154 |
155 | # TeXlipse plugin
156 | .texlipse
157 |
158 | # STS (Spring Tool Suite)
159 | .springBeans
160 |
161 | # Code Recommenders
162 | .recommenders/
163 | ### OSX template
164 | *.DS_Store
165 | .AppleDouble
166 | .LSOverride
167 |
168 | # Icon must end with two \r
169 | Icon
170 |
171 | # Thumbnails
172 | ._*
173 |
174 | # Files that might appear in the root of a volume
175 | .DocumentRevisions-V100
176 | .fseventsd
177 | .Spotlight-V100
178 | .TemporaryItems
179 | .Trashes
180 | .VolumeIcon.icns
181 | .com.apple.timemachine.donotpresent
182 |
183 | # Directories potentially created on remote AFP share
184 | .AppleDB
185 | .AppleDesktop
186 | Network Trash Folder
187 | Temporary Items
188 | .apdisk
189 |
--------------------------------------------------------------------------------
/.gitlab-ci.yml:
--------------------------------------------------------------------------------
1 |
2 | variables:
3 | MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
4 | MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
5 |
6 | cache:
7 | paths:
8 | - .m2/repository
9 |
10 | stages:
11 | - build
12 | - test
13 | - deploy
14 |
15 | .validate: &validate
16 | stage: build
17 | script:
18 | - 'mvn $MAVEN_CLI_OPTS test-compile'
19 |
20 | .verify: &verify
21 | stage: test
22 | script:
23 | - 'mvn $MAVEN_CLI_OPTS verify site site:stage'
24 | after_script:
25 | - bash <(curl -s https://codecov.io/bash) -t "${CODECOV_TOKEN}"
26 | except:
27 | - master
28 | artifacts:
29 | reports:
30 | junit:
31 | - target/surefire-reports/TEST-*.xml
32 | - target/failsafe-reports/TEST-*.xml
33 |
34 | # Validate merge requests using JDK7
35 | validate:jdk7:
36 | <<: *validate
37 | image: maven:3.3.9-jdk-7
38 |
39 | # Validate merge requests using JDK8
40 | validate:jdk8:
41 | <<: *validate
42 | image: maven:3.3.9-jdk-8
43 |
44 | # Verify merge requests using JDK7
45 | verify:jdk7:
46 | <<: *verify
47 | image: maven:3.3.9-jdk-7
48 |
49 | # Verify merge requests using JDK8
50 | verify:jdk8:
51 | <<: *verify
52 | image: maven:3.3.9-jdk-8
53 |
54 | deploy:jdk8:
55 | # Use stage test here, so the pages job may later pickup the created site.
56 | stage: test
57 | script:
58 | - 'cp .gitlab/settings.xml /root/.m2/settings.xml'
59 | - 'sed -i "s/${CI_JOB_TOKEN}/${CI_JOB_TOKEN}/g" /root/.m2/settings.xml'
60 | - 'mvn $MAVEN_CLI_OPTS clean deploy site site:stage -DskipTests=true -B -U'
61 | only:
62 | - master
63 | # Archive up the built documentation site.
64 | artifacts:
65 | paths:
66 | - target/staging
67 | image: maven:3.3.9-jdk-8
68 |
69 | pages:
70 | image: busybox:latest
71 | stage: deploy
72 | script:
73 | # Because Maven appends the artifactId automatically to the staging path if you did define a parent pom,
74 | # you might need to use `mv target/staging/YOUR_ARTIFACT_ID public` instead.
75 | - mv target/staging public
76 | dependencies:
77 | - deploy:jdk8
78 | artifacts:
79 | paths:
80 | - public
81 | only:
82 | - master
--------------------------------------------------------------------------------
/.gitlab/settings.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 | gitlab-explabs-ru
8 |
9 |
10 |
11 | Job-Token
12 | ${CI_JOB_TOKEN}
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | # 1.0.0-RC1
4 | * Logger changed to SLF4J
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Leonid Meleshin
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DaData Java API [](https://badge.fury.io/gh/leon0399%2Fdadata) [](https://travis-ci.org/leon0399/dadata) [](https://coveralls.io/github/leon0399/dadata?branch=master)
2 |
3 | Java library for [DaData.Ru](https://dadata.ru/) REST API
4 |
5 | [API documentation](https://dadata.ru/api/clean/)
6 |
7 | ## Installation
8 | ``` xml
9 |
10 | ru.leon0399
11 | dadata
12 | 0.8.0
13 |
14 | ```
15 |
16 | ## Usage
17 | ``` java
18 | DaData dadata = DaData daData = new DaData(">YOUR API KEY<", ">YOUR SECRET KEY<");
19 | ```
20 |
21 | ### Clean
22 | ``` java
23 | Address address = daData.cleanAddress("мск сухонска 11/-89");
24 | Phone phone = daData.cleanPhone("тел 7165219 доб139");
25 | Passport passport = daData.cleanPassport("4509 235857");
26 | Name name = daData.cleanName("Срегей владимерович иванов");
27 | Email email = daData.cleanEmail("serega@yandex/ru");
28 | Birthdate birthdate = daData.cleanBirthdate("24/3/12");
29 | Vehicle vehicle = daData.cleanVehicle("форд фокус");
30 | ```
31 |
32 | ### Require balance
33 | ``` java
34 | daData.getBalance();
35 | ```
36 |
37 | ## License
38 |
39 | The MIT License (MIT)
40 |
41 | Copyright (c) 2016 Leonid Meleshin
42 |
43 | Permission is hereby granted, free of charge, to any person obtaining a copy
44 | of this software and associated documentation files (the "Software"), to deal
45 | in the Software without restriction, including without limitation the rights
46 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
47 | copies of the Software, and to permit persons to whom the Software is
48 | furnished to do so, subject to the following conditions:
49 |
50 | The above copyright notice and this permission notice shall be included in all
51 | copies or substantial portions of the Software.
52 |
53 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
54 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
55 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
56 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
57 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
58 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
59 | SOFTWARE.
60 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | ru.leon0399
8 | dadata
9 | 1.0.0-snapshot
10 | DaData
11 | Java library for DaData.Ru REST API
12 | https://github.com/leon0399/dadata
13 | jar
14 |
15 |
16 | https://github.com/leon0399/dadata/issues
17 | GitHub Issues
18 |
19 |
20 |
21 |
22 | MIT License
23 | http://www.opensource.org/licenses/mit-license.php
24 | repo
25 |
26 |
27 |
28 |
29 | scm:git:git://github.com/leon0399/dadata.git
30 | scm:git:git@github.com:leon0399/dadata.git
31 | https://github.com/leon0399/dadata
32 |
33 |
34 |
35 |
36 | leon0399
37 | Leonid Meleshin
38 |
39 |
40 |
41 |
42 | UTF-8
43 |
44 |
45 |
46 |
47 |
48 | org.sonatype.plugins
49 | nexus-staging-maven-plugin
50 | 1.6.3
51 | true
52 |
53 | ossrh
54 | https://oss.sonatype.org/
55 | true
56 |
57 |
58 |
59 |
60 | org.apache.maven.plugins
61 | maven-gpg-plugin
62 | 1.5
63 |
64 |
65 | sign-artifacts
66 | verify
67 |
68 | sign
69 |
70 |
71 |
72 |
73 |
74 |
75 | org.apache.maven.plugins
76 | maven-compiler-plugin
77 | 3.0
78 |
79 | 1.6
80 | 1.6
81 |
82 |
83 |
84 |
85 | org.apache.maven.plugins
86 | maven-source-plugin
87 | 3.0.0
88 |
89 |
90 | attach-sources
91 |
92 | jar
93 |
94 |
95 |
96 |
97 |
98 |
99 | org.apache.maven.plugins
100 | maven-javadoc-plugin
101 | 2.10.3
102 |
103 |
104 | attach-javadocs
105 |
106 | jar
107 |
108 |
109 |
110 |
111 | -Xdoclint:none
112 |
113 |
114 |
115 |
116 | org.codehaus.mojo
117 | cobertura-maven-plugin
118 | 2.7
119 |
120 |
121 | html
122 | xml
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | ossrh
133 | https://oss.sonatype.org/content/repositories/snapshots
134 |
135 |
136 | ossrh
137 | https://oss.sonatype.org/service/local/staging/deploy/maven2/
138 |
139 |
140 |
141 |
142 |
143 |
144 | org.slf4j
145 | slf4j-api
146 | 1.7.21
147 |
148 |
149 |
150 |
151 | com.google.code.gson
152 | gson
153 | 2.6.2
154 |
155 |
156 |
157 | commons-io
158 | commons-io
159 | 2.5
160 |
161 |
162 |
163 | org.apache.logging.log4j
164 | log4j-core
165 | test
166 | 2.6.2
167 |
168 |
169 |
170 | org.apache.logging.log4j
171 | log4j-slf4j-impl
172 | test
173 | 2.6.2
174 |
175 |
176 |
177 |
178 | junit
179 | junit
180 | 4.12
181 | test
182 |
183 |
184 |
185 |
186 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/DaData.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.GsonBuilder;
5 | import com.google.gson.JsonElement;
6 | import com.google.gson.JsonParser;
7 | import org.apache.commons.io.IOUtils;
8 | import org.slf4j.Logger;
9 | import org.slf4j.LoggerFactory;
10 | import ru.dadata.api.entity.*;
11 |
12 | import java.io.IOException;
13 | import java.io.InputStream;
14 | import java.io.OutputStream;
15 | import java.net.HttpURLConnection;
16 | import java.net.MalformedURLException;
17 | import java.net.ProtocolException;
18 | import java.net.URL;
19 | import java.nio.charset.StandardCharsets;
20 |
21 | /**
22 | * @author leon0399
23 | */
24 | public final class DaData {
25 | private static final String API_VERSION = "v2";
26 | private static final String API_URL = "https://dadata.ru/api";
27 |
28 | private static final String REQUEST_METHOD_GET = "GET";
29 | private static final String REQUEST_METHOD_POST = "POST";
30 |
31 | private static final Logger LOGGER = LoggerFactory.getLogger(DaData.class);
32 | private final String authKey;
33 | private final String authSecret;
34 | private final Gson gson = new GsonBuilder().create();
35 |
36 | /**
37 | * @param key
38 | * @param secret
39 | */
40 | public DaData(String key, String secret) {
41 | authKey = key;
42 | authSecret = secret;
43 | }
44 |
45 | public double getBalance() {
46 | JsonParser jsonParser = new JsonParser();
47 | JsonElement jsonElement = jsonParser.parse(fetchJson("profile/balance", REQUEST_METHOD_GET));
48 | return jsonElement.getAsJsonObject().get("balance").getAsDouble();
49 | }
50 |
51 | public Address cleanAddress(String source) {
52 | return cleanAddresses(source)[0];
53 | }
54 |
55 | public Address[] cleanAddresses(String... sources) {
56 | return populate(Address[].class, "clean/address", sources);
57 | }
58 |
59 | public Phone cleanPhone(String source) {
60 | return cleanPhones(source)[0];
61 | }
62 |
63 | public Phone[] cleanPhones(String... sources) {
64 | return populate(Phone[].class, "clean/phone", sources);
65 | }
66 |
67 | public Passport cleanPassport(String source) {
68 | return cleanPassports(source)[0];
69 | }
70 |
71 | public Passport[] cleanPassports(String... sources) {
72 | return populate(Passport[].class, "clean/passport", sources);
73 | }
74 |
75 | public Name cleanName(String source) {
76 | return cleanNames(source)[0];
77 | }
78 |
79 | public Name[] cleanNames(String... sources) {
80 | return populate(Name[].class, "clean/name", sources);
81 | }
82 |
83 | public Email cleanEmail(String source) {
84 | return cleanEmails(source)[0];
85 | }
86 |
87 | public Email[] cleanEmails(String... sources) {
88 | return populate(Email[].class, "clean/email", sources);
89 | }
90 |
91 | public Birthdate cleanBirthdate(String source) {
92 | return cleanBirthdates(source)[0];
93 | }
94 |
95 | public Birthdate[] cleanBirthdates(String... sources) {
96 | return populate(Birthdate[].class, "clean/birthdate", sources);
97 | }
98 |
99 | public Vehicle cleanVehicle(String source) {
100 | return cleanVehicles(source)[0];
101 | }
102 |
103 | public Vehicle[] cleanVehicles(String... sources) {
104 | return populate(Vehicle[].class, "clean/vehicle", sources);
105 | }
106 |
107 | private T populate(Class tClass, String method, String... sources) {
108 | return gson.fromJson(fetchJson(method, REQUEST_METHOD_POST, sources), tClass);
109 | }
110 |
111 | private String fetchJson(String method, String requestMethod, String... sources) {
112 | String toReturn = null;
113 |
114 | try {
115 | URL url = new URL(API_URL + "/" + API_VERSION + "/" + method);
116 |
117 | HttpURLConnection connection = (HttpURLConnection) url.openConnection();
118 | connection.setRequestMethod(requestMethod);
119 | connection.addRequestProperty("Content-Type", "application/json");
120 | connection.addRequestProperty("Authorization", "Token " + authKey);
121 | connection.addRequestProperty("X-Secret", authSecret);
122 |
123 | if (sources.length > 0) {
124 | connection.setDoOutput(true);
125 | OutputStream outputStream = connection.getOutputStream();
126 | outputStream.write(gson.toJson(sources).getBytes(StandardCharsets.UTF_8));
127 | outputStream.flush();
128 | outputStream.close();
129 | }
130 |
131 | InputStream inputStream = connection.getInputStream();
132 |
133 | toReturn = IOUtils.toString(inputStream, "UTF-8");
134 | inputStream.close();
135 | } catch (ProtocolException e) {
136 | LOGGER.error("Error fetching data", e);
137 | } catch (MalformedURLException e) {
138 | LOGGER.error("Error fetching data", e);
139 | } catch (IOException e) {
140 | LOGGER.error("Error fetching data", e);
141 | }
142 |
143 | return toReturn;
144 | }
145 | }
146 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/AbstractEntity.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public abstract class AbstractEntity {
9 | @SerializedName("source")
10 | private String source;
11 |
12 | @SerializedName("qc")
13 | private int qc;
14 |
15 | public String getSource() {
16 | return source;
17 | }
18 |
19 | public int getQc() {
20 | return qc;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/Address.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public class Address extends AbstractEntity {
9 | //region Variables
10 |
11 | @SerializedName("result")
12 | private String result;
13 |
14 | @SerializedName("postal_code")
15 | private String postalCode;
16 |
17 | @SerializedName("country")
18 | private String country;
19 |
20 | @SerializedName("region_fias_id")
21 | private String regionFiasId;
22 |
23 | @SerializedName("region_kladr_id")
24 | private String regionKladrId;
25 |
26 | @SerializedName("region_with_type")
27 | private String regionWithType;
28 |
29 | @SerializedName("region_type")
30 | private String regionType;
31 |
32 | @SerializedName("region_type_full")
33 | private String regionTypeFull;
34 |
35 | @SerializedName("region")
36 | private String region;
37 |
38 | @SerializedName("area_fias_id")
39 | private String areaFiasId;
40 |
41 | @SerializedName("area_kladr_id")
42 | private String areaKladrId;
43 |
44 | @SerializedName("area_with_type")
45 | private String areaWithType;
46 |
47 | @SerializedName("area_type")
48 | private String areaType;
49 |
50 | @SerializedName("area_type_full")
51 | private String areaTypeFull;
52 |
53 | @SerializedName("area")
54 | private String area;
55 |
56 | @SerializedName("city_fias_id")
57 | private String cityFiasId;
58 |
59 | @SerializedName("city_kladr_id")
60 | private String cityKladrId;
61 |
62 | @SerializedName("city_with_type")
63 | private String cityWithType;
64 |
65 | @SerializedName("city_area")
66 | private String cityArea;
67 |
68 | @SerializedName("city_district")
69 | private String cityDistrict;
70 |
71 | @SerializedName("city_type")
72 | private String cityType;
73 |
74 | @SerializedName("city_type_full")
75 | private String cityTypeFull;
76 |
77 | @SerializedName("city")
78 | private String city;
79 |
80 | @SerializedName("settlement_fias_id")
81 | private String settlementFiasId;
82 |
83 | @SerializedName("settlement_kladr_id")
84 | private String settlementKladrId;
85 |
86 | @SerializedName("settlement_with_type")
87 | private String settlementWithType;
88 |
89 | @SerializedName("settlement_type")
90 | private String settlementType;
91 |
92 | @SerializedName("settlement_type_full")
93 | private String settlementTypeFull;
94 |
95 | @SerializedName("settlement")
96 | private String settlement;
97 |
98 | @SerializedName("street_fias_id")
99 | private String streetFiasId;
100 |
101 | @SerializedName("street_kladr_id")
102 | private String streetKladrId;
103 |
104 | @SerializedName("street_with_type")
105 | private String streetWithType;
106 |
107 | @SerializedName("street_type")
108 | private String streetType;
109 |
110 | @SerializedName("street_type_full")
111 | private String streetTypeFull;
112 |
113 | @SerializedName("street")
114 | private String street;
115 |
116 | @SerializedName("house_fias_id")
117 | private String houseFiasId;
118 |
119 | @SerializedName("house_kladr_id")
120 | private String houseKladrId;
121 |
122 | @SerializedName("house_type")
123 | private String houseType;
124 |
125 | @SerializedName("house_type_full")
126 | private String houseTypeFull;
127 |
128 | @SerializedName("house")
129 | private String house;
130 |
131 | @SerializedName("block_type")
132 | private String blockType;
133 |
134 | @SerializedName("block_type_full")
135 | private String blockTypeFull;
136 |
137 | @SerializedName("block")
138 | private String block;
139 |
140 | @SerializedName("flat_type")
141 | private String flatType;
142 |
143 | @SerializedName("flat_type_full")
144 | private String flatTypeFull;
145 |
146 | @SerializedName("flat")
147 | private String flat;
148 |
149 | @SerializedName("flat_area")
150 | private double flatArea;
151 |
152 | @SerializedName("square_meter_price")
153 | private double squareMeterPrice;
154 |
155 | @SerializedName("flat_price")
156 | private double flatPrice;
157 |
158 | @SerializedName("postal_box")
159 | private String postalBox;
160 |
161 | @SerializedName("fias_id")
162 | private String fiasId;
163 |
164 | @SerializedName("fias_level")
165 | private FiasLevel fiasLevel;
166 |
167 | @SerializedName("kladr_id")
168 | private String kladrId;
169 |
170 | @SerializedName("capital_marker")
171 | private CapitalMarker capitalMarker;
172 |
173 | @SerializedName("okato")
174 | private String okato;
175 |
176 | @SerializedName("oktmo")
177 | private String oktmo;
178 |
179 | @SerializedName("tax_office")
180 | private String taxOffice;
181 |
182 | @SerializedName("tax_office_legal")
183 | private String taxOfficeLegal;
184 |
185 | @SerializedName("timezone")
186 | private String timezone;
187 |
188 | @SerializedName("geo_lat")
189 | private double geoLat;
190 |
191 | @SerializedName("geo_lon")
192 | private double geoLon;
193 |
194 | @SerializedName("beltway_hit")
195 | private BeltwayHitLevel beltwayHit;
196 |
197 | @SerializedName("beltway_distance")
198 | private String beltwayDistance;
199 |
200 | @SerializedName("qc_geo")
201 | private QcGeoAccuracy qcGeo;
202 |
203 | @SerializedName("qc_complete")
204 | private QcCompleteLevel qcComplete;
205 |
206 | @SerializedName("qc_house")
207 | private QcHouse qcHouse;
208 |
209 | @SerializedName("unparsed_parts")
210 | private String unparsedParts;
211 | //endregion
212 |
213 | //region Getters
214 |
215 | /**
216 | * @return Исходный адрес одной строкой
217 | */
218 | @Override
219 | public String getSource() {
220 | return super.getSource();
221 | }
222 |
223 | /**
224 | * @return Стандартизованный адрес одной строкой
225 | */
226 | public String getResult() {
227 | return result;
228 | }
229 |
230 | /**
231 | * @return Индекс
232 | */
233 | public String getPostalCode() {
234 | return postalCode;
235 | }
236 |
237 | /**
238 | * @return Страна
239 | */
240 | public String getCountry() {
241 | return country;
242 | }
243 |
244 | /**
245 | * @return Код ФИАС региона
246 | */
247 | public String getRegionFiasId() {
248 | return regionFiasId;
249 | }
250 |
251 | /**
252 | * @return Код КЛАДР региона
253 | */
254 | public String getRegionKladrId() {
255 | return regionKladrId;
256 | }
257 |
258 | /**
259 | * @return Регион с типом
260 | */
261 | public String getRegionWithType() {
262 | return regionWithType;
263 | }
264 |
265 | /**
266 | * @return Тип региона (сокращенный)
267 | */
268 | public String getRegionType() {
269 | return regionType;
270 | }
271 |
272 | /**
273 | * @return Тип региона
274 | */
275 | public String getRegionTypeFull() {
276 | return regionTypeFull;
277 | }
278 |
279 | /**
280 | * @return Регион
281 | */
282 | public String getRegion() {
283 | return region;
284 | }
285 |
286 | /**
287 | * @return Код ФИАС района в регионе
288 | */
289 | public String getAreaFiasId() {
290 | return areaFiasId;
291 | }
292 |
293 | /**
294 | * @return Код КЛАДР района в регионе
295 | */
296 | public String getAreaKladrId() {
297 | return areaKladrId;
298 | }
299 |
300 | /**
301 | * @return Район в регионе с типом
302 | */
303 | public String getAreaWithType() {
304 | return areaWithType;
305 | }
306 |
307 | /**
308 | * @return Тип района в регионе (сокращенный)
309 | */
310 | public String getAreaType() {
311 | return areaType;
312 | }
313 |
314 | /**
315 | * @return Тип района в регионе
316 | */
317 | public String getAreaTypeFull() {
318 | return areaTypeFull;
319 | }
320 |
321 | /**
322 | * @return Район в регионе
323 | */
324 | public String getArea() {
325 | return area;
326 | }
327 |
328 | /**
329 | * @return Код ФИАС города
330 | */
331 | public String getCityFiasId() {
332 | return cityFiasId;
333 | }
334 |
335 | /**
336 | * @return Код КЛАДР города
337 | */
338 | public String getCityKladrId() {
339 | return cityKladrId;
340 | }
341 |
342 | /**
343 | * @return Город с типом
344 | */
345 | public String getCityWithType() {
346 | return cityWithType;
347 | }
348 |
349 | /**
350 | * @return Административный округ (только для Москвы)
351 | */
352 | public String getCityArea() {
353 | return cityArea;
354 | }
355 |
356 | /**
357 | * @return Район города
358 | */
359 | public String getCityDistrict() {
360 | return cityDistrict;
361 | }
362 |
363 | /**
364 | * @return Тип города (сокращенный)
365 | */
366 | public String getCityType() {
367 | return cityType;
368 | }
369 |
370 | /**
371 | * @return Тип города
372 | */
373 | public String getCityTypeFull() {
374 | return cityTypeFull;
375 | }
376 |
377 | /**
378 | * @return Город
379 | */
380 | public String getCity() {
381 | return city;
382 | }
383 |
384 | /**
385 | * @return Код ФИАС нас. пункта
386 | */
387 | public String getSettlementFiasId() {
388 | return settlementFiasId;
389 | }
390 |
391 | /**
392 | * @return Код КЛАДР нас. пункта
393 | */
394 | public String getSettlementKladrId() {
395 | return settlementKladrId;
396 | }
397 |
398 | /**
399 | * @return Населенный пункт с типом
400 | */
401 | public String getSettlementWithType() {
402 | return settlementWithType;
403 | }
404 |
405 | /**
406 | * @return Тип населенного пункта (сокращенный)
407 | */
408 | public String getSettlementType() {
409 | return settlementType;
410 | }
411 |
412 | /**
413 | * @return Тип населенного пункта
414 | */
415 | public String getSettlementTypeFull() {
416 | return settlementTypeFull;
417 | }
418 |
419 | /**
420 | * @return Населенный пункт
421 | */
422 | public String getSettlement() {
423 | return settlement;
424 | }
425 |
426 | /**
427 | * @return Код ФИАС улицы
428 | */
429 | public String getStreetFiasId() {
430 | return streetFiasId;
431 | }
432 |
433 | /**
434 | * @return Код КЛАДР улицы
435 | */
436 | public String getStreetKladrId() {
437 | return streetKladrId;
438 | }
439 |
440 | /**
441 | * @return Улица с типом
442 | */
443 | public String getStreetWithType() {
444 | return streetWithType;
445 | }
446 |
447 | /**
448 | * @return Тип улицы (сокращенный)
449 | */
450 | public String getStreetType() {
451 | return streetType;
452 | }
453 |
454 | /**
455 | * @return Тип улицы
456 | */
457 | public String getStreetTypeFull() {
458 | return streetTypeFull;
459 | }
460 |
461 | /**
462 | * @return Улица
463 | */
464 | public String getStreet() {
465 | return street;
466 | }
467 |
468 | /**
469 | * @return Код ФИАС дома
470 | */
471 | public String getHouseFiasId() {
472 | return houseFiasId;
473 | }
474 |
475 | /**
476 | * @return Код КЛАДР дома
477 | */
478 | public String getHouseKladrId() {
479 | return houseKladrId;
480 | }
481 |
482 | /**
483 | * @return Тип дома (сокращенный)
484 | */
485 | public String getHouseType() {
486 | return houseType;
487 | }
488 |
489 | /**
490 | * @return Тип дома
491 | */
492 | public String getHouseTypeFull() {
493 | return houseTypeFull;
494 | }
495 |
496 | /**
497 | * @return Дом
498 | */
499 | public String getHouse() {
500 | return house;
501 | }
502 |
503 | /**
504 | * @return Тип корпуса/строения (сокращенный)
505 | */
506 | public String getBlockType() {
507 | return blockType;
508 | }
509 |
510 | /**
511 | * @return Тип корпуса/строения
512 | */
513 | public String getBlockTypeFull() {
514 | return blockTypeFull;
515 | }
516 |
517 | /**
518 | * @return Корпус/строение
519 | */
520 | public String getBlock() {
521 | return block;
522 | }
523 |
524 | /**
525 | * @return Тип квартиры (сокращенный)
526 | */
527 | public String getFlatType() {
528 | return flatType;
529 | }
530 |
531 | /**
532 | * @return Тип квартиры
533 | */
534 | public String getFlatTypeFull() {
535 | return flatTypeFull;
536 | }
537 |
538 | /**
539 | * @return Квартира
540 | */
541 | public String getFlat() {
542 | return flat;
543 | }
544 |
545 | /**
546 | * @return Площадь квартиры
547 | */
548 | public double getFlatArea() {
549 | return flatArea;
550 | }
551 |
552 | /**
553 | * @return Рыночная стоимость м²
554 | */
555 | public double getSquareMeterPrice() {
556 | return squareMeterPrice;
557 | }
558 |
559 | /**
560 | * @return Рыночная стоимость квартиры
561 | */
562 | public double getFlatPrice() {
563 | return flatPrice;
564 | }
565 |
566 | /**
567 | * @return Абонентский ящик
568 | */
569 | public String getPostalBox() {
570 | return postalBox;
571 | }
572 |
573 | /**
574 | * @return Код ФИАС
575 | */
576 | public String getFiasId() {
577 | return fiasId;
578 | }
579 |
580 | /**
581 | * Уровень детализации, до которого адрес найден в ФИАС
582 | *
583 | * @return @see {@link FiasLevel}
584 | */
585 | public FiasLevel getFiasLevel() {
586 | return fiasLevel;
587 | }
588 |
589 | /**
590 | * Код КЛАДР
591 | *
592 | * @return
593 | */
594 | public String getKladrId() {
595 | return kladrId;
596 | }
597 |
598 | /**
599 | * Является ли город центром
600 | *
601 | * @return @see {@link CapitalMarker}
602 | */
603 | public CapitalMarker getCapitalMarker() {
604 | return capitalMarker;
605 | }
606 |
607 | /**
608 | * @return Код ОКАТО
609 | */
610 | public String getOkato() {
611 | return okato;
612 | }
613 |
614 | /**
615 | * @return Код ОКТМО
616 | */
617 | public String getOktmo() {
618 | return oktmo;
619 | }
620 |
621 | /**
622 | * @return Код ИФНС для физических лиц
623 | */
624 | public String getTaxOffice() {
625 | return taxOffice;
626 | }
627 |
628 | /**
629 | * @return Код ИФНС для организаций (не заполняется)
630 | */
631 | public String getTaxOfficeLegal() {
632 | return taxOfficeLegal;
633 | }
634 |
635 | /**
636 | * @return Часовой пояс
637 | */
638 | public String getTimezone() {
639 | return timezone;
640 | }
641 |
642 | /**
643 | * @return Координаты: широта
644 | */
645 | public double getGeoLat() {
646 | return geoLat;
647 | }
648 |
649 | /**
650 | * @return Координаты: долгота
651 | */
652 | public double getGeoLon() {
653 | return geoLon;
654 | }
655 |
656 | /**
657 | * Внутри кольцевой?
658 | *
659 | * @return @see {@link BeltwayHitLevel}
660 | */
661 | public BeltwayHitLevel getBeltwayHit() {
662 | return beltwayHit;
663 | }
664 |
665 | /**
666 | * Расстояние от кольцевой в км
667 | *
668 | * @return Расстояние от кольцевой в км если {@link #beltwayHit } = {@link BeltwayHitLevel#OUT_MKAD} или {@link BeltwayHitLevel#OUT_KAD}, иначе null
669 | */
670 | public String getBeltwayDistance() {
671 | return beltwayDistance;
672 | }
673 |
674 | /**
675 | * Код точности координат
676 | *
677 | * @return @see {@link QcGeoAccuracy}
678 | * @see Код точности координат
679 | */
680 | public QcGeoAccuracy getQcGeo() {
681 | return qcGeo;
682 | }
683 |
684 | /**
685 | * Код пригодности к рассылке
686 | *
687 | * @return @see {@link QcCompleteLevel}
688 | * @see Код пригодности к рассылке
689 | */
690 | public QcCompleteLevel getQcComplete() {
691 | return qcComplete;
692 | }
693 |
694 | /**
695 | * Признак наличия дома в ФИАС
696 | *
697 | * @return @see {@link QcHouse}
698 | * @see Признак наличия дома в ФИАС
699 | */
700 | public QcHouse getQcHouse() {
701 | return qcHouse;
702 | }
703 |
704 | public String getUnparsedParts() {
705 | return unparsedParts;
706 | }
707 |
708 | /**
709 | * Код проверки адреса
710 | *
711 | * @return
712 | * @see Информация о возвращаемых кодах
23 | */
24 | @Override
25 | public int getQc() {
26 | return super.getQc();
27 | }
28 |
29 | @Override
30 | public String toString() {
31 | return "Email[source=" + getSource() +
32 | ", email=" + getEmail() +
33 | ", qc=" + getQc() +
34 | "]";
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/Name.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public class Name extends AbstractEntity {
9 |
10 | @SerializedName("result")
11 | private String result;
12 |
13 | @SerializedName("result_genitive")
14 | private String resultGenitive;
15 |
16 | @SerializedName("result_dative")
17 | private String resultDative;
18 |
19 | @SerializedName("result_ablative")
20 | private String resultAblative;
21 |
22 | @SerializedName("surname")
23 | private String surname;
24 |
25 | @SerializedName("name")
26 | private String name;
27 |
28 | @SerializedName("patronymic")
29 | private String patronymic;
30 |
31 | @SerializedName("gender")
32 | private Gender gender;
33 |
34 | /**
35 | * @return Исходное ФИО одной строкой
36 | */
37 | @Override
38 | public String getSource() {
39 | return super.getSource();
40 | }
41 |
42 | /**
43 | * @return Стандартизованное ФИО одной строкой
44 | */
45 | public String getResult() {
46 | return result;
47 | }
48 |
49 | /**
50 | * @return ФИО в родительном падеже (кого?)
51 | */
52 | public String getResultGenitive() {
53 | return resultGenitive;
54 | }
55 |
56 | /**
57 | * @return ФИО в дательном падеже (кому?)
58 | */
59 | public String getResultDative() {
60 | return resultDative;
61 | }
62 |
63 | /**
64 | * @return ФИО в творительном падеже (кем?)
65 | */
66 | public String getResultAblative() {
67 | return resultAblative;
68 | }
69 |
70 | /**
71 | * @return Фамилия
72 | */
73 | public String getSurname() {
74 | return surname;
75 | }
76 |
77 | /**
78 | * @return Имя
79 | */
80 | public String getName() {
81 | return name;
82 | }
83 |
84 | /**
85 | * @return Отчество
86 | */
87 | public String getPatronymic() {
88 | return patronymic;
89 | }
90 |
91 | /**
92 | * Пол
93 | *
94 | * @return М если сужской, Ж если женский, иначе НД
95 | */
96 | public Gender getGender() {
97 | return gender;
98 | }
99 |
100 | @Override
101 | public String toString() {
102 | return "Name[source=" + getSource() +
103 | ", result=" + getResult() +
104 | ", resultGenitive=" + getResultGenitive() +
105 | ", resultDative=" + getResultDative() +
106 | ", resultAblative=" + getResultAblative() +
107 | ", surname=" + getSurname() +
108 | ", name=" + getName() +
109 | ", patronymic=" + getPatronymic() +
110 | ", gender=" + getGender() +
111 | ", qc=" + getQc() +
112 | "]";
113 | }
114 |
115 | public enum Gender {
116 | @SerializedName("М")
117 | MALE,
118 |
119 | @SerializedName("Ж")
120 | FEMALE,
121 |
122 | @SerializedName("НД")
123 | UNKNOWN
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/Passport.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public class Passport extends AbstractEntity {
9 |
10 | @SerializedName("series")
11 | private String series;
12 |
13 | @SerializedName("number")
14 | private String number;
15 |
16 | /**
17 | * @return Исходная серия и номер одной строкой
18 | */
19 | @Override
20 | public String getSource() {
21 | return super.getSource();
22 | }
23 |
24 | /**
25 | * @return Серия
26 | */
27 | public String getSeries() {
28 | return series;
29 | }
30 |
31 | /**
32 | * @return Номер
33 | */
34 | public String getNumber() {
35 | return number;
36 | }
37 |
38 | /**
39 | * @return Код проверки
40 | * @see Информация о возвращаемых кодах
41 | */
42 | @Override
43 | public int getQc() {
44 | return super.getQc();
45 | }
46 |
47 | @Override
48 | public String toString() {
49 | return "Passport[source=" + getSource() +
50 | ", series=" + getSeries() +
51 | ", number=" + getNumber() +
52 | ", qc=" + getQc() +
53 | "]";
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/Phone.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public class Phone extends AbstractEntity {
9 |
10 | @SerializedName("type")
11 | private String type;
12 |
13 | @SerializedName("phone")
14 | private String phone;
15 |
16 | @SerializedName("country_code")
17 | private String countryCode;
18 |
19 | @SerializedName("city_code")
20 | private String cityCode;
21 |
22 | @SerializedName("number")
23 | private String number;
24 |
25 | @SerializedName("extension")
26 | private String extension;
27 |
28 | @SerializedName("provider")
29 | private String provider;
30 |
31 | @SerializedName("region")
32 | private String region;
33 |
34 | @SerializedName("timezone")
35 | private String timezone;
36 |
37 | @SerializedName("qc_conflict")
38 | private int qcConflict;
39 |
40 | /**
41 | * @return Исходный телефон одной строкой
42 | */
43 | @Override
44 | public String getSource() {
45 | return super.getSource();
46 | }
47 |
48 | /**
49 | * @return Тип телефона
50 | */
51 | public String getType() {
52 | return type;
53 | }
54 |
55 | /**
56 | * @return Стандартизованный телефон одной строкой
57 | */
58 | public String getPhone() {
59 | return phone;
60 | }
61 |
62 | /**
63 | * @return Код страны
64 | */
65 | public String getCountryCode() {
66 | return countryCode;
67 | }
68 |
69 | /**
70 | * @return Код города / DEF-код
71 | */
72 | public String getCityCode() {
73 | return cityCode;
74 | }
75 |
76 | /**
77 | * @return Локальный номер телефона
78 | */
79 | public String getNumber() {
80 | return number;
81 | }
82 |
83 | /**
84 | * @return Добавочный номер
85 | */
86 | public String getExtension() {
87 | return extension;
88 | }
89 |
90 | /**
91 | * @return Оператор связи
92 | */
93 | public String getProvider() {
94 | return provider;
95 | }
96 |
97 | /**
98 | * @return Регион
99 | */
100 | public String getRegion() {
101 | return region;
102 | }
103 |
104 | /**
105 | * @return Часовой пояс
106 | */
107 | public String getTimezone() {
108 | return timezone;
109 | }
110 |
111 | /**
112 | * @return Признак конфликта телефона с адресом
113 | * @see Информация о возвращаемых кодах
114 | */
115 | public int getQcConflict() {
116 | return qcConflict;
117 | }
118 |
119 | /**
120 | * @return Код проверки
121 | * @see Информация о возвращаемых кодах
122 | */
123 | @Override
124 | public int getQc() {
125 | return super.getQc();
126 | }
127 |
128 | @Override
129 | public String toString() {
130 | return "Phone[source=" + getSource() +
131 | ", type=" + getType() +
132 | ", phone=" + getPhone() +
133 | ", countryCode=" + getCountryCode() +
134 | ", cityCode=" + getCityCode() +
135 | ", number=" + getNumber() +
136 | ", extension=" + getExtension() +
137 | ", provider=" + getProvider() +
138 | ", region=" + getRegion() +
139 | ", timezone=" + getTimezone() +
140 | ", qcConflict=" + getQcConflict() +
141 | ", qc=" + getQc() +
142 | "]";
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/src/main/java/ru/dadata/api/entity/Vehicle.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | /**
6 | * @author leon0399
7 | */
8 | public class Vehicle extends AbstractEntity {
9 |
10 | @SerializedName("result")
11 | private String result;
12 |
13 | @SerializedName("brand")
14 | private String brand;
15 |
16 | @SerializedName("model")
17 | private String model;
18 |
19 | /**
20 | * @return Исходное значение
21 | */
22 | @Override
23 | public String getSource() {
24 | return super.getSource();
25 | }
26 |
27 | /**
28 | * @return Стандартизованное значение
29 | */
30 | public String getResult() {
31 | return result;
32 | }
33 |
34 | /**
35 | * @return Марка
36 | */
37 | public String getBrand() {
38 | return brand;
39 | }
40 |
41 | /**
42 | * @return Модель
43 | */
44 | public String getModel() {
45 | return model;
46 | }
47 |
48 | /**
49 | * @return Код проверки
50 | */
51 | @Override
52 | public int getQc() {
53 | return super.getQc();
54 | }
55 |
56 | @Override
57 | public String toString() {
58 | return "Vehicle[source=" + getSource() +
59 | ", result=" + getResult() +
60 | ", brand=" + getBrand() +
61 | ", model=" + getModel() +
62 | ", qc=" + getQc() +
63 | "]";
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/test/java/ru/dadata/api/DaDataTest.java:
--------------------------------------------------------------------------------
1 | package ru.dadata.api;
2 |
3 | import org.apache.logging.log4j.LogManager;
4 | import org.apache.logging.log4j.Logger;
5 | import org.junit.Assert;
6 | import org.junit.Before;
7 | import org.junit.BeforeClass;
8 | import org.junit.Test;
9 | import ru.dadata.api.entity.*;
10 |
11 | /**
12 | * @author leon0399
13 | */
14 | public class DaDataTest extends Assert {
15 | private static final Logger LOGGER = LogManager.getLogger();
16 |
17 | /**
18 | * Ваш API-ключ
19 | *
20 | * @see Профиль
21 | */
22 | private static final String API_KEY = "[REDACTED]";
23 |
24 | /**
25 | * Секретный ключ для стандартизации
26 | *
27 | * @see Профиль
28 | */
29 | private static final String API_SECRET = "[REDACTED]";
30 |
31 | private DaData daData = new DaData(API_KEY, API_SECRET);
32 |
33 | public DaDataTest() {
34 | String apiKey = System.getenv("API_KEY");
35 | String apiSecret = System.getenv("API_SECRET");
36 | daData = new DaData(apiKey, apiSecret);
37 | }
38 |
39 | @Before
40 | public void tearUp() {
41 | LOGGER.info("Ваш баланс: {}р.", daData.getBalance());
42 | }
43 |
44 | @Test
45 | public void cleanAddress() {
46 | final Address address = daData.cleanAddress("мск сухонска 11/-89");
47 |
48 | assertEquals("г Москва, ул Сухонская, д 11, кв 89", address.getResult());
49 | assertEquals("127642", address.getPostalCode());
50 | assertEquals("Россия", address.getCountry());
51 | assertEquals("0c5b2444-70a0-4932-980c-b4dc0d3f02b5", address.getRegionFiasId());
52 | assertEquals("7700000000000", address.getRegionKladrId());
53 | assertEquals("г Москва", address.getRegionWithType());
54 | assertEquals("г", address.getRegionType());
55 | assertEquals("город", address.getRegionTypeFull());
56 | assertEquals("Москва", address.getRegion());
57 | assertEquals(null, address.getAreaFiasId());
58 | assertEquals(null, address.getAreaKladrId());
59 | assertEquals(null, address.getAreaWithType());
60 | assertEquals(null, address.getAreaType());
61 | assertEquals(null, address.getAreaTypeFull());
62 | assertEquals(null, address.getArea());
63 | assertEquals(null, address.getCityFiasId());
64 | assertEquals(null, address.getCityKladrId());
65 | assertEquals(null, address.getCityWithType());
66 | assertEquals(null, address.getCityType());
67 | assertEquals(null, address.getCityTypeFull());
68 | assertEquals(null, address.getCity());
69 | assertEquals("Северо-восточный", address.getCityArea());
70 | assertEquals("Северное Медведково", address.getCityDistrict());
71 | assertEquals(null, address.getSettlementFiasId());
72 | assertEquals(null, address.getSettlementKladrId());
73 | assertEquals(null, address.getSettlementWithType());
74 | assertEquals(null, address.getSettlementType());
75 | assertEquals(null, address.getSettlementTypeFull());
76 | assertEquals(null, address.getSettlement());
77 | assertEquals("95dbf7fb-0dd4-4a04-8100-4f6c847564b5", address.getStreetFiasId());
78 | assertEquals("77000000000283600", address.getStreetKladrId());
79 | assertEquals("ул Сухонская", address.getStreetWithType());
80 | assertEquals("ул", address.getStreetType());
81 | assertEquals("улица", address.getStreetTypeFull());
82 | assertEquals("Сухонская", address.getStreet());
83 | assertEquals("5ee84ac0-eb9a-4b42-b814-2f5f7c27c255", address.getHouseFiasId());
84 | assertEquals("7700000000028360004", address.getHouseKladrId());
85 | assertEquals("д", address.getHouseType());
86 | assertEquals("дом", address.getHouseTypeFull());
87 | assertEquals("11", address.getHouse());
88 | assertEquals(null, address.getBlockType());
89 | assertEquals(null, address.getBlockTypeFull());
90 | assertEquals(null, address.getBlock());
91 | assertEquals("кв", address.getFlatType());
92 | assertEquals("квартира", address.getFlatTypeFull());
93 | assertEquals("89", address.getFlat());
94 | assertEquals(34.6, address.getFlatArea(), 0);
95 | assertEquals(198113, address.getSquareMeterPrice(), 0);
96 | assertEquals(6854710, address.getFlatPrice(), 0);
97 | assertEquals(null, address.getPostalBox());
98 | assertEquals("5ee84ac0-eb9a-4b42-b814-2f5f7c27c255", address.getFiasId());
99 | assertEquals(Address.FiasLevel.HOUSE, address.getFiasLevel());
100 | assertEquals("7700000000028360004", address.getKladrId());
101 | assertEquals(Address.CapitalMarker.OTHER, address.getCapitalMarker());
102 | assertEquals("45280583000", address.getOkato());
103 | assertEquals("45362000", address.getOktmo());
104 | assertEquals("7715", address.getTaxOffice());
105 | assertEquals("7715", address.getTaxOfficeLegal());
106 | assertEquals("UTC+3", address.getTimezone());
107 | assertEquals(55.878506, address.getGeoLat(), 0.0005);
108 | assertEquals(37.6535443, address.getGeoLon(), 0.0005);
109 | assertEquals(Address.BeltwayHitLevel.IN_MKAD, address.getBeltwayHit());
110 | assertEquals(null, address.getBeltwayDistance());
111 | assertEquals(Address.QcGeoAccuracy.ACCURATE, address.getQcGeo());
112 | assertEquals(Address.QcCompleteLevel.SUITABLE, address.getQcComplete());
113 | assertEquals(Address.QcHouse.EXACT_MATCH, address.getQcHouse());
114 | }
115 |
116 | @Test
117 | public void cleanPhone() throws Exception {
118 | final Phone phone = daData.cleanPhone("тел 7165219 доб139");
119 |
120 | assertEquals("Стационарный", phone.getType());
121 | assertEquals("+7 495 716-52-19 доб. 139", phone.getPhone());
122 | assertEquals("7", phone.getCountryCode());
123 | assertEquals("495", phone.getCityCode());
124 | assertEquals("7165219", phone.getNumber());
125 | assertEquals("139", phone.getExtension());
126 | assertEquals("ОАО \"МГТС\"", phone.getProvider());
127 | assertEquals("Москва", phone.getRegion());
128 | assertEquals("UTC+3", phone.getTimezone());
129 | }
130 |
131 | @Test
132 | public void cleanPassport() throws Exception {
133 | final Passport passport = daData.cleanPassport("4509 235857");
134 |
135 | assertEquals("45 09", passport.getSeries());
136 | assertEquals("235857", passport.getNumber());
137 | }
138 |
139 | @Test
140 | public void cleanName() throws Exception {
141 | final Name name = daData.cleanName("Срегей владимерович иванов");
142 |
143 | assertEquals("Иванов Сергей Владимирович", name.getResult());
144 | assertEquals("Иванова Сергея Владимировича", name.getResultGenitive());
145 | assertEquals("Иванову Сергею Владимировичу", name.getResultDative());
146 | assertEquals("Ивановым Сергеем Владимировичем", name.getResultAblative());
147 | assertEquals("Иванов", name.getSurname());
148 | assertEquals("Сергей", name.getName());
149 | assertEquals("Владимирович", name.getPatronymic());
150 | assertEquals(Name.Gender.MALE, name.getGender());
151 | }
152 |
153 | @Test
154 | public void cleanEmail() throws Exception {
155 | final Email email = daData.cleanEmail("serega@yandex/ru");
156 |
157 | assertEquals("serega@yandex.ru", email.getEmail());
158 | }
159 |
160 | @Test
161 | public void cleanBirthdate() throws Exception {
162 | final Birthdate birthdate = daData.cleanBirthdate("24/3/12");
163 |
164 | assertEquals("24.03.2012", birthdate.getBirthdate());
165 | }
166 |
167 | @Test
168 | public void cleanVehicle() throws Exception {
169 | final Vehicle vehicle = daData.cleanVehicle("форд фокус");
170 |
171 | assertEquals("FORD FOCUS", vehicle.getResult());
172 | assertEquals("FORD", vehicle.getBrand());
173 | assertEquals("FOCUS", vehicle.getModel());
174 | assertEquals("FOCUS", vehicle.getModel());
175 | }
176 |
177 | }
--------------------------------------------------------------------------------
/src/test/resources/log4j2-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------