Skip to content

Instantly share code, notes, and snippets.

@SalesforceBobLightning
Last active May 20, 2018 12:44
Show Gist options
  • Save SalesforceBobLightning/54d57b8cd4e491cd3f74bde9396f4f1d to your computer and use it in GitHub Desktop.
Save SalesforceBobLightning/54d57b8cd4e491cd3f74bde9396f4f1d to your computer and use it in GitHub Desktop.
Using getAddress() / getaddress.io postcode address lookup with Salesforce Apex
public class GetAddressAPI {
// Get Address API: https://getaddress.io/
// Documentation: https://getaddress.io/Documentation
public String getAddresses(String postcode) {
if (postcode == null) {
return null;
}
string responseData = makeAPICall(postcode);
System.debug(responseData);
if (responseData == null){
return null;
}
LookupAddressResponse response = (LookupAddressResponse)JSON.deserialize(responseData, LookupAddressResponse.class);
List<LookupAddress> addresses = new List<LookupAddress>();
for(string a : response.addresses){
String[] segments = a.split(',');
LookupAddress address = new LookupAddress();
address.latitude = response.latitude;
address.longitude = response.longitude;
address.line1 = segments[0].trim();
address.line2 = segments[1].trim();
address.line3 = segments[2].trim();
address.line4 = segments[3].trim();
address.locality = segments[4].trim();
address.townCity = segments[5].trim();
address.county = segments[6].trim();
address.postcode = postcode;
String fullAddress = '';
for (string segment : segments){
if (String.isNotBlank(segment)){
if (fullAddress != ''){
fullAddress += ', ';
}
fullAddress += segment;
}
}
fullAddress += ', ' + postcode;
address.FullAddress = fullAddress;
addresses.add(address);
}
return JSON.serialize(addresses);
}
public string makeAPICall(string postcode) {
if (postcode == null) {
return null;
}
String url = 'https://api.getAddress.io/find/'
+ EncodingUtil.urlEncode(postcode.replace(' ', ''), 'UTF-8')
+ '?api-key=' + getAPIKey();
Http http = new Http();
HttpRequest request = new HttpRequest();
HttpResponse httpResponse = new HttpResponse();
request.setMethod('GET');
request.setEndpoint(url);
request.setTimeout(120000);
httpResponse = http.send(request);
if (httpResponse.getStatusCode() == 200){
return httpResponse.getBody();
} else {
System.debug(httpResponse.getStatusCode());
System.debug(httpResponse.getBody());
throw new AuraHandledException(httpResponse.getBody());
}
}
private String getAPIKey() {
return ''; // Add your API key or get it from custom settings
}
class LookupAddressResponse {
Decimal latitude;
Decimal longitude;
List<String> addresses;
}
class LookupAddress {
Decimal latitude;
Decimal longitude;
String fullAddress;
String line1;
String line2;
String line3;
String line4;
String locality;
String townCity;
String county;
String postcode;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment