Search in sources :

Example 1 with Geo

use of com.adobe.target.delivery.v1.model.Geo in project target-java-sdk by adobe.

the class GeoParamsCollator method collateParams.

public Map<String, Object> collateParams(TargetDeliveryRequest deliveryRequest, RequestDetails requestDetails) {
    Map<String, Object> params = new HashMap<>();
    Context context = deliveryRequest.getDeliveryRequest().getContext();
    if (context == null || context.getGeo() == null) {
        params.putAll(DEFAULT_GEO_PARAMS);
        return params;
    }
    Geo geo = context.getGeo();
    params.put(GEO_LATITUDE, geo.getLatitude());
    params.put(GEO_LONGITUDE, geo.getLongitude());
    params.put(GEO_CITY, StringUtils.isEmpty(geo.getCity()) ? "" : geo.getCity().toUpperCase().replace(" ", ""));
    params.put(GEO_REGION, StringUtils.isEmpty(geo.getStateCode()) ? "" : geo.getStateCode().toUpperCase());
    params.put(GEO_COUNTRY, StringUtils.isEmpty(geo.getCountryCode()) ? "" : geo.getCountryCode().toUpperCase());
    return params;
}
Also used : Context(com.adobe.target.delivery.v1.model.Context) Geo(com.adobe.target.delivery.v1.model.Geo) HashMap(java.util.HashMap)

Example 2 with Geo

use of com.adobe.target.delivery.v1.model.Geo in project target-java-sdk by adobe.

the class OnDeviceDecisioningService method geoLookupIfNeeded.

private void geoLookupIfNeeded(TargetDeliveryRequest deliveryRequest, boolean doGeoLookup) {
    if (!doGeoLookup) {
        return;
    }
    Context context = deliveryRequest.getDeliveryRequest().getContext();
    if (context != null) {
        Geo geo = context.getGeo();
        if (geo != null) {
            if (StringUtils.isNotEmpty(geo.getIpAddress()) && StringUtils.isEmpty(geo.getCity()) && StringUtils.isEmpty(geo.getStateCode()) && StringUtils.isEmpty(geo.getCountryCode()) && geo.getLatitude() == null && geo.getLongitude() == null) {
                Geo resolvedGeo = this.geoClient.lookupGeo(geo.getIpAddress());
                deliveryRequest.getDeliveryRequest().getContext().setGeo(resolvedGeo);
            }
        }
    }
}
Also used : Context(com.adobe.target.delivery.v1.model.Context) Geo(com.adobe.target.delivery.v1.model.Geo)

Example 3 with Geo

use of com.adobe.target.delivery.v1.model.Geo in project target-java-sdk by adobe.

the class DefaultGeoClient method headersToGeo.

protected Geo headersToGeo(Headers headers) {
    Geo geo = new Geo();
    geo.setCity(headers.getFirst(GEO_HEADER_CITY));
    geo.setStateCode(headers.getFirst(GEO_HEADER_REGION));
    geo.setCountryCode(headers.getFirst(GEO_HEADER_COUNTRY));
    geo.setLatitude(parseFloat(headers.getFirst(GEO_HEADER_LATITUDE)));
    geo.setLongitude(parseFloat(headers.getFirst(GEO_HEADER_LONGITUDE)));
    return geo;
}
Also used : Geo(com.adobe.target.delivery.v1.model.Geo)

Example 4 with Geo

use of com.adobe.target.delivery.v1.model.Geo in project target-java-sdk by adobe.

the class DefaultGeoClientTest method testDefaultGeoClient.

