/* * Licensed Materials - Property of IBM * 5725-I43 (C) Copyright IBM Corp. 2015. All Rights Reserved. * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ package com.ibm.mil.readyapps.telco.adapters; import java.io.IOException; import java.net.URISyntaxException; import java.util.List; import java.util.logging.Logger; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.http.HttpResponse; import org.apache.http.ParseException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.apache.wink.common.http.HttpStatus; import com.google.gson.Gson; import com.ibm.mil.cloudant.geospatial.GeoJsonPoint; import com.ibm.mil.cloudant.geospatial.GeoRadiusURI; import com.ibm.mil.readyapps.telco.models.WifiHotspotFlat; import com.ibm.mil.utils.WifiHotspotUtils; @Path("/users") public class CloudantGeoAdapterResource { private static final GeoJsonPoint DEMO_LOCATION = new GeoJsonPoint(10.1, 10.2); /* * For more info on JAX-RS see * https://jsr311.java.net/nonav/releases/1.1/index.html */ // Define logger (Standard java.util.Logger) static Logger logger = Logger.getLogger(CloudantGeoAdapterResource.class .getName()); /* * Path for method: * "<server address>/TelcoReadyAppMFP/adapters/CloudantGeoAdapter/users/{user_id}/wifi" */ @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{user_id}/wifi") public Response getWifiLocations(@PathParam("user_id") String name, @QueryParam(value = "lat") double latitude, @QueryParam(value = "lon") double longitude) { GeoJsonPoint userLocation = new GeoJsonPoint(latitude, longitude); try { HttpGet httpget = new HttpGet(GeoRadiusURI.build(DEMO_LOCATION)); CloseableHttpClient httpClient = HttpClientBuilder.create().build(); HttpResponse httpResponse = httpClient.execute(httpget); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.OK .getCode()) { String jsonString = EntityUtils.toString(httpResponse .getEntity()); List<WifiHotspotFlat> hotspots = WifiHotspotUtils.parseAndOffsetHotspots(jsonString, userLocation); return Response.ok(new Gson().toJson(hotspots), MediaType.APPLICATION_JSON) .build(); } httpClient.close(); return Response.serverError().entity(httpResponse.getStatusLine()) .build(); } catch (URISyntaxException | ParseException | IOException e) { e.printStackTrace(); return Response.serverError().entity("Error").build(); } } }