Android Open Source - ion Cookie Middleware From Project Back to project page ion .
License The source code is released under:
Apache License
If you think the Android project ion listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.koushikdutta.ion.cookie;
/ * w w w . j a v a 2 s . c o m * /
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import com.koushikdutta.async.http.Headers;
import com.koushikdutta.async.http.SimpleMiddleware;
import com.koushikdutta.ion.Ion;
import java.net.CookieManager;
import java.net.CookieStore;
import java.net.HttpCookie;
import java.net.URI;
import java.util.List;
import java.util.Map;
/**
* Created by koush on 5/29/13.
*/
public class CookieMiddleware extends SimpleMiddleware {
CookieManager manager;
SharedPreferences preferences;
public CookieStore getCookieStore() {
return manager.getCookieStore();
}
public void clear() {
maybeInit();
getCookieStore().removeAll();
preferences.edit().clear().apply();
}
public CookieManager getCookieManager() {
maybeInit();
return manager;
}
Ion ion;
public CookieMiddleware(Ion ion) {
this.ion = ion;
}
public void reinit() {
manager = new CookieManager(null, null);
preferences = ion.getContext().getSharedPreferences(ion.getName() + "-cookies" , Context.MODE_PRIVATE);
Map<String, ?> allPrefs = preferences.getAll();
for (String key: allPrefs.keySet()) {
try {
String value = preferences.getString(key, null);
Headers headers = new Headers();
String[] lines = value.split("\n" );
boolean first = true;
for (String line: lines) {
if (first) {
first = false;
}
else if (!TextUtils.isEmpty(line)) {
headers.addLine(line);
}
}
manager.put(URI.create(key), headers.getMultiMap());
}
catch (Exception e) {
Log.e("Ion" , "unable to load cookies" , e);
}
}
}
public static void addCookies(Map<String, List<String>> allCookieHeaders, Headers headers) {
for (Map.Entry<String, List<String>> entry : allCookieHeaders.entrySet()) {
String key = entry.getKey();
if ("Cookie" .equalsIgnoreCase(key) || "Cookie2" .equalsIgnoreCase(key)) {
headers.addAll(key, entry.getValue());
}
}
}
private void maybeInit() {
if (manager == null)
reinit();
}
@Override
public void onRequest(OnRequestData data) {
maybeInit();
try {
Map<String, List<String>> cookies = manager.get(
URI.create(
data.request.getUri().toString()),
data.request.getHeaders().getMultiMap());
addCookies(cookies, data.request.getHeaders());
}
catch (Exception e) {
}
}
@Override
public void onHeadersReceived(OnHeadersReceivedDataOnRequestSentData data) {
maybeInit();
try {
put(URI.create(data.request.getUri().toString()), data.response.headers());
}
catch (Exception e) {
}
}
public void put(URI uri, Headers headers) {
maybeInit();
try {
manager.put(uri, headers.getMultiMap());
// no cookies to persist.
if (headers.get("Set-Cookie" ) == null)
return ;
List<HttpCookie> cookies = manager.getCookieStore().get(uri);
Headers dump = new Headers();
for (HttpCookie cookie: cookies) {
dump.add("Set-Cookie" , cookie.getName() + "=" + cookie.getValue());
}
String key = uri.getScheme() + "://" + uri.getAuthority();
preferences.edit().putString(key, dump.toPrefixString("HTTP/1.1 200 OK" )).commit();
}
catch (Exception e) {
}
}
}
Java Source Code List com.koushikdutta.ion.BitmapCallback.java com.koushikdutta.ion.BitmapFetcher.java com.koushikdutta.ion.BitmapInfoToBitmap.java com.koushikdutta.ion.ContextReference.java com.koushikdutta.ion.DefaultTransform.java com.koushikdutta.ion.DeferredLoadBitmap.java com.koushikdutta.ion.FileCacheStore.java com.koushikdutta.ion.HeadersCallback.java com.koushikdutta.ion.HeadersResponse.java com.koushikdutta.ion.ImageViewBitmapInfo.java com.koushikdutta.ion.ImageViewFutureImpl.java com.koushikdutta.ion.InputStreamParser.java com.koushikdutta.ion.IonBitmapRequestBuilder.java com.koushikdutta.ion.IonDrawable.java com.koushikdutta.ion.IonImageViewRequestBuilder.java com.koushikdutta.ion.IonLog.java com.koushikdutta.ion.IonRequestBuilder.java com.koushikdutta.ion.Ion.java com.koushikdutta.ion.LoadBitmapBase.java com.koushikdutta.ion.LoadBitmapEmitter.java com.koushikdutta.ion.LoadBitmapRegion.java com.koushikdutta.ion.LoadBitmap.java com.koushikdutta.ion.LoadDeepZoom.java com.koushikdutta.ion.Loader.java com.koushikdutta.ion.ProgressCallback.java com.koushikdutta.ion.RequestBodyUploadObserver.java com.koushikdutta.ion.Response.java com.koushikdutta.ion.ScaleMode.java com.koushikdutta.ion.TransformBitmap.java com.koushikdutta.ion.bitmap.BitmapDecodeException.java com.koushikdutta.ion.bitmap.BitmapInfo.java com.koushikdutta.ion.bitmap.Exif.java com.koushikdutta.ion.bitmap.IonBitmapCache.java com.koushikdutta.ion.bitmap.LocallyCachedStatus.java com.koushikdutta.ion.bitmap.LruBitmapCache.java com.koushikdutta.ion.bitmap.MarkableInputStream.java com.koushikdutta.ion.bitmap.PostProcess.java com.koushikdutta.ion.bitmap.SoftReferenceHashtable.java com.koushikdutta.ion.bitmap.Transform.java com.koushikdutta.ion.builder.AnimateGifMode.java com.koushikdutta.ion.builder.BitmapBuilder.java com.koushikdutta.ion.builder.BitmapFutureBuilder.java com.koushikdutta.ion.builder.Builders.java com.koushikdutta.ion.builder.FutureBuilder.java com.koushikdutta.ion.builder.GsonFutureBuilder.java com.koushikdutta.ion.builder.ImageViewBuilder.java com.koushikdutta.ion.builder.ImageViewFutureBuilder.java com.koushikdutta.ion.builder.LoadBuilder.java com.koushikdutta.ion.builder.LoadImageViewFutureBuilder.java com.koushikdutta.ion.builder.MultipartBodyBuilder.java com.koushikdutta.ion.builder.RequestBuilder.java com.koushikdutta.ion.builder.UrlEncodedBuilder.java com.koushikdutta.ion.conscrypt.ConscryptMiddleware.java com.koushikdutta.ion.cookie.CookieMiddleware.java com.koushikdutta.ion.future.ImageViewFuture.java com.koushikdutta.ion.future.ResponseFuture.java com.koushikdutta.ion.gif.GifDecoder.java com.koushikdutta.ion.gif.GifFrame.java com.koushikdutta.ion.gson.GsonArrayParser.java com.koushikdutta.ion.gson.GsonBody.java com.koushikdutta.ion.gson.GsonObjectParser.java com.koushikdutta.ion.gson.GsonParser.java com.koushikdutta.ion.gson.GsonSerializer.java com.koushikdutta.ion.gson.PojoBody.java com.koushikdutta.ion.loader.AssetLoader.java com.koushikdutta.ion.loader.AsyncHttpRequestFactory.java com.koushikdutta.ion.loader.ContentLoader.java com.koushikdutta.ion.loader.FileLoader.java com.koushikdutta.ion.loader.HttpLoader.java com.koushikdutta.ion.loader.InputStreamDataEmitterFuture.java com.koushikdutta.ion.loader.MediaFile.java com.koushikdutta.ion.loader.MtpConstants.java com.koushikdutta.ion.loader.PackageIconLoader.java com.koushikdutta.ion.loader.ResourceLoader.java com.koushikdutta.ion.loader.SimpleLoader.java com.koushikdutta.ion.loader.StreamLoader.java com.koushikdutta.ion.loader.VideoLoader.java com.koushikdutta.ion.sample.DeepZoomSample.java com.koushikdutta.ion.sample.GallerySample.java com.koushikdutta.ion.sample.GoogleImageSearch.java com.koushikdutta.ion.sample.ImageViewSample.java com.koushikdutta.ion.sample.LollipopTransitionFullscreen.java com.koushikdutta.ion.sample.LollipopTransition.java com.koushikdutta.ion.sample.ProgressBarDownload.java com.koushikdutta.ion.sample.ProgressBarUpload.java com.koushikdutta.ion.sample.SampleApplication.java com.koushikdutta.ion.sample.Samples.java com.koushikdutta.ion.sample.SquaredImageView.java com.koushikdutta.ion.sample.TwitterGson.java com.koushikdutta.ion.sample.Twitter.java