@Test
void testDefaultGeoClient() {
    String domain = "test.com";
    ClientConfig clientConfig = ClientConfig.builder().organizationId("testOrgId").onDeviceConfigHostname(domain).build();
    DefaultGeoClient geoClient = spy(DefaultGeoClient.class);
    geoClient.start(clientConfig);
    String ip = "127.0.0.1";
    String url = "https://" + domain + DefaultGeoClient.GEO_PATH;
    String city = "SAN FRANCISCO";
    String regionCode = "CA";
    String countryCode = "US";
    float latitude = 37.74f;
    float longitude = -122.24f;
    GetRequest request = mock(GetRequest.class);
    @SuppressWarnings("rawtypes") HttpResponse response = mock(HttpResponse.class);
    Headers headers = new Headers();
    headers.add(DefaultGeoClient.GEO_HEADER_CITY, city);
    headers.add(DefaultGeoClient.GEO_HEADER_REGION, regionCode);
    headers.add(DefaultGeoClient.GEO_HEADER_COUNTRY, countryCode);
    headers.add(DefaultGeoClient.GEO_HEADER_LATITUDE, String.valueOf(latitude));
    headers.add(DefaultGeoClient.GEO_HEADER_LONGITUDE, String.valueOf(longitude));
    Mockito.doReturn(response).when(request).asEmpty();
    Mockito.doReturn(headers).when(response).getHeaders();
    Mockito.doReturn(request).when(geoClient).geoRequest(any(), any(), any());
    Geo geoResponse = geoClient.lookupGeo(ip);
    verify(geoClient).geoRequest(eq(url), eq(DefaultGeoClient.GEO_IP_HEADER), eq(ip));
    assertEquals(city, geoResponse.getCity());
    assertEquals(regionCode, geoResponse.getStateCode());
    assertEquals(countryCode, geoResponse.getCountryCode());
    assertEquals(latitude, geoResponse.getLatitude(), 0.01);
    assertEquals(longitude, geoResponse.getLongitude(), 0.01);
}
Also used : Geo(com.adobe.target.delivery.v1.model.Geo) Headers(kong.unirest.Headers) GetRequest(kong.unirest.GetRequest) HttpResponse(kong.unirest.HttpResponse) ClientConfig(com.adobe.target.edge.client.ClientConfig) Test(org.junit.jupiter.api.Test)

Example 5 with Geo

use of com.adobe.target.delivery.v1.model.Geo in project target-java-sdk by adobe.

the class GeoParamsCollatorTest method testCollator.

@Test
public void testCollator() {
    VisitorProvider.init("testOrgId");
    RequestDetails pageLoad = new RequestDetails();
    Geo geo = new Geo();
    geo.setCity("san francisco");
    geo.setStateCode("ca");
    geo.setCountryCode("us");
    geo.setLatitude(37.74f);
    geo.setLongitude(-122.24f);
    TargetDeliveryRequest request = TargetDeliveryRequest.builder().execute(new ExecuteRequest().pageLoad(pageLoad)).context(new Context().geo(geo)).build();
    GeoParamsCollator collator = new GeoParamsCollator();
    Map<String, Object> result = collator.collateParams(request, pageLoad);
    assertEquals("SANFRANCISCO", result.get(GeoParamsCollator.GEO_CITY));
    assertEquals("CA", result.get(GeoParamsCollator.GEO_REGION));
    assertEquals("US", result.get(GeoParamsCollator.GEO_COUNTRY));
    assertEquals(37.74f, (Float) result.get(GeoParamsCollator.GEO_LATITUDE), 0.01);
    assertEquals(-122.24f, (Float) result.get(GeoParamsCollator.GEO_LONGITUDE), 0.01);
}
Also used : Geo(com.adobe.target.delivery.v1.model.Geo) Context(com.adobe.target.delivery.v1.model.Context) ExecuteRequest(com.adobe.target.delivery.v1.model.ExecuteRequest) TargetDeliveryRequest(com.adobe.target.edge.client.model.TargetDeliveryRequest) RequestDetails(com.adobe.target.delivery.v1.model.RequestDetails) Test(org.junit.jupiter.api.Test)

Aggregations

Geo (com.adobe.target.delivery.v1.model.Geo)5 Context (com.adobe.target.delivery.v1.model.Context)3 Test (org.junit.jupiter.api.Test)2 ExecuteRequest (com.adobe.target.delivery.v1.model.ExecuteRequest)1 RequestDetails (com.adobe.target.delivery.v1.model.RequestDetails)1 ClientConfig (com.adobe.target.edge.client.ClientConfig)1 TargetDeliveryRequest (com.adobe.target.edge.client.model.TargetDeliveryRequest)1 HashMap (java.util.HashMap)1 GetRequest (kong.unirest.GetRequest)1 Headers (kong.unirest.Headers)1 HttpResponse (kong.unirest.HttpResponse)1