From 9f8a85135c9ca1cb2be7ddc810505f31087a5579 Mon Sep 17 00:00:00 2001 From: Andrew Johnson <141680314+andrewjohnsonsmarty@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:59:36 -0600 Subject: [PATCH] Added format field to lookup (#42) --- .../smartystreets/api/us_street/Client.java | 1 + .../smartystreets/api/us_street/Lookup.java | 19 +++++++++++++ .../api/us_street/OutputFormat.java | 15 ++++++++++ .../api/us_street/ClientTest.java | 28 +++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 src/main/java/com/smartystreets/api/us_street/OutputFormat.java diff --git a/src/main/java/com/smartystreets/api/us_street/Client.java b/src/main/java/com/smartystreets/api/us_street/Client.java index c4be288..49454dc 100644 --- a/src/main/java/com/smartystreets/api/us_street/Client.java +++ b/src/main/java/com/smartystreets/api/us_street/Client.java @@ -66,6 +66,7 @@ private void populateQueryString(Lookup address, Request request) { request.putParameter("addressee", address.getAddressee()); request.putParameter("urbanization", address.getUrbanization()); request.putParameter("match", address.getMatch()); + request.putParameter("format", address.getFormat()); if (address.getMaxCandidates() == 1 && address.getMatch() == "enhanced") request.putParameter("candidates", "5"); diff --git a/src/main/java/com/smartystreets/api/us_street/Lookup.java b/src/main/java/com/smartystreets/api/us_street/Lookup.java index b93772d..fc20ae1 100644 --- a/src/main/java/com/smartystreets/api/us_street/Lookup.java +++ b/src/main/java/com/smartystreets/api/us_street/Lookup.java @@ -26,6 +26,7 @@ public class Lookup implements Serializable { private String addressee; private String urbanization; private String match; + private String format; private int candidates; //endregion @@ -132,6 +133,17 @@ public String getMatch() { return null; } + @JsonProperty("format") + public String getFormat(){ + if (this.format == null) + return null; + if (this.format.equals("default")) + return "default"; + if (this.format.equals("project-usa")) + return "project-usa"; + return null; + } + @JsonProperty("candidates") public int getMaxCandidates() { return this.candidates; @@ -202,6 +214,13 @@ public void setUrbanization(String urbanization) { public void setMatch(MatchType match) { this.match = match.getName(); } + /** + * Sets the format output for this lookup
+ * @param format The format output + */ + public void setFormat(OutputFormat format) { + this.format = format.getName(); + } /** * Sets the maximum number of valid addresses returned when the input is ambiguous. diff --git a/src/main/java/com/smartystreets/api/us_street/OutputFormat.java b/src/main/java/com/smartystreets/api/us_street/OutputFormat.java new file mode 100644 index 0000000..68604f0 --- /dev/null +++ b/src/main/java/com/smartystreets/api/us_street/OutputFormat.java @@ -0,0 +1,15 @@ +package com.smartystreets.api.us_street; + +public enum OutputFormat { + DEFAULT("default"), PROJECT_USA("project-usa"); + + private final String name; + + OutputFormat(String name){ + this.name = name; + } + + public String getName(){ + return name; + } +} diff --git a/src/test/java/com/smartystreets/api/us_street/ClientTest.java b/src/test/java/com/smartystreets/api/us_street/ClientTest.java index 1b6b1c4..d37bbd1 100644 --- a/src/test/java/com/smartystreets/api/us_street/ClientTest.java +++ b/src/test/java/com/smartystreets/api/us_street/ClientTest.java @@ -55,6 +55,34 @@ public void testSendingSingleFullyPopulatedLookup() throws Exception { } + @Test + public void testSendingSingleFullyPopulatedLookupWithFormatOutput() throws Exception { + RequestCapturingSender capturingSender = new RequestCapturingSender(); + URLPrefixSender sender = new URLPrefixSender("http://localhost/", capturingSender); + FakeSerializer serializer = new FakeSerializer(null); + Client client = new Client(sender, serializer); + Lookup lookup = new Lookup(); + lookup.setInputId("1234"); + lookup.setAddressee("0"); + lookup.setStreet("1"); + lookup.setSecondary("2"); + lookup.setStreet2("3"); + lookup.setUrbanization("4"); + lookup.setCity("5"); + lookup.setState("6"); + lookup.setZipCode("7"); + lookup.setLastline("8"); + lookup.setMatch(MatchType.ENHANCED); + lookup.setFormat(OutputFormat.PROJECT_USA); + + client.send(lookup); + + assertEquals("http://localhost/?input_id=1234&street=1&street2=3" + + "&secondary=2&city=5&state=6&zipcode=7&lastline=8&addressee=0" + + "&urbanization=4&match=enhanced&format=project-usa&candidates=5", capturingSender.getRequest().getUrl()); + + } + //endregion //region [ Batch Lookup ]