/*
* Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://aws.amazon.com/apache2.0
*
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and
* limitations under the License.
*/
package com.amazonaws.mobileconnectors.pinpoint.internal.core;
import android.app.Activity;
import android.content.Context;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.AnonymousAWSCredentials;
import com.amazonaws.handlers.RequestHandler2;
import com.amazonaws.mobileconnectors.pinpoint.PinpointConfiguration;
import com.amazonaws.mobileconnectors.pinpoint.analytics.AnalyticsClient;
import com.amazonaws.mobileconnectors.pinpoint.analytics.SessionClient;
import com.amazonaws.mobileconnectors.pinpoint.analytics.utils.ContextWithPermissions;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.configuration.AndroidPreferencesConfiguration;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.http.SDKInfoHandler;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.idresolver.SharedPrefsUniqueIdService;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.system.AndroidSystem;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.system.MockSystem;
import com.amazonaws.mobileconnectors.pinpoint.internal.core.util.SDKInfo;
import com.amazonaws.mobileconnectors.pinpoint.targeting.TargetingClient;
import com.amazonaws.mobileconnectors.pinpoint.targeting.notification.NotificationClient;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.pinpoint.AmazonPinpointClient;
import com.amazonaws.services.pinpointanalytics.AmazonPinpointAnalyticsClient;
import java.util.Locale;
public class MockPinpointContext extends PinpointContext {
private final AndroidPreferencesConfiguration configuration;
private final PinpointConfiguration pinpointConfiguration;
private String uniqueId;
private final SDKInfo sdkInfo;
private final MockSystem system;
private final AmazonPinpointAnalyticsClient analyticsServiceClient;
private final AmazonPinpointClient pinpointServiceClient;
private final Context applicationContext;
private AnalyticsClient analyticsClient;
private TargetingClient targetingClient;
private SessionClient sessionClient;
private NotificationClient notificationClient;
private final String networkType;
public MockPinpointContext(final SDKInfo sdkInfo, final String id) {
this(sdkInfo, id, true, null, true, true, true, "TestNetwork");
}
public MockPinpointContext(final SDKInfo sdkInfo, final String id,
RequestHandler2 additionalHandler) {
this(sdkInfo, id, true, additionalHandler, true, true, true, "TestNetwork");
}
public MockPinpointContext(final SDKInfo sdkInfo, final String id, boolean allowWANDelivery) {
this(sdkInfo, id, allowWANDelivery, null, true, true, true, "TestNetwork");
}
public MockPinpointContext(final SDKInfo sdkInfo, final String id, boolean allowWANDelivery,
RequestHandler2 additionalHandler, boolean initConnectivity, boolean initWifi,
boolean initWAN, String networkType) {
final SharedPrefsUniqueIdService uniqueIdService = new SharedPrefsUniqueIdService(id,
new Activity());
this.uniqueId = uniqueIdService.getUniqueId(this);
this.sdkInfo = sdkInfo;
this.networkType = networkType;
final AWSCredentialsProvider provider = new AWSCredentialsProvider() {
AWSCredentials creds = new AnonymousAWSCredentials();
@Override
public AWSCredentials getCredentials() {
return creds;
}
@Override
public void refresh() {
}
};
this.pinpointConfiguration = new PinpointConfiguration(new ContextWithPermissions(new Activity().getApplicationContext()), getUniqueId(), Regions.US_EAST_1, provider);
this.system = new MockSystem(id);
this.system.getPreferences().putString("UniqueId", id);
this.setConnectivity(initConnectivity);
this.setWAN(initWAN);
this.setWifi(initWifi);
this.applicationContext = new Activity().getApplicationContext();
final AmazonPinpointAnalyticsClient analyticsServiceClient = new AmazonPinpointAnalyticsClient();
analyticsServiceClient.addRequestHandler(additionalHandler);
analyticsServiceClient.addRequestHandler(new SDKInfoHandler(sdkInfo));
this.analyticsServiceClient = analyticsServiceClient;
final AmazonPinpointClient targetingClient = new AmazonPinpointClient();
this.pinpointServiceClient = targetingClient;
this.configuration = AndroidPreferencesConfiguration.newInstance(this);
this.notificationClient = new NotificationClient(this);
}
@Override
public AndroidPreferencesConfiguration getConfiguration() {
return configuration;
}
@Override
public PinpointConfiguration getPinpointConfiguration() {
return pinpointConfiguration;
}
@Override
public NotificationClient getNotificationClient() {
return notificationClient;
}
@Override
public String getUniqueId() {
return uniqueId;
}
@Override
public SDKInfo getSDKInfo() {
return sdkInfo;
}
@Override
public AndroidSystem getSystem() {
return system;
}
public void setConnectivity(final boolean isConnected) {
system.setConnectivity(isConnected);
}
public void setWifi(final boolean hasWifi) {
system.setWifi(hasWifi);
}
public void setWAN(final boolean hasWAN) {
system.setWAN(hasWAN);
}
public void setLocale(final Locale newLocale) {
system.setLocale(newLocale);
}
@Override
public AmazonPinpointAnalyticsClient getAnalyticsServiceClient() {
return analyticsServiceClient;
}
@Override
public AmazonPinpointClient getPinpointServiceClient() {
return pinpointServiceClient;
}
@Override
public String getNetworkType() {
return networkType;
}
}