internal static bool VerifyEDAM(UserStore.Client userStore) { bool versionOK = userStore.checkVersion("C# EDAMTest", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); Console.WriteLine("Is my EDAM protocol version up to date? " + versionOK); return(versionOK); }
/// <summary> /// Make sure we have a valid auth token. Refreshes if possible, otherwise re-authenticates /// using username and password. Throws an TApplicationException, TTransportException, /// EDAMUserException or EDAMSystemException if an error occurs. /// </summary> /// <returns> /// True if a valid auth token was obtained, false if the Evernote service won't speak to us /// because our protocol version is out-of-date. /// </returns> private bool auth(String authToken) { // We need to authenticate - first make sure we're allowed to speak to the service if (!userStore.checkVersion(APP_NAME, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR)) { return(false); } this.authToken = authToken; noteStoreUrl = userStore.getNoteStoreUrl(authToken); return(true); }
public bool BeginSyncTransaction() { Logger.Debug("[Evernote] Begining Sync..."); if (ConsumerKey.Equals("your_key_here")) { throw new Exception("You need to Update the Evernote ConsumerKey!! Open up the EvernoteSyncServer.cs file and look at it!"); } ServicePointManager.CertificatePolicy = new CertificateManager(); //ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate; bool versionOK = _userStore.checkVersion("Tomboy.EvernoteSyncAddin", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); if (!versionOK) { Logger.Error("[Evernote] EDAM protocol version not up to date: " + Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR + "." + Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); return(false); } string username; string password; if (!EvernoteSyncServiceAddin.GetConfigSettings(out username, out password)) { return(false); } AuthenticationResult authResult = _userStore.authenticate(username, password, ConsumerKey, ConsumerSecret); User user = authResult.User; _authToken = authResult.AuthenticationToken; Logger.Debug("[Evernote] Authentication successful for: " + user.Username); Logger.Debug("[Evernote] Authentication token = " + _authToken); String noteStoreUrl = EdamBaseUrl + "/edam/note/" + user.ShardId; TTransport noteStoreTransport = new THttpClient(noteStoreUrl); TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); _noteStore = new NoteStore.Client(noteStoreProtocol); //TODO - check if the user has a 'Tomboy' Notebook. If not, add one bool foundTomboyNotebook = false; List <Notebook> notebooks = _noteStore.listNotebooks(_authToken); foreach (Notebook notebook in notebooks) { if (notebook.Name.ToLowerInvariant().Trim().Equals("tomboy")) { foundTomboyNotebook = true; _tomboyNotebook = notebook; } } if (!foundTomboyNotebook) { // no tomboy notebook found, so try to add one _tomboyNotebook = new Notebook(); _tomboyNotebook.Name = "Tomboy"; _tomboyNotebook.DefaultNotebook = false; _tomboyNotebook.Guid = new Guid().ToString(); _tomboyNotebook = _noteStore.createNotebook(_authToken, _tomboyNotebook); if (_tomboyNotebook == null) { Logger.Error("[Evernote] Could not create 'Tomboy' notebook in evernote"); return(false); } Console.WriteLine("[Evernote] New Tomboy notebook with guid : " + _tomboyNotebook.Guid); } return(true); }
public static void RunImpl(DependencyObject dispatcherOwner, ViewModel viewModel) { if (authToken == "your developer token") { ShowMessage(dispatcherOwner, "Please fill in your devleoper token in Sample.cs"); return; } // Instantiate the libraries to connect the service TTransport userStoreTransport = new THttpClient(new Uri(UserStoreUrl)); TProtocol userStoreProtocol = new TBinaryProtocol(userStoreTransport); UserStore.Client userStore = new UserStore.Client(userStoreProtocol); // Check that the version is correct bool versionOK = userStore.checkVersion("Evernote EDAMTest (WP7)", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); InvokeOnUIThread(dispatcherOwner, () => viewModel.IsVersionOk = versionOK); Debug.WriteLine("Is my Evernote API version up to date? " + versionOK); if (!versionOK) { return; } // Get the URL used to interact with the contents of the user's account // When your application authenticates using OAuth, the NoteStore URL will // be returned along with the auth token in the final OAuth request. // In that case, you don't need to make this call. String noteStoreUrl = userStore.getNoteStoreUrl(authToken); TTransport noteStoreTransport = new THttpClient(new Uri(noteStoreUrl)); TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); NoteStore.Client noteStore = new NoteStore.Client(noteStoreProtocol); // Listing all the user's notebook List <Notebook> notebooks = noteStore.listNotebooks(authToken); Debug.WriteLine("Found " + notebooks.Count + " notebooks:"); InvokeOnUIThread(dispatcherOwner, () => { foreach (var notebook in notebooks) { viewModel.Notebooks.Add(notebook); } }); // Find the default notebook Notebook defaultNotebook = notebooks.Single(notebook => notebook.DefaultNotebook); // Printing the names of the notebooks foreach (Notebook notebook in notebooks) { Debug.WriteLine(" * " + notebook.Name); } // Listing the first 10 notes in the default notebook NoteFilter filter = new NoteFilter { NotebookGuid = defaultNotebook.Guid }; NoteList notes = noteStore.findNotes(authToken, filter, 0, 10); InvokeOnUIThread(dispatcherOwner, () => { foreach (var note in notes.Notes) { viewModel.Notes.Add(note); } }); foreach (Note note in notes.Notes) { Debug.WriteLine(" * " + note.Title); } // Creating a new note in the default notebook Debug.WriteLine("Creating a note in the default notebook: " + defaultNotebook.Name); Note newNote = new Note { NotebookGuid = defaultNotebook.Guid, Title = "Test note from EDAMTest.cs", Content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" + "<en-note>Here's an Evernote test note<br/>" + "</en-note>" }; Note createdNote = noteStore.createNote(authToken, newNote); ShowMessage(dispatcherOwner, "Successfully created new note with GUID: " + createdNote.Guid); }
private async void ClickedCreateNoteButton(object sender, EventArgs e) { try { string authToken = "authToken"; string evernoteHost = "sandbox.evernote.com"; string url = urlEntry.Text; if (string.IsNullOrWhiteSpace(url)) { throw new Exception("URLを入力してください。"); } Debug.WriteLine("URL=" + url); Uri userStoreUrl = new Uri("https://" + evernoteHost + "/edam/user"); TTransport userStoreTransport = new THttpClient(userStoreUrl); TProtocol userStoreProtocol = new TBinaryProtocol(userStoreTransport); UserStore.Client userStore = new UserStore.Client(userStoreProtocol); bool versionOk = userStore.checkVersion("InstantEverClip", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); if (!versionOk) { throw new Exception("バージョン・チェックがエラーになりました。"); } var noteTitle = ""; var req = WebRequest.Create(url); var res = await req.GetResponseAsync(); using (Stream s = res.GetResponseStream()) { var htmlDoc = new HtmlDocument(); var buf = new byte[1024 * 1024]; var ms = new MemoryStream(); var len = 0; while ((len = s.Read(buf, 0, buf.Length)) > 0) { ms.Write(buf, 0, len); } buf = ms.ToArray(); var html = ""; var enc = Hnx8.ReadJEnc.ReadJEnc.JP.GetEncoding(buf, buf.Length, out html); if (enc != null) { Debug.WriteLine("HTML Encoding=" + enc.ToString()); htmlDoc.LoadHtml(html); HtmlNode titleNode = htmlDoc.DocumentNode.Descendants("title").First(); if (titleNode != null) { if (!string.IsNullOrWhiteSpace(titleNode.InnerText)) { noteTitle = titleNode.InnerText; Debug.WriteLine("noteTitle=" + noteTitle); } else { noteTitle = url; Debug.WriteLine("title tag is empty."); } } else { noteTitle = url; Debug.WriteLine("title tag is not found."); } } else { noteTitle = url; Debug.WriteLine("url is not text/html."); } } string noteStoreUrl = userStore.getNoteStoreUrl(authToken); TTransport noteStoreTransport = new THttpClient(new Uri(noteStoreUrl)); TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); NoteStore.Client noteStore = new NoteStore.Client(noteStoreProtocol); Note note = new Note(); note.Title = noteTitle; note.Attributes = new NoteAttributes { SourceURL = urlEntry.Text }; note.Content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" + "<en-note>" + noteTitle + "<br />" + urlEntry.Text + "</en-note>"; noteStore.createNote(authToken, note); Debug.WriteLine("create note succeed."); App.ShowToast(ToastNotificationType.Success, noteTitle, "ノートを作成しました。"); urlEntry.Text = string.Empty; } catch (Exception ex) { Debug.WriteLine(ex.ToString()); App.ShowToast(ToastNotificationType.Error, "エラー", ex.ToString()); } }
public static void Main(string[] args) { // Real applications authenticate with Evernote using OAuth, but for the // purpose of exploring the API, you can get a developer token that allows // you to access your own Evernote account. To get a developer token, visit // https://sandbox.evernote.com/api/DeveloperToken.action String authToken = "your developer token"; if (authToken == "your developer token") { Console.WriteLine("Please fill in your developer token"); Console.WriteLine("To get a developer token, visit https://sandbox.evernote.com/api/DeveloperToken.action"); return; } // Initial development is performed on our sandbox server. To use the production // service, change "sandbox.evernote.com" to "www.evernote.com" and replace your // developer token above with a token from // https://www.evernote.com/api/DeveloperToken.action String evernoteHost = "sandbox.evernote.com"; Uri userStoreUrl = new Uri("https://" + evernoteHost + "/edam/user"); TTransport userStoreTransport = new THttpClient(userStoreUrl); TProtocol userStoreProtocol = new TBinaryProtocol(userStoreTransport); UserStore.Client userStore = new UserStore.Client(userStoreProtocol); bool versionOK = userStore.checkVersion("Evernote EDAMTest (C#)", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); Console.WriteLine("Is my Evernote API version up to date? " + versionOK); if (!versionOK) { return; } // Get the URL used to interact with the contents of the user's account // When your application authenticates using OAuth, the NoteStore URL will // be returned along with the auth token in the final OAuth request. // In that case, you don't need to make this call. String noteStoreUrl = userStore.getNoteStoreUrl(authToken); TTransport noteStoreTransport = new THttpClient(new Uri(noteStoreUrl)); TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); NoteStore.Client noteStore = new NoteStore.Client(noteStoreProtocol); // List all of the notebooks in the user's account List <Notebook> notebooks = noteStore.listNotebooks(authToken); Console.WriteLine("Found " + notebooks.Count + " notebooks:"); foreach (Notebook notebook in notebooks) { Console.WriteLine(" * " + notebook.Name); } Console.WriteLine(); Console.WriteLine("Creating a note in the default notebook"); Console.WriteLine(); // To create a new note, simply create a new Note object and fill in // attributes such as the note's title. Note note = new Note(); note.Title = "Test note from EDAMTest.cs"; // To include an attachment such as an image in a note, first create a Resource // for the attachment. At a minimum, the Resource contains the binary attachment // data, an MD5 hash of the binary data, and the attachment MIME type. It can also // include attributes such as filename and location. ImageConverter converter = new ImageConverter(); byte[] image = (byte[])converter.ConvertTo(Resources.enlogo, typeof(byte[])); byte[] hash = new MD5CryptoServiceProvider().ComputeHash(image); Data data = new Data(); data.Size = image.Length; data.BodyHash = hash; data.Body = image; Resource resource = new Resource(); resource.Mime = "image/png"; resource.Data = data; // Now, add the new Resource to the note's list of resources note.Resources = new List <Resource>(); note.Resources.Add(resource); // To display the Resource as part of the note's content, include an <en-media> // tag in the note's ENML content. The en-media tag identifies the corresponding // Resource using the MD5 hash. string hashHex = BitConverter.ToString(hash).Replace("-", "").ToLower(); // The content of an Evernote note is represented using Evernote Markup Language // (ENML). The full ENML specification can be found in the Evernote API Overview // at http://dev.evernote.com/documentation/cloud/chapters/ENML.php note.Content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" + "<en-note>Here's the Evernote logo:<br/>" + "<en-media type=\"image/png\" hash=\"" + hashHex + "\"/>" + "</en-note>"; // Finally, send the new note to Evernote using the createNote method // The new Note object that is returned will contain server-generated // attributes such as the new note's unique GUID. Note createdNote = noteStore.createNote(authToken, note); Console.WriteLine("Successfully created new note with GUID: " + createdNote.Guid); }