Created
March 26, 2011 08:03
-
-
Save soh335/888121 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
use strict; | |
use warnings; | |
use lib qw{../../lib/perl}; | |
use Thrift::BinaryProtocol; | |
use Thrift::HttpClient; | |
use UserStore; | |
use NoteStore; | |
use Try::Tiny; | |
use Data::Dumper; | |
use Perl6::Say; | |
use Digest::MD5 qw/md5_hex/; | |
use Path::Class qw/file/; | |
use DateTime; | |
use Config::Pit; | |
my %account = %{pit_get('evernote-account')}; | |
my %consumer = %{pit_get('evernote-consumer')}; | |
my $evernote_host = "sandbox.evernote.com"; | |
my $user_store_url = "https://$evernote_host/edam/user"; | |
my $note_store_url_base = "https://$evernote_host/edam/note/"; | |
my $user_store_transport = Thrift::HttpClient->new( $user_store_url ); | |
my $user_store_protocol = Thrift::BinaryProtocol->new( $user_store_transport ); | |
my $user_store = UserStoreClient->new( $user_store_protocol ); | |
my $auth_result; | |
try { | |
$auth_result = $user_store->authenticate( | |
$account{username}, | |
$account{password}, | |
$consumer{consumer_key}, | |
$consumer{consumer_secret} | |
); | |
} | |
catch { | |
print Dumper $_; | |
exit; | |
}; | |
my $user = $auth_result->user; | |
my $auth_token = $auth_result->authenticationToken; | |
say sprintf "Authentication was successful for %s", $user->username; | |
say sprintf "Authentication token = %s", $auth_token; | |
my $note_store_url = $note_store_url_base . $user->shardId; | |
my $note_store_tranport = Thrift::HttpClient->new( $note_store_url ); | |
my $note_store_protocol = Thrift::BinaryProtocol->new( $note_store_tranport ); | |
my $note_store = NoteStoreClient->new( $note_store_protocol ); | |
my $notebooks = $note_store->listNotebooks( $auth_token ); | |
say sprintf "Found %d notebooks;", scalar @$notebooks; | |
my $default_notebook = $notebooks->[0]; | |
for my $notebook (@$notebooks) { | |
say sprintf " * %s", $notebook->name; | |
if ( $notebook->defaultNotebook ) { | |
$default_notebook = $notebook; | |
} | |
} | |
say sprintf "\nCreating a new note in the default notebook: %s \n", $default_notebook->name; | |
my $file = file('enlogo.png'); | |
my $data = EDAMTypes::Data->new; | |
my $body = $file->slurp; | |
$data->size( $file->lstat->size ); | |
$data->body( $body ); | |
$data->bodyHash( md5_hex $body ); | |
my $resource = EDAMTypes::Resource->new; | |
$resource->mime( "image/png" ); | |
$resource->data( $data ); | |
my $note = EDAMTypes::Note->new; | |
$note->notebookGuid( $default_notebook->guid ); | |
$note->title( "Test note from perl" ); | |
my $xml = <<XML; | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml.dtd"> | |
<en-note>Here is the Evernote logo:<br/> | |
<en-media type="image/png" hash="@{[ $data->bodyHash ]}"/> | |
</en-note> | |
XML | |
$note->content( $xml ); | |
$note->created( DateTime->now->set_time_zone('Asia/Tokyo')->epoch * 1000); | |
$note->updated( $note->created ); | |
$note->resources( [ $resource ] ); | |
try { | |
my $created_note = $note_store->createNote( $auth_token, $note ); | |
say sprintf "Note waas created, GUID = %s", $created_note->guid; | |
} | |
catch { | |
print Dumper $_; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment