package com.instructure.canvasapi.utilities;
import android.content.Context;
import android.util.Log;
import com.mobprofs.retrofit.converters.SimpleXmlConverter;
import retrofit.RestAdapter;
/**
* Created by nbutton on 5/22/14.
*/
public class KalturaRestAdapter {
/**
* Returns a RestAdapter Instance that points at :domain/api_v3
*
* @param callback A Canvas Callback
* @return A Canvas RestAdapterInstance. If setupInstance() hasn't been called, returns an invalid RestAdapter.
*/
public static RestAdapter buildAdapter(CanvasCallback callback) {
callback.setFinished(false);
return buildAdapter(callback.getContext());
}
/**
* Returns a RestAdapter Instance
*
* @param context An Android context.
* @return A Canvas RestAdapterInstance. If setupInstance() hasn't been called, returns an invalid RestAdapter.
*/
public static RestAdapter buildAdapter(final Context context) {
if(context == null ){
return null;
}
String domain = APIHelpers.getFullKalturaDomain(context);
//Can make this check as we KNOW that the setter doesn't allow empty strings.
if (domain == null || domain.equals("")) {
Log.d(APIHelpers.LOG_TAG, "The KalturaRestAdapter hasn't been set up yet. Call setupInstance(context,token,domain)");
return new RestAdapter.Builder().setEndpoint("http://invalid.domain.com").build();
}
//Sets the auth token, user agent, and handles masquerading.
return new RestAdapter.Builder()
.setEndpoint(domain + "/api_v3/") // The base API endpoint.
.setConverter(new SimpleXmlConverter())
.build();
}
/**
* Sets up the KalturaRestAdapter.
*
* Short hand for setdomain and setToken.
*
* Clears out any old data before setting the new data.
*
* @param context An Android context.
* @param ks_token An kaltura Token
* @param domain The domain for the signed in user.
*
* @return Whether or not the instance was setup. Only returns false if the data is empty or invalid.
*/
public static boolean setupInstance(Context context, String ks_token, String domain){
if (ks_token == null ||
ks_token.equals("") ||
domain == null) {
return false;
}
String protocol = "https";
if(domain.startsWith("http://")) {
protocol = "http";
}
boolean kalturaDomainSet = APIHelpers.setKalturaDomain(context, domain);
boolean tokenSet = APIHelpers.setKalturaToken(context, ks_token);
boolean protocolSet = APIHelpers.setProtocol(protocol, context);
return (kalturaDomainSet && tokenSet && protocolSet);
}
}