Skip to content

Commit

Permalink
Explore saving network_userid cookie from collector
Browse files Browse the repository at this point in the history
  • Loading branch information
mscwilson committed Jun 21, 2022
1 parent c01c692 commit 9e29ed9
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
Expand Up @@ -18,7 +18,15 @@

import androidx.annotation.NonNull;

import com.snowplowanalytics.snowplow.emitter.BufferOption;
import com.snowplowanalytics.snowplow.event.ScreenView;
import com.snowplowanalytics.snowplow.event.Structured;
import com.snowplowanalytics.snowplow.internal.emitter.Emitter;
import com.snowplowanalytics.snowplow.internal.tracker.Subject;
import com.snowplowanalytics.snowplow.internal.tracker.Tracker;
import com.snowplowanalytics.snowplow.network.HttpMethod;
import com.snowplowanalytics.snowplow.network.OkHttpNetworkConnection;
import com.snowplowanalytics.snowplow.network.Protocol;
import com.snowplowanalytics.snowplow.network.RequestResult;
import com.snowplowanalytics.snowplow.internal.emitter.TLSVersion;
import com.snowplowanalytics.snowplow.network.Request;
Expand Down Expand Up @@ -217,6 +225,48 @@ public void testHttpEndpoint_GetHttpUrl() {
assertTrue(connection.getUri().toString().startsWith("http://acme.test.url.com"));
}

public void testCookieJar() throws InterruptedException {

Emitter emitter = new Emitter(getContext(), "0674-82-26-43-253.ngrok.io", new Emitter.EmitterBuilder()
.option(BufferOption.Single)
.method(HttpMethod.GET)
.security(Protocol.HTTPS)
.tick(0)
.emptyLimit(0)
);

Tracker tracker = new Tracker(new Tracker.TrackerBuilder(emitter, "namespace", "myAppId", getContext())
.base64(false)
.level(LogLevel.DEBUG)
);

tracker.track(new ScreenView("cookie_test_1"));
Thread.sleep(1000);
tracker.track(new Structured("cookie_test_2", "action_1"));



int counter = 0;
while (!tracker.getEmitter().getEmitterStatus()) {
Thread.sleep(500);
counter++;
if (counter > 10) {
return;
}
}
counter = 0;
while (tracker.getEmitter().getEmitterStatus()) {
Thread.sleep(500);
counter++;
if (counter > 10) {
return;
}
}
Thread.sleep(500);
tracker.pauseEventTracking();

}


// Service methods

Expand Down
Expand Up @@ -24,6 +24,9 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.RequestBody;
Expand Down Expand Up @@ -189,12 +192,46 @@ private OkHttpNetworkConnection(OkHttpNetworkConnectionBuilder builder) {
.sslSocketFactory(tlsArguments.getSslSocketFactory(), tlsArguments.getTrustManager())
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.cookieJar(new CookieJar())
.build();
} else {
client = builder.client;
}
}

public static Cookie createNonPersistentCookie() {
return new Cookie.Builder()
.domain("0674-82-26-43-253.ngrok.io")
.path("/")
.name("cookie-name")
.value("cookie-value")
// .httpOnly()
// .secure()
.build();
}

private class CookieJar implements okhttp3.CookieJar {
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();

@NonNull
@Override
public List<Cookie> loadForRequest(@NonNull HttpUrl httpUrl) {
Logger.d(TAG, "🍪 in loadForRequest");

// ArrayList<Cookie> fakeCookies = new ArrayList<>();
// fakeCookies.add(createNonPersistentCookie());
List<Cookie> cookies = cookieStore.get(httpUrl.host());
Logger.d(TAG, "🍪 " + cookieStore);
return cookies != null ? cookies : new ArrayList<>();
}

@Override
public void saveFromResponse(@NonNull HttpUrl httpUrl, @NonNull List<Cookie> cookies) {
Logger.d(TAG, "🍪 got cookies: " + cookies);
cookieStore.put(httpUrl.host(), cookies);
}
}

@Override
@NonNull
public HttpMethod getHttpMethod() {
Expand Down

0 comments on commit 9e29ed9

Please sign in to comment.