nylas 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/account.rb +2 -2
 - data/lib/api_account.rb +1 -1
 - data/lib/api_thread.rb +1 -1
 - data/lib/calendar.rb +1 -1
 - data/lib/contact.rb +2 -2
 - data/lib/draft.rb +9 -16
 - data/lib/event.rb +2 -2
 - data/lib/file.rb +3 -3
 - data/lib/folder.rb +1 -1
 - data/lib/label.rb +1 -1
 - data/lib/message.rb +5 -6
 - data/lib/mixins.rb +1 -1
 - data/lib/nylas.rb +56 -46
 - data/lib/parameters.rb +1 -1
 - data/lib/restful_model.rb +7 -7
 - data/lib/restful_model_collection.rb +5 -5
 - data/lib/time_attr_accessor.rb +2 -2
 - data/lib/version.rb +2 -2
 - metadata +102 -58
 - data/LICENSE.txt +0 -22
 - data/README.md +0 -599
 - data/lib/inbox.rb +0 -375
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ab2bbc150ba9969544a9044e70426435899ce892
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ef8eaf6732b5dba963c8a6e4fbc238e91de70950
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 05aea3e3090be4f44562970ca4e80eb127825d4fef4565800e1d2a40a2063c250583ffb782f456e7d0ac5d2cb5bc1323879f3703b3fa12b433b6bbe2af723f4a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 90ef6270c015fe24d10e968679fbe7b2e33e29cec4d282c561a997708cc011cf260578b4306d59877c691d790ab128c89e2e79c13bb9fee0a3fcf33cc18b9b39
         
     | 
    
        data/lib/account.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'restful_model'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Account < RestfulModel
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                parameter :account_id
         
     | 
| 
         @@ -15,7 +15,7 @@ module Inbox 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  collection = ManagementModelCollection.new(Account, @_api, {:account_id=>@account_id})
         
     | 
| 
       16 
16 
     | 
    
         
             
                  ::RestClient.post("#{collection.url}/#{@account_id}/#{action}",{}) do |response, request, result|
         
     | 
| 
       17 
17 
     | 
    
         
             
                      # Throw any exceptions
         
     | 
| 
       18 
     | 
    
         
            -
                    json =  
     | 
| 
      
 18 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, :expected_class => Object)
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
       21 
21 
     | 
    
         | 
    
        data/lib/api_account.rb
    CHANGED
    
    
    
        data/lib/api_thread.rb
    CHANGED
    
    
    
        data/lib/calendar.rb
    CHANGED
    
    
    
        data/lib/contact.rb
    CHANGED
    
    
    
        data/lib/draft.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'restful_model'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Draft < Message
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                parameter :thread_id
         
     | 
| 
         @@ -32,25 +32,18 @@ module Inbox 
     | 
|
| 
       32 
32 
     | 
    
         
             
                  end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                  ::RestClient.post(url, data.to_json, :content_type => :json) do |response, request, result|
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                     
     | 
| 
       37 
     | 
    
         
            -
                    # because we need to pass an additional error message to the Exception constructor.
         
     | 
| 
       38 
     | 
    
         
            -
                    Inbox.interpret_http_status(result)
         
     | 
| 
       39 
     | 
    
         
            -
                    json = JSON.parse(response)
         
     | 
| 
       40 
     | 
    
         
            -
                    if json.is_a?(Hash) && (json['type'] == 'api_error' or json['type'] == 'invalid_request_error')
         
     | 
| 
       41 
     | 
    
         
            -
                      exc = Inbox.http_code_to_exception(result.code.to_i)
         
     | 
| 
       42 
     | 
    
         
            -
                      exc_type = json['type']
         
     | 
| 
       43 
     | 
    
         
            -
                      exc_message = json['message']
         
     | 
| 
       44 
     | 
    
         
            -
                      exc_server_error = json['server_error']
         
     | 
| 
       45 
     | 
    
         
            -
                      raise exc.new(exc_type, exc_message, server_error=exc_server_error)
         
     | 
| 
       46 
     | 
    
         
            -
                    end
         
     | 
| 
       47 
     | 
    
         
            -
                    raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                    self.inflate(json)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    response = Nylas.interpret_response(result, response, {:expected_class => Object})
         
     | 
| 
      
 36 
     | 
    
         
            +
                    self.inflate(response)
         
     | 
| 
       50 
37 
     | 
    
         
             
                  end
         
     | 
| 
       51 
38 
     | 
    
         | 
| 
       52 
39 
     | 
    
         
             
                  self
         
     | 
| 
       53 
40 
     | 
    
         
             
                end
         
     | 
| 
       54 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
                def destroy
         
     | 
| 
      
 43 
     | 
    
         
            +
                  ::RestClient::Request.execute(method: :delete, url: self.url, payload: ({ :version => self.version }).to_json) do |response, request, result|
         
     | 
| 
      
 44 
     | 
    
         
            +
                    response = Nylas.interpret_response(result, response, options={:raw_response=>true})
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
       55 
48 
     | 
    
         
             
              end
         
     | 
| 
       56 
49 
     | 
    
         
             
            end
         
     | 
    
        data/lib/event.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'restful_model'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Event < RestfulModel
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                parameter :title
         
     | 
| 
         @@ -35,7 +35,7 @@ module Inbox 
     | 
|
| 
       35 
35 
     | 
    
         
             
                  data = {:event_id => @id, :status => status, :comment => comment}
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
                  ::RestClient.post(url, data.to_json, :content_type => :json) do |response, request, result|
         
     | 
| 
       38 
     | 
    
         
            -
                    json =  
     | 
| 
      
 38 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, :expected_class => Object)
         
     | 
| 
       39 
39 
     | 
    
         
             
                    self.inflate(json)
         
     | 
| 
       40 
40 
     | 
    
         
             
                  end
         
     | 
| 
       41 
41 
     | 
    
         | 
    
        data/lib/file.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'restful_model'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            module  
     | 
| 
      
 3 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       4 
4 
     | 
    
         
             
              class File < RestfulModel
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                parameter :size
         
     | 
| 
         @@ -20,7 +20,7 @@ module Inbox 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                def save!
         
     | 
| 
       22 
22 
     | 
    
         
             
                  ::RestClient.post(url, {:file => @file}) do |response, request, result|
         
     | 
| 
       23 
     | 
    
         
            -
                    json =  
     | 
| 
      
 23 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, :expected_class => Object)
         
     | 
| 
       24 
24 
     | 
    
         
             
                    json = json[0] if (json.class == Array)
         
     | 
| 
       25 
25 
     | 
    
         
             
                    inflate(json)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -30,7 +30,7 @@ module Inbox 
     | 
|
| 
       30 
30 
     | 
    
         
             
                def download
         
     | 
| 
       31 
31 
     | 
    
         
             
                  download_url = self.url('download')
         
     | 
| 
       32 
32 
     | 
    
         
             
                  ::RestClient.get(download_url) do |response, request, result|
         
     | 
| 
       33 
     | 
    
         
            -
                     
     | 
| 
      
 33 
     | 
    
         
            +
                    Nylas.interpret_response(result, response, {:raw_response => true})
         
     | 
| 
       34 
34 
     | 
    
         
             
                    response
         
     | 
| 
       35 
35 
     | 
    
         
             
                  end
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
    
        data/lib/folder.rb
    CHANGED
    
    
    
        data/lib/label.rb
    CHANGED
    
    
    
        data/lib/message.rb
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ require 'restful_model' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'file'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'mixins'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            module  
     | 
| 
      
 5 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       6 
6 
     | 
    
         
             
              class Message < RestfulModel
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                parameter :subject
         
     | 
| 
         @@ -20,7 +20,7 @@ module Inbox 
     | 
|
| 
       20 
20 
     | 
    
         
             
                parameter :folder
         
     | 
| 
       21 
21 
     | 
    
         
             
                parameter :labels
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                include  
     | 
| 
      
 23 
     | 
    
         
            +
                include Nylas::ReadUnreadMethods
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                def inflate(json)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  super
         
     | 
