// Path: funf_v4/src/main/java/edu/mit/media/funf/util/IOUtil.java
// public class IOUtil {
// 	
// 	public static String inputStreamToString(InputStream is, String encoding) throws IOException {
// 		final char[] buffer = new char[0x10000];
// 		StringBuilder out = new StringBuilder();
// 		Reader in = new InputStreamReader(is, encoding);
// 		int read;
// 		do {
// 		  read = in.read(buffer, 0, buffer.length);
// 		  if (read>0) {
// 		    out.append(buffer, 0, read);
// 		  }
// 		} while (read>=0);
// 		return out.toString();
// 	}
// 	
// 	public static String httpGet(String uri,HttpParams params){
// 		HttpResponse response=null;
// 		HttpClient httpclient = new DefaultHttpClient();
// 		StringBuilder uriBuilder = new StringBuilder(uri);
// 		HttpGet httpget = new HttpGet(uriBuilder.toString());
// 		if (params != null) {
// 			httpget.setParams(params);
// 		}
//         try {
// 		    response = httpclient.execute(httpget);
// 			if (response.getStatusLine().getStatusCode() == 401) {
// 				FunfManager.funfManager.authError();
// 				response = null;
// 			}
// 		} catch (ClientProtocolException e) {
// 			Log.e(TAG, "HttpGet Error: ", e);
// 			response=null;
// 		} catch (IOException e) {
// 			Log.e(TAG, "HttpGet Error: ", e);
// 			response=null;
// 		} finally{
// 	        httpclient.getConnectionManager().shutdown();  
// 		}
// 		if (response != null) {
// 			try {
// 				StringBuilder sb = new StringBuilder();
// 				HttpEntity entity = response.getEntity();
// 				BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()), 65728);
// 				String line;
// 				while ((line = reader.readLine()) != null) {
// 					sb.append(line);
// 				}
// 				return sb.toString();
// 			} catch (IOException e) {e.printStackTrace();}
// 			catch (Exception e) {e.printStackTrace();}
// 		}
//         return null;
// 	}
// 
// 	/**
// 	 * Closes a stream, and swallows null cases our IOExceptions.
// 	 * @param stream
// 	 */
// 	public static boolean close(Closeable stream) {
// 		if(stream != null) {
// 			try {
// 				stream.close();
// 				return true;
// 			} catch (IOException e) {
// 				Log.e(LogUtil.TAG, "Error closing stream", e);
// 			}
// 		}
// 		return false;
// 	}
// 
//   public static boolean isValidUrl(String url) {
//   	Log.d(LogUtil.TAG, "Validating url");
//   	boolean isValidUrl = Patterns.WEB_URL.matcher(url).matches();
//   	Log.d(LogUtil.TAG, "Valid url? " + isValidUrl);
//   	return isValidUrl;
//   }
// 
// 	public static String formatServerUrl(String uploadurl, String filename) {
// 
// 		URI uri = null;
// 		String accessToken = "";
// 		try {
// 			uri = new URI(uploadurl);
// 			accessToken = FunfManager.context.getSharedPreferences("funf_auth", Context.MODE_PRIVATE).getString(md5(uri.getHost()), "");
// 		} catch (URISyntaxException e) {
// 			e.printStackTrace();
// 		}
// 
// 		String formattedUploadUrl = uploadurl;
// 		formattedUploadUrl = formattedUploadUrl.replace("$FILENAME$", filename);
// 		formattedUploadUrl = formattedUploadUrl.replace("$ACCESS_TOKEN$", accessToken);
// 
// 		return formattedUploadUrl;
// 	}
// 
// 	public static final String md5(final String s) {
// 		try {
// 			// Create MD5 Hash
// 			MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
// 			digest.update(s.getBytes());
// 			byte messageDigest[] = digest.digest();
// 
// 			// Create Hex String
// 			StringBuffer hexString = new StringBuffer();
// 			for (int i = 0; i < messageDigest.length; i++) {
// 				String h = Integer.toHexString(0xFF & messageDigest[i]);
// 				while (h.length() < 2)
// 					h = "0" + h;
// 				hexString.append(h);
// 			}
// 			return hexString.toString();
// 
// 		} catch (NoSuchAlgorithmException e) {
// 			e.printStackTrace();
// 		} catch (NullPointerException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// }


import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import edu.mit.media.funf.util.IOUtil;
package edu.mit.media.funf.config;



/**
 * ConfigUpdater which does an Http get to the given url.
 *
 */
public class HttpConfigUpdater extends ConfigUpdater {

  @Configurable
  private String url;
  
