shareNote() public method

public shareNote ( string authenticationToken, string guid ) : string
authenticationToken string
guid string
return string
Example #1
0
    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");
          Console.ReadLine();
          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);
        }

        // Sample Code To Add A Notebook
        //Notebook newNoteBook = new Notebook();
        //newNoteBook.Name     = "Test Notebook";
        //noteStore.createNotebook(authToken, newNoteBook); 

        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 = "Evernote Logo";

        // 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();
        Console.WriteLine("Successfully created new note with GUID: " + createdNote.Guid);
        Console.WriteLine();
 
        // Share The Newly Created Note To Provide Access Using An Evernote URL
        // This Document Will Be Publicly Accessible.  
        string noteKey = noteStore.shareNote(authToken, createdNote.Guid);

        Console.WriteLine();
        Console.WriteLine("Successfully shared new note with Note Key: " + noteKey);
        Console.WriteLine();

        // Twitter Integration
        try
        {

            // You Can Find Your SharedId By Sharing A Document On Your Evernote Sandbox Account
            // The Evernote Generated URL Will Contain This Value
            string sharedId = "s1";
            string noteLink = "https://sandbox.evernote.com/shard/" + sharedId + "/sh/" + createdNote.Guid + "/" + noteKey;

            // You Will Need To Create A Twitter Developer Account For This Information.
            // All Of The Values Below Will Be Generated From Your Twitter Developer Account
            // Login In To Twitter And Use The Following URL:  https://dev.twitter.com/apps
            //   1. Create Twitter Developer Account
            //   2. Create A New Application
            //   2. Set Access Level To Read and Write On The Application Page
            //   3. Generate Access Token At Bottom Of The Application Page
            OAuthTokens oaTokens       = new OAuthTokens();
            oaTokens.AccessToken       = "Your Twitter Access Token Here";
            oaTokens.AccessTokenSecret = "Your Twitter Access Token Secret Here";
            oaTokens.ConsumerKey       = "Your Twitter ConsumerKey Here";
            oaTokens.ConsumerSecret    = "Your Twitter ConsumerKey Here";

            // Truncate Doc Title If It Is Longer Than 40 Characters
            string docTitle = createdNote.Title;
            if (docTitle.Length > 40)
            {
                docTitle.Substring(0, 40);
            }

            // Truncate Message If It Is Longer Than 140 Characters
            string message = "Evernote Doc - " + docTitle;
            if (message.Length > 140)
            {
                message = message.Substring(0, 140);
            }
            // Add URL To Tweet.  Twitter Will Shorten If Neccessary
            message += " " + noteLink;

            // Update Twitter Status And Check Result For Success
            TwitterResponse<TwitterStatus> twStatus = TwitterStatus.Update(oaTokens, message); 
            if (twStatus.Result.ToString().ToLower() != "success")
            {
                throw new Exception("Twitter Status Not Updated");
            }

            Console.WriteLine();
            Console.Write("Document Posted To Twitter");
            Console.WriteLine();

        }
        catch (Exception ex)
        {
            Console.Write(ex.ToString());
        }

        Console.ReadLine();
    }