package de.bsd.zwitscher.other;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
import android.os.AsyncTask;
import de.bsd.zwitscher.Tokens;
import twitter4j.Status;
/**
* Post a message to ReadItLater
* @author Heiko W. Rupp
*/
public class ReadItLaterStore {
private final String user;
private final String password;
public ReadItLaterStore(String user, String password) {
this.user = user;
this.password = password;
}
private static final String BASE_URL ="https://readitlaterlist.com/v2/";
public String store(Status tweet,boolean isTwitter,String articleUrl) {
// https://readitlaterlist.com/v2/add?username=name&password=123&apikey=yourapikey&url=http://google.com&title=Google
StringBuilder sb = new StringBuilder(BASE_URL);
sb.append("send?");
sb.append("username=").append(user).append("&");
sb.append("password=").append(password).append("&");
sb.append("apikey=").append(Tokens.readItLaterToken);
String targetUrl = sb.toString();
StringBuilder json = new StringBuilder();
json.append("new={");
json.append(" \"0\":{ \n");
json.append(" \"url\":\"").append(articleUrl).append("\",\n");
String text = tweet.getText();
text = text.replaceAll("\"","'");
json.append(" \"title\":\"").append(text).append("\"");
if (isTwitter) {
json.append(",\n");
json.append(" \"ref_id\":\"").append(tweet.getId()).append("\"");
}
json.append("} } ");
System.out.println("--> Sending to pocket: " + json.toString());
int code;
String result="-no result-";
try {
URL url = new URL(targetUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.connect();
OutputStream out = conn.getOutputStream();
out.write(json.toString().getBytes());
out.flush();
code = conn.getResponseCode();
Map headers = conn.getHeaderFields();
System.out.println("--< Headers from Pocket: " + headers);
InputStream inputStream;
if (code != HttpURLConnection.HTTP_OK)
inputStream = conn.getErrorStream();
else
inputStream = conn.getInputStream();
if (inputStream!=null) {
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
br.close();
result = builder.toString();
System.out.println("--< Answer from Pocket " + result);
}
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
result = "Failed - are your credentials ok?";
}
return result;
}
/**
* Verify the account
* @return true if verified, false otherwise
*/
public boolean verifyAccount() {
StringBuilder sb = new StringBuilder(BASE_URL);
sb.append("auth?");
sb.append("username=").append(user).append("&");
sb.append("password=").append(password).append("&");
sb.append("apikey=").append(Tokens.readItLaterToken);
String targetUrl = sb.toString();
try {
boolean result = new CheckRilAccountTask().execute(targetUrl).get();
return result;
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
return false;
}
}
private class CheckRilAccountTask extends AsyncTask<String,Void,Boolean> {
@Override
protected Boolean doInBackground(String... strings) {
String targetUrl = strings[0];
try {
URL url = new URL(targetUrl);
System.out.println("Writing to " + targetUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.connect();
int code = conn.getResponseCode();
return code == 200;
} catch (IOException e) {
e.printStackTrace(); // TODO: Customise this generated block
return false;
}
}
}
}