├── .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 [![GitHub version](https://badge.fury.io/gh/leon0399%2Fdadata.svg)](https://badge.fury.io/gh/leon0399%2Fdadata) [![Build Status](https://travis-ci.org/leon0399/dadata.svg?branch=master)](https://travis-ci.org/leon0399/dadata) [![Coverage Status](https://coveralls.io/repos/github/leon0399/dadata/badge.svg?branch=master)](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 | --------------------------------------------------------------------------------