  @Override
  public JsonObject getConfig() throws ConfigUpdateException {
    try {
      String content = null;
// Path: funf_v4/src/main/java/edu/mit/media/funf/util/IOUtil.java
// public class IOUtil {
// 	
// 	public static String inputStreamToString(InputStream is, String encoding) throws IOException {
// 		final char[] buffer = new char[0x10000];
// 		StringBuilder out = new StringBuilder();
// 		Reader in = new InputStreamReader(is, encoding);
// 		int read;
// 		do {
// 		  read = in.read(buffer, 0, buffer.length);
// 		  if (read>0) {
// 		    out.append(buffer, 0, read);
// 		  }
// 		} while (read>=0);
// 		return out.toString();
// 	}
// 	
// 	public static String httpGet(String uri,HttpParams params){
// 		HttpResponse response=null;
// 		HttpClient httpclient = new DefaultHttpClient();
// 		StringBuilder uriBuilder = new StringBuilder(uri);
// 		HttpGet httpget = new HttpGet(uriBuilder.toString());
// 		if (params != null) {
// 			httpget.setParams(params);
// 		}
//         try {
// 		    response = httpclient.execute(httpget);
// 			if (response.getStatusLine().getStatusCode() == 401) {
// 				FunfManager.funfManager.authError();
// 				response = null;
// 			}
// 		} catch (ClientProtocolException e) {
// 			Log.e(TAG, "HttpGet Error: ", e);
// 			response=null;
// 		} catch (IOException e) {
// 			Log.e(TAG, "HttpGet Error: ", e);
// 			response=null;
// 		} finally{
// 	        httpclient.getConnectionManager().shutdown();  
// 		}
// 		if (response != null) {
// 			try {
// 				StringBuilder sb = new StringBuilder();
// 				HttpEntity entity = response.getEntity();
// 				BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()), 65728);
// 				String line;
// 				while ((line = reader.readLine()) != null) {
// 					sb.append(line);
// 				}
// 				return sb.toString();
// 			} catch (IOException e) {e.printStackTrace();}
// 			catch (Exception e) {e.printStackTrace();}
// 		}
//         return null;
// 	}
// 
// 	/**
// 	 * Closes a stream, and swallows null cases our IOExceptions.
// 	 * @param stream
// 	 */
// 	public static boolean close(Closeable stream) {
// 		if(stream != null) {
// 			try {
// 				stream.close();
// 				return true;
// 			} catch (IOException e) {
// 				Log.e(LogUtil.TAG, "Error closing stream", e);
// 			}
// 		}
// 		return false;
// 	}
// 
//   public static boolean isValidUrl(String url) {
//   	Log.d(LogUtil.TAG, "Validating url");
//   	boolean isValidUrl = Patterns.WEB_URL.matcher(url).matches();
//   	Log.d(LogUtil.TAG, "Valid url? " + isValidUrl);
//   	return isValidUrl;
//   }
// 
// 	public static String formatServerUrl(String uploadurl, String filename) {
// 
// 		URI uri = null;
// 		String accessToken = "";
// 		try {
// 			uri = new URI(uploadurl);
// 			accessToken = FunfManager.context.getSharedPreferences("funf_auth", Context.MODE_PRIVATE).getString(md5(uri.getHost()), "");
// 		} catch (URISyntaxException e) {
// 			e.printStackTrace();
// 		}
// 
// 		String formattedUploadUrl = uploadurl;
// 		formattedUploadUrl = formattedUploadUrl.replace("$FILENAME$", filename);
// 		formattedUploadUrl = formattedUploadUrl.replace("$ACCESS_TOKEN$", accessToken);
// 
// 		return formattedUploadUrl;
// 	}
// 
// 	public static final String md5(final String s) {
// 		try {
// 			// Create MD5 Hash
// 			MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
// 			digest.update(s.getBytes());
// 			byte messageDigest[] = digest.digest();
// 
// 			// Create Hex String
// 			StringBuffer hexString = new StringBuffer();
// 			for (int i = 0; i < messageDigest.length; i++) {
// 				String h = Integer.toHexString(0xFF & messageDigest[i]);
// 				while (h.length() < 2)
// 					h = "0" + h;
// 				hexString.append(h);
// 			}
// 			return hexString.toString();
// 
// 		} catch (NoSuchAlgorithmException e) {
// 			e.printStackTrace();
// 		} catch (NullPointerException e) {
// 			e.printStackTrace();
// 		}
// 		return "";
// 	}
// }


// Path: funf_v4/src/main/java/edu/mit/media/funf/config/HttpConfigUpdater.java
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import edu.mit.media.funf.util.IOUtil;

package edu.mit.media.funf.config;



/**
 * ConfigUpdater which does an Http get to the given url.
 *
 */
public class HttpConfigUpdater extends ConfigUpdater {

  @Configurable
  private String url;
  
  @Override
  public JsonObject getConfig() throws ConfigUpdateException {
    try {
      String content = null;
      String currentUrl = IOUtil.formatServerUrl(url, "");