package com.mediafire.sdk.config;
import com.mediafire.sdk.token.ActionToken;
import com.mediafire.sdk.token.SessionToken;
/**
* This class contains a set of interface objects which are then used to instantiate the MediaFire object.
* The simplest implementation can call Configuration.getDefault()
*/
public class Configuration {
private MFCredentials credentials;
private MFHttpRequester httpRequester;
private MFSessionRequester sessionRequester;
private MFActionRequester actionRequester;
private String alternateDomain;
private final String apiKey;
private final String appId;
public Configuration(String appId, String apiKey) {
this.appId = appId;
this.apiKey = apiKey;
}
public Configuration(String appId) {
this(appId, null);
}
/**
* returns the MFCredentials in this configuration
*
* @return MFCredentials
*/
public MFCredentials getCredentials() {
return credentials;
}
/**
* returns the MFHttpRequester in this configuration
* @return MFHttpRequester
*/
public MFHttpRequester getHttpRequester() {
return httpRequester;
}
/**
* returns the MFSessionRequester in this configuration
* @return MFSessionRequester
*/
public MFSessionRequester getSessionRequester() {
return sessionRequester;
}
/**
* returns the MFActionRequester in this configuration
*
* @return MFActionRequester
*/
public MFActionRequester getActionRequester() {
return actionRequester;
}
/**
* returns the alternate domain to be used in this configuration
*
* @return String
*/
public String getAlternateDomain() {
return alternateDomain;
}
/**
* gets the current api key in this configuration
*
* @return String
*/
public String getApiKey() {
return apiKey;
}
/**
* gets the current app id in this configuration
*
* @return String
*/
public String getAppId() {
return appId;
}
/**
* sets the MFCredentials for this configuration
*
* @param mediaFireCredentials MFCredentials
*/
public void setCredentials(MFCredentials mediaFireCredentials) {
this.credentials = mediaFireCredentials;
this.sessionRequester.setCredentials(this.credentials);
}
/**
* sets the HttpRequester for this configuration
*
* @param mediaFireHttpRequester MFHttpRequester
*/
public void setHttpRequester(MFHttpRequester mediaFireHttpRequester) {
this.httpRequester = mediaFireHttpRequester;
}
/**
* sets the MFSessionRequester for this configuration
*
* @param mediaFireSessionRequester MFSessionRequester
*/
public void setSessionRequester(MFSessionRequester mediaFireSessionRequester) {
this.sessionRequester = mediaFireSessionRequester;
}
/**
* sets the MFActionRequester for this configuration
*
* @param mediaFireActionRequester MFActionRequester
*/
public void setActionRequester(MFActionRequester mediaFireActionRequester) {
this.actionRequester = mediaFireActionRequester;
}
/**
* sets an alternate domain to use other than www.mediafire.com
*
* @param alternateDomain String
*/
public void setAlternateDomain(String alternateDomain) {
this.alternateDomain = alternateDomain;
}
/**
* returns a Configuration object using default interface implementations
*
* @param appId the application id
* @param apiKey the api key (can be null)
* @return a Configuration object.
*/
public static Configuration createConfiguration(String appId, String apiKey) {
// store for session tokens
MFStore<SessionToken> sessionStore = new DefaultSessionStore();
MFStore<ActionToken> imageStore = new DefaultActionStore(1);
MFStore<ActionToken> uploadStore = new DefaultActionStore(10);
MFCredentials credentials = new DefaultCredentials();
MFHttpRequester httpRequester = new DefaultHttpRequester(5000, 45000);
MFSessionRequester sessionRequester = new DefaultSessionRequester(credentials, appId, apiKey, httpRequester, sessionStore);
sessionRequester.setCredentials(credentials);
MFActionRequester actionRequester = new DefaultActionRequester(httpRequester, sessionRequester, imageStore, uploadStore);
Configuration configuration = new Configuration(appId, apiKey);
configuration.setHttpRequester(httpRequester);
configuration.setSessionRequester(sessionRequester);
configuration.setActionRequester(actionRequester);
configuration.setCredentials(credentials);
return configuration;
}
/**
* returns a Configuration object using default interface implementations
*
* @param appId the application id
* @return a Configuration object.
*/
public static Configuration createConfiguration(String appId) {
return createConfiguration(appId, null);
}
}