Skip to content

Commit

Permalink
- Added custom parameter funcitonality for all APIs
Browse files Browse the repository at this point in the history
 - Added county_soruce parameter for the US Street Address API
 - updated tests to reflect the above functionalities
  • Loading branch information
smartyeric committed Jan 23, 2025
1 parent cc493c5 commit 2b27bf4
Show file tree
Hide file tree
Showing 41 changed files with 191 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ public class InternationalAutocompleteClient: NSObject {
request.setValue(value: lookup.maxResults.flatMap { String($0) } ?? "10", HTTPParameterField: "max_results")
request.setValue(value: lookup.locality ?? "", HTTPParameterField: "include_only_locality")
request.setValue(value: lookup.postalCode ?? "", HTTPParameterField: "include_only_postal_code")
for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}

return request
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Foundation

static let SSMaxResults = 10

private var customParamArray: [String: String] = [:]
public var result:InternationalAutocompleteResult?
public var country:String?
public var search:String?
Expand Down Expand Up @@ -42,6 +43,14 @@ import Foundation
}
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}

public func setMaxResults(maxResults: Int, error: inout NSError?) {
if maxResults > 0 && maxResults <= 10 {
self.maxResults = maxResults
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ public class InternationalStreetClient: NSObject {
request.setValue(value: lookup.administrativeArea ?? "", HTTPParameterField: "administrative_area")
request.setValue(value: lookup.postalCode ?? "", HTTPParameterField: "postal_code")

for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}

return request
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Foundation
// When set to language_mode.Native, the results will always be in the language of the output country.
// When set to language_mode.Latin, the results will always be provided using a Latin character set.

private var customParamArray: [String: String] = [:]
public var result:[InternationalStreetCandidate]?
public var inputId:String?
public var country:String?
Expand Down Expand Up @@ -99,4 +100,12 @@ import Foundation
self.geocode = "false"
}
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public class USAutocompleteProClient: NSObject {
request.setValue(value: lookup.preferGeolocation!.name, HTTPParameterField: "prefer_geolocation")
}

for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}

return request
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import Foundation
let SSMaxResults = 10
let SSPreferRatio = 3

private var customParamArray: [String: String] = [:]
public var result:USAutocompleteProResult?
public var search:String?
public var selected:String?
Expand Down Expand Up @@ -90,6 +91,10 @@ import Foundation
}
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func setMaxResults(maxResults: Int, error: inout NSError?) {
if maxResults > 0 && maxResults <= 10 {
self.maxResults = maxResults
Expand Down Expand Up @@ -122,4 +127,8 @@ import Foundation
public func addPreferZIPCode(zipcode:String) {
self.preferZIPCodes?.append(zipcode)
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class EnrichmentLookup: Encodable {
private var zipcode: String
private var freeform: String
private var etag: String
private var custom_param_array: [String: String] = [:]

public init(smartyKey: String, datasetName: String, dataSubsetName: String) {
self.smarty_key = smartyKey
Expand Down Expand Up @@ -85,6 +86,10 @@ public class EnrichmentLookup: Encodable {
return self.etag
}

public func getCustomParamArray() -> [String: String] {
return self.custom_param_array
}

public func setSmartyKey(smarty_key: String) {
self.smarty_key = smarty_key
}
Expand Down Expand Up @@ -120,6 +125,10 @@ public class EnrichmentLookup: Encodable {
public func setEtag(etag: String) {
self.etag = etag
}

public func addCustomParameter(parameter: String, value: String) {
self.custom_param_array.updateValue(value, forKey: parameter)
}

public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
fatalError("You must use a Lookup subclass with an implemented version of deserializeAndSetResults")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class GeoReferenceEnrichmentLookup: EnrichmentLookup {
self.setZipcode(zipcode: lookup.getZipcode())
self.setFreeform(freeform: lookup.getFreeform())
self.setEtag(etag: lookup.getEtag())
for key in lookup.getCustomParamArray().keys {
self.addCustomParameter(parameter: key, value: lookup.getCustomParamArray()[key] ?? "")
}
}

override public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class PropertyFinancialEnrichmentLookup: EnrichmentLookup {
self.setZipcode(zipcode: lookup.getZipcode())
self.setFreeform(freeform: lookup.getFreeform())
self.setEtag(etag: lookup.getEtag())
for key in lookup.getCustomParamArray().keys {
self.addCustomParameter(parameter: key, value: lookup.getCustomParamArray()[key] ?? "")
}
}

override public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class PropertyPrincipalEnrichmentLookup: EnrichmentLookup {
self.setZipcode(zipcode: lookup.getZipcode())
self.setFreeform(freeform: lookup.getFreeform())
self.setEtag(etag: lookup.getEtag())
for key in lookup.getCustomParamArray().keys {
self.addCustomParameter(parameter: key, value: lookup.getCustomParamArray()[key] ?? "")
}
}

override public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class SecondaryCountEnrichmentLookup: EnrichmentLookup {
self.setZipcode(zipcode: lookup.getZipcode())
self.setFreeform(freeform: lookup.getFreeform())
self.setEtag(etag: lookup.getEtag())
for key in lookup.getCustomParamArray().keys {
self.addCustomParameter(parameter: key, value: lookup.getCustomParamArray()[key] ?? "")
}
}

override public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class SecondaryEnrichmentLookup: EnrichmentLookup {
self.setZipcode(zipcode: lookup.getZipcode())
self.setFreeform(freeform: lookup.getFreeform())
self.setEtag(etag: lookup.getEtag())
for key in lookup.getCustomParamArray().keys {
self.addCustomParameter(parameter: key, value: lookup.getCustomParamArray()[key] ?? "")
}
}

override public func deserializeAndSetResults(serializer: SmartySerializer, payload: Data, error: UnsafeMutablePointer<NSError?>) {
Expand Down
3 changes: 3 additions & 0 deletions Sources/SmartyStreets/USEnrichment/USEnrichmentClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ public class USEnrichmentClient: NSObject {
if (lookup.getFreeform() != "") {
request.setValue(value: lookup.getFreeform(), HTTPParameterField: "freeform")
}
for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}
return request
}

Expand Down
3 changes: 3 additions & 0 deletions Sources/SmartyStreets/USExtract/USExtractClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ import Foundation
if lookup.match != USExtractLookup.MatchStrategy.strict {
request.setValue(value: lookup.match?.rawValue ?? "", HTTPParameterField: "match")
}
for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}
return request
}
}
9 changes: 9 additions & 0 deletions Sources/SmartyStreets/USExtract/USExtractLookup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import Foundation
case enhanced
}

private var customParamArray: [String: String] = [:]
public var result:USExtractResult?
public var html:Bool?
public var aggressive:Bool?
Expand Down Expand Up @@ -55,4 +56,12 @@ import Foundation
return false
}
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}
}
3 changes: 3 additions & 0 deletions Sources/SmartyStreets/USReverseGeo/USReverseGeoClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public class USReverseGeoClient: NSObject {
request.setValue(value: lookup.latitude, HTTPParameterField: "latitude")
request.setValue(value: lookup.longitude, HTTPParameterField: "longitude")
request.setValue(value: lookup.source, HTTPParameterField: "source")
for key in lookup.getCustomParamArray().keys {
request.setValue(value: lookup.getCustomParamArray()[key] ?? "", HTTPParameterField: key)
}

return request
}
Expand Down
9 changes: 9 additions & 0 deletions Sources/SmartyStreets/USReverseGeo/USReverseGeoLookup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Foundation
//
// See "https://smartystreets.com/docs/cloud/us-reverse-geo-api"

