package io.lumify.flightTrack; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.IOUtils; import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class FlightAwareClient { public static final String FLIGHT_AWARE_JSON_URL = "http://flightxml.flightaware.com/json/FlightXML2/Search"; private final String apiKey; private final String userName; public FlightAwareClient(String apiKey, String userName) { this.apiKey = apiKey; this.userName = userName; } public JSONObject search(String query) throws IOException { String urlEncodedQuery = URLEncoder.encode(query, "UTF-8"); URL url = new URL(FLIGHT_AWARE_JSON_URL + "?howMany=100&query=" + urlEncodedQuery); URLConnection uc = url.openConnection(); uc.setRequestProperty("Authorization", "Basic " + getAuthString()); InputStream in = uc.getInputStream(); try { String jsonString = IOUtils.toString(in); return new JSONObject(jsonString); } finally { in.close(); } } public String getAuthString() { String authString = userName + ":" + apiKey; byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); return new String(authEncBytes); } }