diff options
| author | Chris Sepic | 2010-02-21 12:50:33 -0600 | 
|---|---|---|
| committer | Chris Sepic | 2010-02-21 12:50:33 -0600 | 
| commit | a1a0fa8e6584b1bef742c8ec8fd4797246ef051b (patch) | |
| tree | 02b19516d4781628329952df127ed529328dbe9b /lib | |
| parent | 0835f139d92af1d8275bdffe9ddb0d4414f02bb2 (diff) | |
| download | evernote-a1a0fa8e6584b1bef742c8ec8fd4797246ef051b.tar.bz2 | |
error handling and delegation
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/evernote/client.rb | 12 | ||||
| -rw-r--r-- | lib/evernote/user_store.rb | 17 | 
2 files changed, 25 insertions, 4 deletions
| diff --git a/lib/evernote/client.rb b/lib/evernote/client.rb index 1141087..e6962dc 100644 --- a/lib/evernote/client.rb +++ b/lib/evernote/client.rb @@ -1,13 +1,19 @@ +require 'forwardable' +  module Evernote    class Client -   +      THRIFT_DEFAULTS = {        :transport => Thrift::HTTPClientTransport      }.freeze      def initialize(klass, url, thrift_client_options = {})        thrift_opts = THRIFT_DEFAULTS.merge(thrift_client_options) -      ThriftClient.new(klass, url, thrift_opts) +      @client = ThriftClient.new(klass, url, thrift_opts) +    end + +    def method_missing(name, *args, &block) +      @client.send(name, *args, &block)      end    end -end
\ No newline at end of file +end diff --git a/lib/evernote/user_store.rb b/lib/evernote/user_store.rb index 1be8cb6..2b60756 100644 --- a/lib/evernote/user_store.rb +++ b/lib/evernote/user_store.rb @@ -1,5 +1,10 @@  module Evernote + +  VersionOutOfDate = Class.new(StandardError) +    class UserStore +    attr_reader :client +      def initialize(uri, opts = {}, thrift_client_options = {})        @consumer_key = opts[:consumer_key]        @consumer_secret = opts[:consumer_secret] @@ -10,7 +15,17 @@ module Evernote          raise ArgumentError, ":consumer_key, :consumer_secret, :username and :password are required"        end -      Evernote::Client.new(Evernote::EDAM::UserStore::UserStore::Client, uri, thrift_client_options) +      @client = Evernote::Client.new(Evernote::EDAM::UserStore::UserStore::Client, uri, thrift_client_options) + +      validate_version +    end + +    def validate_version +      raise VersionOutOfDate, "The vendored Evernote client code is out of date and needs to be regenerated" unless version_valid? +    end + +    def version_valid? +      @client.checkVersion("Ruby EDAMTest", Evernote::EDAM::UserStore::EDAM_VERSION_MAJOR, Evernote::EDAM::UserStore::EDAM_VERSION_MINOR)      end    end  end | 
