CatalogType fetch(String url) throws IOException { long start = System.currentTimeMillis(); String urlWithXml = url + FORMAT_XML; try { Get get = new Get(urlWithXml); String result = get.executeAsString(); if (get.isSuccessful()) try { return unmarshal(result); } catch (JAXBException e) { throw new IOException("Cannot unmarshall " + result + ": " + e, e); } } finally { long end = System.currentTimeMillis(); log.info("Fetching from " + urlWithXml + " took " + (end - start) + " milliseconds"); } return null; }
private String execute(String uri) throws IOException { String url = getNominatimUrl() + uri; Get get = new Get(url); String result = get.executeAsString(); if (get.isSuccessful()) return result; return null; }
private String execute(String uri) throws IOException { String url = getPhotonUrl() + uri; Get get = new Get(url); String result = get.executeAsString(); if (get.isSuccessful()) return result; return null; }
public Double getElevationFor(double longitude, double latitude) throws IOException { String url = getElevationUrl("locations=" + latitude + "," + longitude); // could be up to 512 locations Get get = get(url); log.info("Getting elevation for " + longitude + "," + latitude); String result = get.executeAsString(); if (get.isSuccessful()) try { ElevationResponse elevationResponse = unmarshalElevation(result); if (elevationResponse != null) { String status = elevationResponse.getStatus(); checkForError(url, status); List<Double> elevations = extractElevations(elevationResponse.getResult()); return elevations != null && elevations.size() > 0 ? elevations.get(0) : null; } } catch (JAXBException e) { throw new IOException("Cannot unmarshall " + result + ": " + e, e); } return null; }
public List<NavigationPosition> getPositionsFor(String address) throws IOException { String url = getGeocodingUrl("address=" + encodeUri(address)); Get get = get(url); log.info("Getting positions for " + address); String result = get.executeAsString(); if (get.isSuccessful()) try { GeocodeResponse geocodeResponse = unmarshalGeocode(result); if (geocodeResponse != null) { String status = geocodeResponse.getStatus(); checkForError(url, status); return extractAdresses(geocodeResponse.getResult()); } } catch (JAXBException e) { throw new IOException("Cannot unmarshall " + result + ": " + e, e); } return null; }
private String execute(String uri, String apiType) throws IOException { String userName = trim(APIKeyRegistry.getInstance().getAPIKey("geonames", apiType)); if(userName == null) return null; String url = getGeoNamesApiUrl() + uri + "&username=" + userName; Get get = new Get(url); String result = get.executeAsString(); if (get.isSuccessful()) { checkCurrentlyOverloaded(url, result); return result; } return null; }
public String getAddressFor(NavigationPosition position) throws IOException { String url = getGeocodingUrl("latlng=" + position.getLatitude() + "," + position.getLongitude()); Get get = get(url); log.info("Getting location for " + position.getLongitude() + "," + position.getLatitude()); String result = get.executeAsString(); if (get.isSuccessful()) try { GeocodeResponse geocodeResponse = unmarshalGeocode(result); if (geocodeResponse != null) { String status = geocodeResponse.getStatus(); checkForError(url, status); return extractClosestLocation(geocodeResponse.getResult(), position.getLongitude(), position.getLatitude()); } } catch (JAXBException e) { throw new IOException("Cannot unmarshall " + result + ": " + e, e); } return null; }
private Result download() throws IOException { downloadExecutor.updateState(Downloading); Long contentLength = getDownload().getFile().getExpectedChecksum() != null ? getDownload().getFile().getExpectedChecksum().getContentLength() : null; log.info(format("Downloading %d bytes from %s with ETag %s", contentLength, getDownload().getUrl(), getDownload().getETag())); Get get = new Get(getDownload().getUrl()); get.setSocketTimeout(SOCKET_TIMEOUT); if (new Validator(getDownload()).isExistsTargets() && getDownload().getETag() != null) get.setIfNoneMatch(getDownload().getETag()); InputStream inputStream = get.executeAsStream(); log.info(format("Download from %s returned with status code %s and content length %d", getDownload().getUrl(), get.getStatusCode(), get.getContentLength())); if (get.isSuccessful() && inputStream != null) { if(contentLength == null) contentLength = get.getContentLength(); if (contentLength != null) getModelUpdater().expectingBytes(contentLength); new Copier(getModelUpdater()).copyAndClose(inputStream, new FileOutputStream(getDownload().getTempFile()), 0, contentLength); getDownload().setETag(get.getETag()); return new Result(true, get.getLastModified()); } return new Result(get.isSuccessful(), get.isNotModified()); }
public void run() throws IOException { Get request = new Get(getDownload().getUrl()); request.setRange(0L, RANGE_END_INDEX); if (getDownload().getETag() != null) request.setIfNoneMatch(getDownload().getETag()); InputStream inputStream = request.executeAsStream(); log.info(format("GET 0-%d for %s returned with status code %s and content length %d", RANGE_END_INDEX, getDownload().getUrl(), request.getStatusCode(), request.getContentLength())); if (request.isPartialContent()) { writePartialFile(inputStream, getDownload().getFile().getExpectedChecksum().getContentLength(), getDownload().getFile().getFile()); closeQuietly(inputStream); } else if (request.isOk()){ // HTTP Range not supported copyAndClose(inputStream, new FileOutputStream(getDownload().getFile().getFile())); setLastModified(getDownload().getFile().getFile(), request.getLastModified()); } request.release(); if (request.isNotModified()) { downloadExecutor.notModified(); } else if (request.isSuccessful()) { getDownload().setETag(request.getETag()); getDownload().getFile().setActualChecksum(extractChecksum(request)); downloadExecutor.succeeded(); } else downloadExecutor.downloadFailed(); }