| 
         @@ -80,10 +80,9 @@ module Inbox 
     | 
|
| 
       80 
80 
     | 
    
         
             
                end
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
82 
     | 
    
         
             
                def raw
         
     | 
| 
       83 
     | 
    
         
            -
                  model = nil
         
     | 
| 
       84 
83 
     | 
    
         
             
                  collection = RestfulModelCollection.new(Message, @_api, {:message_id=>@id})
         
     | 
| 
       85 
84 
     | 
    
         
             
                  RestClient.get("#{collection.url}/#{id}/", :accept => 'message/rfc822'){ |response,request,result|
         
     | 
| 
       86 
     | 
    
         
            -
                     
     | 
| 
      
 85 
     | 
    
         
            +
                    Nylas.interpret_response(result, response, {:raw_response => true})
         
     | 
| 
       87 
86 
     | 
    
         
             
                    response
         
     | 
| 
       88 
87 
     | 
    
         
             
                  }
         
     | 
| 
       89 
88 
     | 
    
         
             
                end
         
     | 
| 
         @@ -92,8 +91,8 @@ module Inbox 
     | 
|
| 
       92 
91 
     | 
    
         
             
                  expanded_url = url(action='?view=expanded')
         
     | 
| 
       93 
92 
     | 
    
         | 
| 
       94 
93 
     | 
    
         
             
                  RestClient.get(expanded_url){ |response,request,result|
         
     | 
| 
       95 
     | 
    
         
            -
                    json =  
     | 
| 
       96 
     | 
    
         
            -
                    expanded_message =  
     | 
| 
      
 94 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, :expected_class => Object)
         
     | 
| 
      
 95 
     | 
    
         
            +
                    expanded_message = Nylas::ExpandedMessage.new(@_api)
         
     | 
| 
       97 
96 
     | 
    
         
             
                    expanded_message.inflate(json)
         
     | 
| 
       98 
97 
     | 
    
         
             
                    expanded_message
         
     | 
| 
       99 
98 
     | 
    
         
             
                  }
         
     | 
    
        data/lib/mixins.rb
    CHANGED
    
    
    
        data/lib/nylas.rb
    CHANGED
    
    | 
         @@ -2,6 +2,8 @@ require 'json' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'rest-client'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'yajl'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'em-http'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       5 
7 
     | 
    
         
             
            require 'ostruct'
         
     | 
| 
       6 
8 
     | 
    
         
             
            require 'active_support/core_ext/hash'
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
         @@ -21,41 +23,43 @@ require 'restful_model' 
     | 
|
| 
       21 
23 
     | 
    
         
             
            require 'restful_model_collection'
         
     | 
| 
       22 
24 
     | 
    
         
             
            require 'version'
         
     | 
| 
       23 
25 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
            module  
     | 
| 
      
 26 
     | 
    
         
            +
            module Nylas
         
     | 
| 
       25 
27 
     | 
    
         
             
              Error = Class.new(::StandardError)
         
     | 
| 
       26 
     | 
    
         
            -
              AccessDenied = Class.new(Error)
         
     | 
| 
       27 
     | 
    
         
            -
              ResourceNotFound = Class.new(Error)
         
     | 
| 
       28 
28 
     | 
    
         
             
              NoAuthToken = Class.new(Error)
         
     | 
| 
       29 
29 
     | 
    
         
             
              UnexpectedAccountAction = Class.new(Error)
         
     | 
| 
       30 
30 
     | 
    
         
             
              UnexpectedResponse = Class.new(Error)
         
     | 
| 
       31 
31 
     | 
    
         
             
              class APIError < Error
         
     | 
| 
       32 
     | 
    
         
            -
                attr_accessor : 
     | 
| 
      
 32 
     | 
    
         
            +
                attr_accessor :type
         
     | 
| 
      
 33 
     | 
    
         
            +
                attr_accessor :message
         
     | 
| 
       33 
34 
     | 
    
         
             
                attr_accessor :server_error
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                def initialize(type,  
     | 
| 
       36 
     | 
    
         
            -
                  super( 
     | 
| 
       37 
     | 
    
         
            -
                  self. 
     | 
| 
      
 36 
     | 
    
         
            +
                def initialize(type, message, server_error = nil)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  super(message)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  self.type = type
         
     | 
| 
      
 39 
     | 
    
         
            +
                  self.message = message 
         
     | 
| 
       38 
40 
     | 
    
         
             
                  self.server_error = server_error
         
     | 
| 
       39 
41 
     | 
    
         
             
                end
         
     | 
| 
       40 
42 
     | 
    
         
             
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
              AccessDenied = Class.new(APIError)
         
     | 
| 
      
 44 
     | 
    
         
            +
              ResourceNotFound = Class.new(APIError)
         
     | 
| 
       41 
45 
     | 
    
         
             
              InvalidRequest = Class.new(APIError)
         
     | 
| 
       42 
46 
     | 
    
         
             
              MessageRejected = Class.new(APIError)
         
     | 
| 
       43 
47 
     | 
    
         
             
              SendingQuotaExceeded = Class.new(APIError)
         
     | 
| 
       44 
48 
     | 
    
         
             
              ServiceUnavailable = Class.new(APIError)
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
               
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                raise ResourceNotFound.new if result.code.to_i == 404
         
     | 
| 
       49 
     | 
    
         
            -
                raise AccessDenied.new if result.code.to_i == 403
         
     | 
| 
       50 
     | 
    
         
            -
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
              BadGateway = Class.new(APIError)
         
     | 
| 
      
 50 
     | 
    
         
            +
              InternalError = Class.new(APIError)
         
     | 
| 
      
 51 
     | 
    
         
            +
              MailProviderError = Class.new(APIError)
         
     | 
| 
       51 
52 
     | 
    
         | 
| 
       52 
53 
     | 
    
         
             
              HTTP_CODE_TO_EXCEPTIONS = {
         
     | 
| 
       53 
54 
     | 
    
         
             
                400 => InvalidRequest,
         
     | 
| 
       54 
55 
     | 
    
         
             
                402 => MessageRejected,
         
     | 
| 
       55 
56 
     | 
    
         
             
                403 => AccessDenied,
         
     | 
| 
       56 
57 
     | 
    
         
             
                404 => ResourceNotFound,
         
     | 
| 
      
 58 
     | 
    
         
            +
                422 => MailProviderError,
         
     | 
| 
       57 
59 
     | 
    
         
             
                429 => SendingQuotaExceeded,
         
     | 
| 
       58 
     | 
    
         
            -
                 
     | 
| 
      
 60 
     | 
    
         
            +
                500 => InternalError,
         
     | 
| 
      
 61 
     | 
    
         
            +
                502 => BadGateway,
         
     | 
| 
      
 62 
     | 
    
         
            +
                503 => ServiceUnavailable,
         
     | 
| 
       59 
63 
     | 
    
         
             
              }.freeze
         
     | 
| 
       60 
64 
     | 
    
         | 
| 
       61 
65 
     | 
    
         
             
              def self.http_code_to_exception(http_code)
         
     | 
| 
         @@ -63,19 +67,27 @@ module Inbox 
     | 
|
| 
       63 
67 
     | 
    
         
             
              end
         
     | 
| 
       64 
68 
     | 
    
         | 
| 
       65 
69 
     | 
    
         
             
              def self.interpret_response(result, result_content, options = {})
         
     | 
| 
       66 
     | 
    
         
            -
                # Handle HTTP errors
         
     | 
| 
       67 
     | 
    
         
            -
                self.interpret_http_status(result)
         
     | 
| 
       68 
70 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                #  
     | 
| 
      
 71 
     | 
    
         
            +
                # We expected a certain kind of object, but the API didn't return anything
         
     | 
| 
       70 
72 
     | 
    
         
             
                raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                 
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                   
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                # If it's already parsed, or if we've received an actual raw payload on success, don't parse
         
     | 
| 
      
 75 
     | 
    
         
            +
                if options[:result_parsed] || (options[:raw_response] && result.code.to_i == 200)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  response = result_content
         
     | 
| 
      
 77 
     | 
    
         
            +
                else
         
     | 
| 
      
 78 
     | 
    
         
            +
                  response = JSON.parse(result_content)
         
     | 
| 
       75 
79 
     | 
    
         
             
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                if result.code.to_i != 200
         
     | 
| 
      
 82 
     | 
    
         
            +
                  exc = Nylas.http_code_to_exception(result.code.to_i)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  if response.is_a?(Hash)
         
     | 
| 
      
 84 
     | 
    
         
            +
                    raise exc.new(response['type'], response['message'], response.fetch('server_error', nil))
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
                
         
     | 
| 
       76 
88 
     | 
    
         
             
                raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
         
     | 
| 
       77 
     | 
    
         
            -
                raise UnexpectedResponse.new if options[:expected_class] && ! 
     | 
| 
       78 
     | 
    
         
            -
                 
     | 
| 
      
 89 
     | 
    
         
            +
                raise UnexpectedResponse.new if options[:expected_class] && !response.is_a?(options[:expected_class])
         
     | 
| 
      
 90 
     | 
    
         
            +
                response
         
     | 
| 
       79 
91 
     | 
    
         | 
| 
       80 
92 
     | 
    
         
             
              rescue JSON::ParserError => e
         
     | 
| 
       81 
93 
     | 
    
         
             
                # Handle parsing errors
         
     | 
| 
         @@ -91,13 +103,13 @@ module Inbox 
     | 
|
| 
       91 
103 
     | 
    
         | 
| 
       92 
104 
     | 
    
         
             
                def initialize(app_id, app_secret, access_token = nil, api_server = 'https://api.nylas.com',
         
     | 
| 
       93 
105 
     | 
    
         
             
                               service_domain = 'api.nylas.com')
         
     | 
| 
       94 
     | 
    
         
            -
                  raise "When overriding the  
     | 
| 
      
 106 
     | 
    
         
            +
                  raise "When overriding the Nylas API server address, you must include https://" unless api_server.include?('://')
         
     | 
| 
       95 
107 
     | 
    
         
             
                  @api_server = api_server
         
     | 
| 
       96 
108 
     | 
    
         
             
                  @access_token = access_token
         
     | 
| 
       97 
109 
     | 
    
         
             
                  @app_secret = app_secret
         
     | 
| 
       98 
110 
     | 
    
         
             
                  @app_id = app_id
         
     | 
| 
       99 
111 
     | 
    
         
             
                  @service_domain = service_domain
         
     | 
| 
       100 
     | 
    
         
            -
                  @version =  
     | 
| 
      
 112 
     | 
    
         
            +
                  @version = Nylas::VERSION
         
     | 
| 
       101 
113 
     | 
    
         | 
| 
       102 
114 
     | 
    
         
             
                  if ::RestClient.before_execution_procs.empty?
         
     | 
| 
       103 
115 
     | 
    
         
             
                    ::RestClient.add_before_execution_proc do |req, params|
         
     | 
| 
         @@ -148,7 +160,7 @@ module Inbox 
     | 
|
| 
       148 
160 
     | 
    
         
             
                  }
         
     | 
| 
       149 
161 
     | 
    
         | 
| 
       150 
162 
     | 
    
         
             
                  ::RestClient.post("https://#{@service_domain}/oauth/token", data) do |response, request, result|
         
     | 
| 
       151 
     | 
    
         
            -
                    json =  
     | 
| 
      
 163 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, :expected_class => Object)
         
     | 
| 
       152 
164 
     | 
    
         
             
                    return json['access_token']
         
     | 
| 
       153 
165 
     | 
    
         
             
                  end
         
     | 
| 
       154 
166 
     | 
    
         
             
                end
         
     | 
| 
         @@ -194,7 +206,7 @@ module Inbox 
     | 
|
| 
       194 
206 
     | 
    
         
             
                  path = self.url_for_path("/account")
         
     | 
| 
       195 
207 
     | 
    
         | 
| 
       196 
208 
     | 
    
         
             
                  RestClient.get(path, {}) do |response,request,result|
         
     | 
| 
       197 
     | 
    
         
            -
                    json =  
     | 
| 
      
 209 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, {:expected_class => Object})
         
     | 
| 
       198 
210 
     | 
    
         
             
                    model = APIAccount.new(self)
         
     | 
| 
       199 
211 
     | 
    
         
             
                    model.inflate(json)
         
     | 
| 
       200 
212 
     | 
    
         
             
                    model
         
     | 
| 
         @@ -220,7 +232,7 @@ module Inbox 
     | 
|
| 
       220 
232 
     | 
    
         
             
                  cursor = nil
         
     | 
| 
       221 
233 
     | 
    
         | 
| 
       222 
234 
     | 
    
         
             
                  RestClient.post(path, :content_type => :json) do |response,request,result|
         
     | 
| 
       223 
     | 
    
         
            -
                    json =  
     | 
| 
      
 235 
     | 
    
         
            +
                    json = Nylas.interpret_response(result, response, {:expected_class => Object})
         
     | 
| 
       224 
236 
     | 
    
         
             
                    cursor = json["cursor"]
         
     | 
| 
       225 
237 
     | 
    
         
             
                  end
         
     | 
| 
       226 
238 
     | 
    
         | 
| 
         @@ -228,23 +240,23 @@ module Inbox 
     | 
|
| 
       228 
240 
     | 
    
         
             
                end
         
     | 
| 
       229 
241 
     | 
    
         | 
| 
       230 
242 
     | 
    
         
             
                OBJECTS_TABLE = {
         
     | 
| 
       231 
     | 
    
         
            -
                  "account" =>  
     | 
| 
       232 
     | 
    
         
            -
                  "calendar" =>  
     | 
| 
       233 
     | 
    
         
            -
                  "draft" =>  
     | 
| 
       234 
     | 
    
         
            -
                  "thread" =>  
     | 
| 
       235 
     | 
    
         
            -
                  "contact" =>  
     | 
| 
       236 
     | 
    
         
            -
                  "event" =>  
     | 
| 
       237 
     | 
    
         
            -
                  "file" =>  
     | 
| 
       238 
     | 
    
         
            -
                  "message" =>  
     | 
| 
       239 
     | 
    
         
            -
                  "folder" =>  
     | 
| 
       240 
     | 
    
         
            -
                  "label" =>  
     | 
| 
      
 243 
     | 
    
         
            +
                  "account" => Nylas::Account,
         
     | 
| 
      
 244 
     | 
    
         
            +
                  "calendar" => Nylas::Calendar,
         
     | 
| 
      
 245 
     | 
    
         
            +
                  "draft" => Nylas::Draft,
         
     | 
| 
      
 246 
     | 
    
         
            +
                  "thread" => Nylas::Thread,
         
     | 
| 
      
 247 
     | 
    
         
            +
                  "contact" => Nylas::Contact,
         
     | 
| 
      
 248 
     | 
    
         
            +
                  "event" => Nylas::Event,
         
     | 
| 
      
 249 
     | 
    
         
            +
                  "file" => Nylas::File,
         
     | 
| 
      
 250 
     | 
    
         
            +
                  "message" => Nylas::Message,
         
     | 
| 
      
 251 
     | 
    
         
            +
                  "folder" => Nylas::Folder,
         
     | 
| 
      
 252 
     | 
    
         
            +
                  "label" => Nylas::Label,
         
     | 
| 
       241 
253 
     | 
    
         
             
                }
         
     | 
| 
       242 
254 
     | 
    
         | 
| 
       243 
255 
     | 
    
         
             
                # It's possible to ask the API to expand objects.
         
     | 
| 
       244 
256 
     | 
    
         
             
                # In this case, we do the right thing and return
         
     | 
| 
       245 
257 
     | 
    
         
             
                # an expanded object.
         
     | 
| 
       246 
258 
     | 
    
         
             
                EXPANDED_OBJECTS_TABLE = {
         
     | 
| 
       247 
     | 
    
         
            -
                  "message" =>  
     | 
| 
      
 259 
     | 
    
         
            +
                  "message" => Nylas::ExpandedMessage,
         
     | 
| 
       248 
260 
     | 
    
         
             
                }
         
     | 
