Created
February 18, 2015 14:38
-
-
Save petecocoon/4cce4c27400053a859cf to your computer and use it in GitHub Desktop.
goo.gl URL shortener for Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.os.AsyncTask; | |
import org.apache.http.HttpEntity; | |
import org.apache.http.HttpResponse; | |
import org.apache.http.client.methods.HttpPost; | |
import org.apache.http.entity.StringEntity; | |
import org.apache.http.impl.client.DefaultHttpClient; | |
import org.json.JSONException; | |
import org.json.JSONObject; | |
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
/** | |
* Created by piero on 2/17/15. | |
* Usage | |
* new URLShortener().getShortUrl(url, new URLShortener.RequestEndListner() { | |
* @Override | |
* public void onRequestEnd(String shortUrl) { | |
* //use shortUrl for your purpose | |
* } | |
* | |
* @Override | |
* public void onRequestException() { | |
* //something went wrong | |
* } | |
* }); | |
*/ | |
public class URLShortener { | |
final String address = "https://www.googleapis.com/urlshortener/v1/url"; | |
public void getShortUrl(String longUrl, RequestEndListner requestEndListner) { | |
new UrlShortnerRequest().execute(longUrl, requestEndListner); | |
} | |
public interface RequestEndListner { | |
public void onRequestEnd(String url); | |
public void onRequestException(); | |
} | |
private class UrlShortnerRequest extends AsyncTask<Object, Void, JSONObject> { | |
RequestEndListner listeRequestEndListner; | |
@Override | |
protected JSONObject doInBackground(Object... params) { | |
try { | |
listeRequestEndListner = (RequestEndListner) params[1]; | |
DefaultHttpClient httpClient = new DefaultHttpClient(); | |
HttpPost httpPost = new HttpPost(address); | |
JSONObject json = new JSONObject(); | |
json.put("longUrl", params[0]); | |
httpPost.setEntity(new StringEntity(json.toString())); | |
httpPost.setHeader("Content-Type", "application/json"); | |
HttpResponse httpResponse = httpClient.execute(httpPost); | |
HttpEntity httpEntity = httpResponse.getEntity(); | |
return jsonStream2Object(httpEntity.getContent()); | |
} catch (Exception e) { | |
} | |
return null; | |
} | |
protected void onPostExecute(JSONObject result) { | |
if (result == null) { | |
listeRequestEndListner.onRequestException(); | |
} else { | |
try { | |
listeRequestEndListner.onRequestEnd(result.getString("id")); | |
} catch (JSONException e) { | |
listeRequestEndListner.onRequestException(); | |
e.printStackTrace(); | |
} | |
} | |
} | |
private String stream2String(InputStream inputStream) { | |
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream), 8); | |
StringBuilder sb = new StringBuilder(); | |
String line; | |
try { | |
while ((line = reader.readLine()) != null) { | |
sb.append(line); | |
} | |
inputStream.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
return sb.toString(); | |
} | |
private JSONObject jsonStream2Object(InputStream inputStream) throws JSONException { | |
return new JSONObject(stream2String(inputStream)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment