
com.koushikdutta.ion.Ion Maven / Gradle / Ivy
package com.koushikdutta.ion;
import android.content.Context;
import android.util.Log;
import android.widget.ImageView;
import com.google.gson.Gson;
import com.koushikdutta.async.AsyncServer;
import com.koushikdutta.async.future.Future;
import com.koushikdutta.async.http.AsyncHttpClient;
import com.koushikdutta.async.http.ResponseCacheMiddleware;
import com.koushikdutta.ion.builder.IonBodyParamsRequestBuilder;
import com.koushikdutta.ion.builder.IonFutureRequestBuilder;
import com.koushikdutta.ion.builder.IonLoadRequestBuilder;
import com.koushikdutta.ion.builder.IonMutableBitmapRequestPostLoadBuilder;
import com.koushikdutta.ion.cookie.CookieMiddleware;
import com.koushikdutta.ion.loader.ContentLoader;
import com.koushikdutta.ion.loader.FileLoader;
import com.koushikdutta.ion.loader.HttpLoader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.WeakHashMap;
/**
* Created by koush on 5/21/13.
*/
public class Ion {
/**
* Get the default Ion object instance and begin building a request
* with the given uri
* @param context
* @param uri
* @return
*/
public static IonBodyParamsRequestBuilder with(Context context, String uri) {
return getDefault(context).build(context, uri);
}
/**
* Get the default Ion object instance and begin building an operation
* on the given file
* @param context
* @param file
* @return
*/
public static IonFutureRequestBuilder with(Context context, File file) {
return getDefault(context).build(context, file);
}
/**
* Begin building an operation on the given file
* @param context
* @param file
* @return
*/
public IonFutureRequestBuilder build(Context context, File file) {
return new IonRequestBuilder(context, this).load(file);
}
/**
* Get the default Ion instance
* @param context
* @return
*/
public static Ion getDefault(Context context) {
if (instance == null)
instance = new Ion(context);
return instance;
}
/**
* Create a ImageView bitmap request builder
* @param imageView
* @return
*/
public static IonMutableBitmapRequestPostLoadBuilder with(ImageView imageView) {
Ion ion = getDefault(imageView.getContext());
return new IonRequestBuilder(imageView.getContext(), ion).withImageView(imageView);
}
/**
* Begin building a request with the given uri
* @param context
* @param uri
* @return
*/
public IonBodyParamsRequestBuilder build(Context context, String uri) {
return new IonRequestBuilder(context, this).load(uri);
}
/**
* Create a builder that can be used to build an network request
* @param imageView
* @return
*/
public IonMutableBitmapRequestPostLoadBuilder build(ImageView imageView) {
return new IonRequestBuilder(imageView.getContext(), this).withImageView(imageView);
}
/**
* Cancel all pending requests associated with the request group
* @param group
*/
public void cancelAll(Object group) {
FutureSet members;
synchronized (this) {
members = inFlight.remove(group);
}
if (members == null)
return;
for (Future future: members.keySet()) {
if (future != null)
future.cancel();
}
}
/**
* Route all http requests through the given proxy.
* @param host
* @param port
*/
public void proxy(String host, int port) {
httpClient.getSocketMiddleware().enableProxy(host, port);
}
/**
* Route all https requests through the given proxy.
* Note that https proxying requires that the Android device has the appropriate
* root certificate installed to function properly.
* @param host
* @param port
*/
public void proxySecure(String host, int port) {
httpClient.getSSLSocketMiddleware().enableProxy(host, port);
}
/**
* Disable routing of http requests through a previous provided proxy
*/
public void disableProxy() {
httpClient.getSocketMiddleware().disableProxy();
}
/**
* Disable routing of https requests through a previous provided proxy
*/
public void disableSecureProxy() {
httpClient.getSocketMiddleware().disableProxy();
}
void removeFutureInFlight(Future future, Object group) {
}
void addFutureInFlight(Future future, Object group) {
if (group == null || future == null || future.isDone() || future.isCancelled())
return;
FutureSet members;
synchronized (this) {
members = inFlight.get(group);
if (members == null) {
members = new FutureSet();
inFlight.put(group, members);
}
}
members.put(future, true);
}
/**
* Cancel all pending requests
*/
public void cancelAll() {
ArrayList
© 2015 - 2025 Weber Informatics LLC | Privacy Policy