| 
       249 
261 
     | 
    
         | 
| 
       250 
262 
     | 
    
         
             
                def _build_exclude_types(exclude_types)
         
     | 
| 
         @@ -280,7 +292,7 @@ module Inbox 
     | 
|
| 
       280 
292 
     | 
    
         
             
                    json = nil
         
     | 
| 
       281 
293 
     | 
    
         | 
| 
       282 
294 
     | 
    
         
             
                    RestClient.get(path) do |response,request,result|
         
     | 
| 
       283 
     | 
    
         
            -
                      json =  
     | 
| 
      
 295 
     | 
    
         
            +
                      json = Nylas.interpret_response(result, response, {:expected_class => Object})
         
     | 
| 
       284 
296 
     | 
    
         
             
                    end
         
     | 
| 
       285 
297 
     | 
    
         | 
| 
       286 
298 
     | 
    
         
             
                    start_cursor = json["cursor_start"]
         
     | 
| 
         @@ -332,7 +344,7 @@ module Inbox 
     | 
|
| 
       332 
344 
     | 
    
         | 
| 
       333 
345 
     | 
    
         
             
                  parser = Yajl::Parser.new(:symbolize_keys => false)
         
     | 
| 
       334 
346 
     | 
    
         
             
                  parser.on_parse_complete = proc do |data|
         
     | 
| 
       335 
     | 
    
         
            -
                    delta =  
     | 
| 
      
 347 
     | 
    
         
            +
                    delta = Nylas.interpret_response(OpenStruct.new(:code => '200'), data, {:expected_class => Object, :result_parsed => true})
         
     | 
| 
       336 
348 
     | 
    
         | 
| 
       337 
349 
     | 
    
         
             
                    if not OBJECTS_TABLE.has_key?(delta['object'])
         
     | 
| 
       338 
350 
     | 
    
         
             
                      next
         
     | 
| 
         @@ -356,10 +368,10 @@ module Inbox 
     | 
|
| 
       356 
368 
     | 
    
         
             
                        yield delta["event"], obj
         
     | 
| 
       357 
369 
     | 
    
         
             
                    end
         
     | 
| 
       358 
370 
     | 
    
         
             
                  end
         
     | 
| 
       359 
     | 
    
         
            -
             
     | 
| 
      
 371 
     | 
    
         
            +
                  
         
     | 
| 
       360 
372 
     | 
    
         
             
                  http = EventMachine::HttpRequest.new(path, :connect_timeout => 0, :inactivity_timeout => timeout).get(:keepalive => true)
         
     | 
| 
       361 
373 
     | 
    
         | 
| 
       362 
     | 
    
         
            -
                  # set a callback on the HTTP stream that parses incoming chunks as they come in
         
     | 
| 
      
 374 
     | 
    
         
            +
                  # set a callback on the HTTP stream that parses incoming chunks as they come in		
         
     | 
| 
       363 
375 
     | 
    
         
             
                  http.stream do |chunk|
         
     | 
| 
       364 
376 
     | 
    
         
             
                    parser << chunk
         
     | 
| 
       365 
377 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -367,9 +379,7 @@ module Inbox 
     | 
|
| 
       367 
379 
     | 
    
         
             
                  http.errback do
         
     | 
| 
       368 
380 
     | 
    
         
             
                    raise UnexpectedResponse.new http.error
         
     | 
| 
       369 
381 
     | 
    
         
             
                  end
         
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
      
 382 
     | 
    
         
            +
              
         
     | 
| 
       371 
383 
     | 
    
         
             
                end
         
     | 
| 
       372 
384 
     | 
    
         
             
              end
         
     | 
| 
       373 
385 
     | 
    
         
             
            end
         
     | 
| 
       374 
     | 
    
         
            -
             
     | 
| 
       375 
     | 
    
         
            -
            Nylas = Inbox.clone
         
     | 
    
        data/lib/parameters.rb
    CHANGED