package com.lgq.rssreader.share; import org.json.JSONArray; import android.app.Activity; import android.view.View; import android.webkit.WebView; import android.webkit.WebViewClient; import com.lgq.rssreader.core.Config; import com.lgq.rssreader.entity.Blog; import com.lgq.rssreader.enums.AccountType; import com.lgq.rssreader.parser.HttpResponseHandler; import com.lgq.rssreader.utils.Helper; import com.lgq.rssreader.utils.HtmlHelper; import com.lgq.rssreader.utils.ShareHelper; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; public class EvernoteShare implements BlogShare<String>{ // Change the following variable to "www.evernote.com" to access the production service private final String EvernoteHost = "www.evernote.com"; private final String EDAMBaseUrl = "https://" + EvernoteHost; // UserStore service endpoint private final String UserStoreUrl = EDAMBaseUrl + "/edam/user"; private final String NoteStoreUrl = EDAMBaseUrl + "/edam/note/shard"; public final String EvernoteUrl = EDAMBaseUrl + "/"; public void login(final Activity page, final String apiKey, final String secretKey, final ShareHandler<String> handler){ AsyncHttpClient client = new AsyncHttpClient(); AsyncHttpResponseHandler response = new AsyncHttpResponseHandler(){ public void onSuccess(String result){ String loginUrl = EvernoteUrl + "OAuth.action?" + result.split("&")[0]; ShareHelper.buildLoginPage(page, AccountType.Evernote); ShareHelper.browserControl.loadUrl(loginUrl); ShareHelper.browserControl.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (url.contains("https://api.weibo.com") && url.contains("oauth_token=")){ int index = url.indexOf("?"); String ret = url.substring(index + 1); AsyncHttpClient tokenClient = new AsyncHttpClient(); AsyncHttpResponseHandler tokenHandler = new AsyncHttpResponseHandler(){ public void onSuccess(String result){ ShareHelper.removeBrowser(); if (handler != null){ handler.onCallback(HtmlHelper.unescape(result), true, ""); } } public void onFailure(){ ShareHelper.removeBrowser(); if (handler != null){ handler.onCallback(new Exception("FailedToLoginPleaseKeepConnection")); } } }; tokenClient.get(EvernoteUrl + "oauth?oauth_consumer_key="+ apiKey +"&oauth_signature=" + secretKey +"%26&oauth_signature_method=PLAINTEXT&oauth_timestamp="+ System.currentTimeMillis() + "&oauth_nonce="+ System.currentTimeMillis() +"&" + ret,tokenHandler); } } }); } public void onFailure(){ if (handler != null){ handler.onCallback(new Exception("FailedToLoginPleaseKeepConnection")); } } }; client.get(EvernoteUrl + "oauth?oauth_consumer_key=" + apiKey + "&oauth_signature=" + secretKey + "%26&oauth_signature_method=PLAINTEXT&oauth_timestamp=" + System.currentTimeMillis() + "&oauth_nonce=" + System.currentTimeMillis() + "&oauth_callback=https%3A%2F%2Fapi.weibo.com%2Foauth2%2Fdefault.html", response); } public void share(Blog blog, String accessToken, final ShareHandler<String> handler){ // { // String noteStoreUrl = // accessToken.split('&').First(s => s.Contains("edam_noteStoreUrl=")).Replace("edam_noteStoreUrl=", String.Empty); // // String authToken = accessToken.Split('&').First(s => s.Contains("oauth_token=")).Replace("oauth_token=", String.Empty); // //String noteStoreUrl = NoteStoreUrl + "/" + accessToken.Split(':')[0].Split('=')[1]; // // TTransport noteStoreTransport = new THttpClient(new Uri(noteStoreUrl)); // TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); // NoteStore.Client noteStore = new NoteStore.Client(noteStoreProtocol); // // try // { // List<Notebook> books = noteStore.listNotebooks(authToken); // // Notebook rss; // // if (!books.Any(b => b.Name == Resources.StringResources.RssReader)) // { // Notebook notebook = new Notebook // { // DefaultNotebook = false, // Name = Resources.StringResources.RssReader // }; // rss = noteStore.createNotebook(authToken, notebook); // } // else // { // rss = books.First(b => b.Name == Resources.StringResources.RssReader); // } // // String content = ""; // if (!String.IsNullOrEmpty(blog.CachedContent)) // content = blog.CachedContent; // else // content = blog.CachedDescription; // // content = Helper.ConvertHtmlToEnml(content); // // Note newNote = new Note // { // NotebookGuid = rss.Guid, // Title = blog.Title, // Content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + // "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" + // "<en-note>" + content + "<br/>" + // "</en-note>" // }; // // Note createdNote = noteStore.createNote(authToken, newNote); // // ShareCallBack(this, new ShareEventArgs<String>(true, createdNote.Title)); // } // catch (TTransportException e) // { // Debug.WriteLine(e.Message); // ShareCallBack(this, new ShareEventArgs<String>(false, Resources.StringResources.NetworkError)); // } // catch (EDAMUserException e) // { // Debug.WriteLine(e.Message); // ShareCallBack(this, new ShareEventArgs<String>(false, Resources.StringResources.NotFormat)); // } // catch (Exception e) // { // ShareCallBack(this, new ShareEventArgs<String>(false, e.Message)); // } } }