private var customParamArray: [String: String] = [:]
public var latitude:String
public var longitude:String
public var source:String
Expand All @@ -16,4 +17,12 @@ import Foundation
self.longitude = String(format: "%.8f", longitude)
self.source = source
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}
}
4 changes: 4 additions & 0 deletions Sources/SmartyStreets/USStreet/USStreetClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,12 @@ public class USStreetClient: NSObject {
populate(value: lookup.lastline, field: "lastline", request: request)
populate(value: lookup.addressee, field: "addressee", request: request)
populate(value: lookup.urbanization, field: "urbanization", request: request)
populate(value: lookup.countySource, field: "county_source", request: request)
populate(value: lookup.matchStrategy, field: "match", request: request)
populate(value: lookup.outputFormat, field: "format", request: request)
for key in lookup.getCustomParamArray().keys {
populate(value: lookup.getCustomParamArray()[key], field: key, request: request)
}

}

Expand Down
11 changes: 11 additions & 0 deletions Sources/SmartyStreets/USStreet/USStreetLookup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Foundation
//
// match: Must be set to 'strict', 'enhanced', or 'invalid'.

private var customParamArray: [String: String] = [:]
public var result:[USStreetCandidate]!
public var inputId:String?
public var street:String?
Expand All @@ -20,6 +21,7 @@ import Foundation
public var addressee:String?
public var urbanization:String?
public var maxCandidates:Int?
public var countySource:String?
public var objcMaxCandidates:NSNumber? {
get {
return maxCandidates as NSNumber?
Expand Down Expand Up @@ -47,6 +49,14 @@ import Foundation
return self.result[index]
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}

public func setMaxCandidates(max:Int, error: inout NSError?) {
if max > 0 {
self.maxCandidates = max
Expand All @@ -70,6 +80,7 @@ import Foundation
dictionary = addValueToDictionary(value: self.addressee, key: "addressee", dictionary: dictionary)
dictionary = addValueToDictionary(value: self.urbanization, key: "urbanization", dictionary: dictionary)
dictionary = addValueToDictionary(value: self.maxCandidates, key: "candidates", dictionary: dictionary)
dictionary = addValueToDictionary(value: self.countySource, key: "county_source", dictionary: dictionary)
dictionary = addValueToDictionary(value: self.matchStrategy, key: "match", dictionary: dictionary)
dictionary = addValueToDictionary(value: self.outputFormat, key: "format", dictionary: dictionary)
return dictionary
Expand Down
3 changes: 3 additions & 0 deletions Sources/SmartyStreets/USZipCode/USZipCodeClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ import Foundation
populate(value: lookup.city, field: "city", request: request)
populate(value: lookup.state, field: "state", request: request)
populate(value: lookup.zipcode, field: "zipcode", request: request)
for key in lookup.getCustomParamArray().keys {
populate(value: lookup.getCustomParamArray()[key], field: key, request: request)
}
}

func populate(value:String!, field:String, request:SmartyRequest) {
Expand Down
9 changes: 9 additions & 0 deletions Sources/SmartyStreets/USZipCode/USZipCodeLookup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Foundation
//
// See "https://smartystreets.com/docs/cloud/us-zipcode-api#http-request-input-fields"

private var customParamArray: [String: String] = [:]
public var result:USZipCodeResult!
public var inputId:String?
public var city:String?
Expand Down Expand Up @@ -37,6 +38,14 @@ import Foundation
}
}

public func getCustomParamArray() -> [String: String] {
return self.customParamArray
}

public func addCustomParameter(parameter: String, value: String) {
self.customParamArray.updateValue(value, forKey: parameter)
}

public func toDictionary() -> NSDictionary {
var dictionary = NSDictionary()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class InternationalAutocompleteClientTests: XCTestCase {
lookup.maxResults = 4
lookup.postalCode = "5"
lookup.addressID = "6"
lookup.addCustomParameter(parameter: "custom", value: "7")

_ = client.sendLookup(lookup:&lookup, error:&error)

Expand All @@ -38,6 +39,7 @@ class InternationalAutocompleteClientTests: XCTestCase {
XCTAssertEqual("4", capturingSender.request.parameters["max_results"])
XCTAssertEqual("5", capturingSender.request.parameters["include_only_postal_code"])
XCTAssertEqual("http://localhost/6", capturingSender.request.urlPrefix)
XCTAssertEqual("7", capturingSender.request.parameters["custom"])
XCTAssertNil(self.error)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,23 @@ class InternationalStreetClientTests: XCTestCase {
lookup.locality = "7"
lookup.administrativeArea = "8"
lookup.postalCode = "9"
lookup.addCustomParameter(parameter: "custom", value: "10")

_ = client.sendLookup(lookup: &lookup, error: &self.error)

XCTAssertNil(self.error)
XCTAssertNotNil(capturingSender.request.getUrl())
XCTAssertEqual("0" , capturingSender.request.parameters["country"])
XCTAssertEqual("1" , capturingSender.request.parameters["freeform"])
XCTAssertEqual("2" , capturingSender.request.parameters["address1"])
XCTAssertEqual("3" , capturingSender.request.parameters["address2"])
XCTAssertEqual("4" , capturingSender.request.parameters["address3"])
XCTAssertEqual("5" , capturingSender.request.parameters["address4"])
XCTAssertEqual("6" , capturingSender.request.parameters["organization"])
XCTAssertEqual("7" , capturingSender.request.parameters["locality"])
XCTAssertEqual("8" , capturingSender.request.parameters["administrative_area"])
XCTAssertEqual("9" , capturingSender.request.parameters["postal_code"])
XCTAssertEqual("10" , capturingSender.request.parameters["custom"])
}

func testEmptyLookupRejected() {
Expand Down
2 changes: 1 addition & 1 deletion Tests/SmartyStreetsTests/SerializerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class SerializerTests: XCTestCase {

func testSerialize() {
let expectedOutput = """
[{"city":"01","inputId":"04","state":"02","zipcode":"03"},{"city":"05","inputId":"08","state":"06","zipcode":"07"}]
[{"city":"01","customParamArray":{},"inputId":"04","state":"02","zipcode":"03"},{"city":"05","customParamArray":{},"inputId":"08","state":"06","zipcode":"07"}]
"""
let lookup1 = USZipCodeLookup(city: "01", state: "02", zipcode: "03", inputId: "04")
let lookup2 = USZipCodeLookup(city: "05", state: "06", zipcode: "07", inputId: "08")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class USEnrichmentFinancialResultTest: XCTestCase {
override func setUp() {
super.setUp()
expectedJsonInput = """
{"city":"2","data_set_name":"property","data_subset_name":"financial","etag":"6","exclude_array":["9","10"],"freeform":"5","include_array":["7","8"],"smarty_key":"xxx","state":"3","street":"1","zipcode":"4"}
{"city":"2","custom_param_array":{},"data_set_name":"property","data_subset_name":"financial","etag":"6","exclude_array":["9","10"],"freeform":"5","include_array":["7","8"],"smarty_key":"xxx","state":"3","street":"1","zipcode":"4"}
"""

sobj = """
Expand Down
Loading

0 comments on commit 2b27bf4

Please sign in to comment.