sfdc 3.0.0 → 3.0.1
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/CHANGELOG.md +96 -0
 - data/Gemfile +11 -0
 - data/Guardfile +11 -0
 - data/LICENSE +22 -0
 - data/README.md +88 -98
 - data/Rakefile +10 -0
 - data/lib/sfdc.rb +1 -0
 - data/lib/sfdc/abstract_client.rb +1 -1
 - data/lib/sfdc/attachment.rb +0 -2
 - data/lib/sfdc/concerns/api.rb +1 -2
 - data/lib/sfdc/concerns/authentication.rb +1 -2
 - data/lib/sfdc/concerns/base.rb +5 -7
 - data/lib/sfdc/concerns/caching.rb +1 -3
 - data/lib/sfdc/concerns/canvas.rb +0 -2
 - data/lib/sfdc/concerns/connection.rb +2 -3
 - data/lib/sfdc/concerns/picklists.rb +1 -4
 - data/lib/sfdc/concerns/streaming.rb +2 -2
 - data/lib/sfdc/concerns/verbs.rb +0 -2
 - data/lib/sfdc/config.rb +1 -0
 - data/lib/sfdc/middleware/authentication.rb +4 -2
 - data/lib/sfdc/middleware/authentication/password.rb +2 -5
 - data/lib/sfdc/middleware/authorization.rb +1 -5
 - data/lib/sfdc/middleware/caching.rb +0 -2
 - data/lib/sfdc/middleware/instance_url.rb +0 -4
 - data/lib/sfdc/middleware/mashify.rb +1 -3
 - data/lib/sfdc/middleware/multipart.rb +6 -4
 - data/lib/sfdc/signed_request.rb +1 -1
 - data/lib/sfdc/tooling/client.rb +4 -6
 - data/lib/sfdc/version.rb +2 -2
 - data/sfdc.gemspec +27 -0
 - data/spec/fixtures/auth_error_response.json +4 -0
 - data/spec/fixtures/auth_success_response.json +7 -0
 - data/spec/fixtures/blob.jpg +0 -0
 - data/spec/fixtures/expired_session_response.json +6 -0
 - data/spec/fixtures/reauth_success_response.json +7 -0
 - data/spec/fixtures/refresh_error_response.json +4 -0
 - data/spec/fixtures/refresh_success_response.json +7 -0
 - data/spec/fixtures/services_data_success_response.json +12 -0
 - data/spec/fixtures/sobject/create_success_response.json +5 -0
 - data/spec/fixtures/sobject/delete_error_response.json +1 -0
 - data/spec/fixtures/sobject/describe_sobjects_success_response.json +31 -0
 - data/spec/fixtures/sobject/list_sobjects_success_response.json +31 -0
 - data/spec/fixtures/sobject/org_query_response.json +11 -0
 - data/spec/fixtures/sobject/query_aggregate_success_response.json +23 -0
 - data/spec/fixtures/sobject/query_empty_response.json +5 -0
 - data/spec/fixtures/sobject/query_error_response.json +6 -0
 - data/spec/fixtures/sobject/query_paginated_first_page_response.json +14 -0
 - data/spec/fixtures/sobject/query_paginated_last_page_response.json +13 -0
 - data/spec/fixtures/sobject/query_success_response.json +38 -0
 - data/spec/fixtures/sobject/recent_success_response.json +18 -0
 - data/spec/fixtures/sobject/search_error_response.json +6 -0
 - data/spec/fixtures/sobject/search_success_response.json +16 -0
 - data/spec/fixtures/sobject/sobject_describe_error_response.json +6 -0
 - data/spec/fixtures/sobject/sobject_describe_success_response.json +1429 -0
 - data/spec/fixtures/sobject/sobject_find_error_response.json +6 -0
 - data/spec/fixtures/sobject/sobject_find_success_response.json +29 -0
 - data/spec/fixtures/sobject/upsert_created_success_response.json +5 -0
 - data/spec/fixtures/sobject/upsert_error_response.json +6 -0
 - data/spec/fixtures/sobject/upsert_multiple_error_response.json +4 -0
 - data/spec/fixtures/sobject/upsert_updated_success_response.json +0 -0
 - data/spec/fixtures/sobject/write_error_response.json +6 -0
 - data/spec/integration/abstract_client_spec.rb +306 -0
 - data/spec/integration/data/client_spec.rb +90 -0
 - data/spec/spec_helper.rb +20 -0
 - data/spec/support/client_integration.rb +45 -0
 - data/spec/support/concerns.rb +18 -0
 - data/spec/support/event_machine.rb +14 -0
 - data/spec/support/fixture_helpers.rb +45 -0
 - data/spec/support/matchers.rb +11 -0
 - data/spec/support/middleware.rb +76 -0
 - data/spec/support/mock_cache.rb +13 -0
 - data/spec/unit/abstract_client_spec.rb +11 -0
 - data/spec/unit/attachment_spec.rb +15 -0
 - data/spec/unit/collection_spec.rb +52 -0
 - data/spec/unit/concerns/api_spec.rb +244 -0
 - data/spec/unit/concerns/authentication_spec.rb +98 -0
 - data/spec/unit/concerns/base_spec.rb +42 -0
 - data/spec/unit/concerns/caching_spec.rb +29 -0
 - data/spec/unit/concerns/canvas_spec.rb +30 -0
 - data/spec/unit/concerns/connection_spec.rb +22 -0
 - data/spec/unit/config_spec.rb +99 -0
 - data/spec/unit/data/client_spec.rb +10 -0
 - data/spec/unit/mash_spec.rb +36 -0
 - data/spec/unit/middleware/authentication/password_spec.rb +31 -0
 - data/spec/unit/middleware/authentication/token_spec.rb +24 -0
 - data/spec/unit/middleware/authentication_spec.rb +67 -0
 - data/spec/unit/middleware/authorization_spec.rb +11 -0
 - data/spec/unit/middleware/gzip_spec.rb +66 -0
 - data/spec/unit/middleware/instance_url_spec.rb +24 -0
 - data/spec/unit/middleware/logger_spec.rb +19 -0
 - data/spec/unit/middleware/mashify_spec.rb +11 -0
 - data/spec/unit/middleware/raise_error_spec.rb +32 -0
 - data/spec/unit/signed_request_spec.rb +24 -0
 - data/spec/unit/sobject_spec.rb +86 -0
 - data/spec/unit/tooling/client_spec.rb +7 -0
 - metadata +225 -65
 
    
        data/Rakefile
    ADDED
    
    
    
        data/lib/sfdc.rb
    CHANGED
    
    
    
        data/lib/sfdc/abstract_client.rb
    CHANGED
    
    
    
        data/lib/sfdc/attachment.rb
    CHANGED
    
    | 
         @@ -1,6 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Attachment < Sfdc::SObject
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
3 
     | 
    
         
             
                # Public: Returns the body of the attachment.
         
     | 
| 
       5 
4 
     | 
    
         
             
                #
         
     | 
| 
       6 
5 
     | 
    
         
             
                # Examples
         
     | 
| 
         @@ -18,6 +17,5 @@ module Sfdc 
     | 
|
| 
       18 
17 
     | 
    
         
             
                  return true if self.Body?
         
     | 
| 
       19 
18 
     | 
    
         
             
                  raise 'You need to query the Body for the record first.'
         
     | 
| 
       20 
19 
     | 
    
         
             
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
20 
     | 
    
         
             
              end
         
     | 
| 
       23 
21 
     | 
    
         
             
            end
         
     | 
    
        data/lib/sfdc/concerns/api.rb
    CHANGED
    
    | 
         @@ -300,7 +300,7 @@ module Sfdc 
     | 
|
| 
       300 
300 
     | 
    
         
             
                    api_get(field ? "sobjects/#{sobject}/#{field}/#{id}" : "sobjects/#{sobject}/#{id}").body
         
     | 
| 
       301 
301 
     | 
    
         
             
                  end
         
     | 
| 
       302 
302 
     | 
    
         | 
| 
       303 
     | 
    
         
            -
             
     | 
| 
      
 303 
     | 
    
         
            +
                  private
         
     | 
| 
       304 
304 
     | 
    
         | 
| 
       305 
305 
     | 
    
         
             
                  # Internal: Returns a path to an api endpoint
         
     | 
| 
       306 
306 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -316,7 +316,6 @@ module Sfdc 
     | 
|
| 
       316 
316 
     | 
    
         
             
                  def exceptions
         
     | 
| 
       317 
317 
     | 
    
         
             
                    [Faraday::Error::ClientError]
         
     | 
| 
       318 
318 
     | 
    
         
             
                  end
         
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
       320 
319 
     | 
    
         
             
                end
         
     | 
| 
       321 
320 
     | 
    
         
             
              end
         
     | 
| 
       322 
321 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,7 +2,7 @@ module Sfdc 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Authentication
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                  # Public:  
     | 
| 
      
 5 
     | 
    
         
            +
                  # Public: Sfdc an authentication
         
     | 
| 
       6 
6 
     | 
    
         
             
                  def authenticate!
         
     | 
| 
       7 
7 
     | 
    
         
             
                    raise AuthenticationError, 'No authentication middleware present' unless authentication_middleware
         
     | 
| 
       8 
8 
     | 
    
         
             
                    middleware = authentication_middleware.new nil, self, options
         
     | 
| 
         @@ -34,7 +34,6 @@ module Sfdc 
     | 
|
| 
       34 
34 
     | 
    
         
             
                      options[:client_id] &&
         
     | 
| 
       35 
35 
     | 
    
         
             
                      options[:client_secret]
         
     | 
| 
       36 
36 
     | 
    
         
             
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
37 
     | 
    
         
             
                end
         
     | 
| 
       39 
38 
     | 
    
         
             
              end
         
     | 
| 
       40 
39 
     | 
    
         
             
            end
         
     | 
    
        data/lib/sfdc/concerns/base.rb
    CHANGED
    
    | 
         @@ -1,12 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Base
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
                  attr_reader :options
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
                  # Public: Creates a new client instance
         
     | 
| 
       8 
7 
     | 
    
         
             
                  #
         
     | 
| 
       9 
     | 
    
         
            -
                  #  
     | 
| 
      
 8 
     | 
    
         
            +
                  # options - A hash of options to be passed in (default: {}).
         
     | 
| 
       10 
9 
     | 
    
         
             
                  #        :username               - The String username to use (required for password authentication).
         
     | 
| 
       11 
10 
     | 
    
         
             
                  #        :password               - The String password to use (required for password authentication).
         
     | 
| 
       12 
11 
     | 
    
         
             
                  #        :security_token         - The String security token to use (required for password authentication).
         
     | 
| 
         @@ -40,10 +39,10 @@ module Sfdc 
     | 
|
| 
       40 
39 
     | 
    
         
             
                  #
         
     | 
| 
       41 
40 
     | 
    
         
             
                  #        :authentication_callback
         
     | 
| 
       42 
41 
     | 
    
         
             
                  #                                - A Proc that is called with the response body after a successful authentication.
         
     | 
| 
       43 
     | 
    
         
            -
                  def initialize( 
     | 
| 
       44 
     | 
    
         
            -
                    raise ArgumentError, 'Please specify a hash of options' unless opts.is_a?(Hash)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  def initialize(options = {})        
         
     | 
| 
       45 
43 
     | 
    
         
             
                    @options = Hash[Sfdc.configuration.options.map { |option| [option, Sfdc.configuration.send(option)] }]
         
     | 
| 
       46 
     | 
    
         
            -
                    @options.merge! 
     | 
| 
      
 44 
     | 
    
         
            +
                    @options.merge!(options)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       47 
46 
     | 
    
         
             
                    yield builder if block_given?
         
     | 
| 
       48 
47 
     | 
    
         
             
                  end
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
         @@ -55,7 +54,6 @@ module Sfdc 
     | 
|
| 
       55 
54 
     | 
    
         
             
                  def inspect
         
     | 
| 
       56 
55 
     | 
    
         
             
                    "#<#{self.class} @options=#{@options.inspect}>"
         
     | 
| 
       57 
56 
     | 
    
         
             
                  end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
57 
     | 
    
         
             
                end
         
     | 
| 
       60 
58 
     | 
    
         
             
              end
         
     | 
| 
       61 
     | 
    
         
            -
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Caching
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
                  # Public: Runs the block with caching disabled.
         
     | 
| 
       6 
5 
     | 
    
         
             
                  #
         
     | 
| 
       7 
6 
     | 
    
         
             
                  # block - A query/describe/etc.
         
     | 
| 
         @@ -14,13 +13,12 @@ module Sfdc 
     | 
|
| 
       14 
13 
     | 
    
         
             
                    options.delete(:use_cache)
         
     | 
| 
       15 
14 
     | 
    
         
             
                  end
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                  private
         
     | 
| 
       18 
17 
     | 
    
         | 
| 
       19 
18 
     | 
    
         
             
                  # Internal: Cache to use for the caching middleware
         
     | 
| 
       20 
19 
     | 
    
         
             
                  def cache
         
     | 
| 
       21 
20 
     | 
    
         
             
                    options[:cache]
         
     | 
| 
       22 
21 
     | 
    
         
             
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
22 
     | 
    
         
             
                end
         
     | 
| 
       25 
23 
     | 
    
         
             
              end
         
     | 
| 
       26 
24 
     | 
    
         
             
            end
         
     | 
    
        data/lib/sfdc/concerns/canvas.rb
    CHANGED
    
    
| 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Connection
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
                  # Public: The Faraday::Builder instance used for the middleware stack. This
         
     | 
| 
       6 
5 
     | 
    
         
             
                  # can be used to insert an custom middleware.
         
     | 
| 
       7 
6 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -14,9 +13,10 @@ module Sfdc 
     | 
|
| 
       14 
13 
     | 
    
         
             
                  def middleware
         
     | 
| 
       15 
14 
     | 
    
         
             
                    connection.builder
         
     | 
| 
       16 
15 
     | 
    
         
             
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       17 
17 
     | 
    
         
             
                  alias_method :builder, :middleware
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
                  private
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                  # Internal: Internal faraday connection where all requests go through
         
     | 
| 
       22 
22 
     | 
    
         
             
                  def connection
         
     | 
| 
         @@ -68,7 +68,6 @@ module Sfdc 
     | 
|
| 
       68 
68 
     | 
    
         
             
                  def mashify?
         
     | 
| 
       69 
69 
     | 
    
         
             
                    middleware.handlers.index(Sfdc::Middleware::Mashify)
         
     | 
| 
       70 
70 
     | 
    
         
             
                  end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
71 
     | 
    
         
             
                end
         
     | 
| 
       73 
72 
     | 
    
         
             
              end
         
     | 
| 
       74 
73 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Picklists
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
                  # Public: Get the available picklist values for a picklist or multipicklist field.
         
     | 
| 
       6 
5 
     | 
    
         
             
                  #
         
     | 
| 
       7 
6 
     | 
    
         
             
                  # sobject - The String name of the sobject.
         
     | 
| 
         @@ -27,7 +26,7 @@ module Sfdc 
     | 
|
| 
       27 
26 
     | 
    
         
             
                    PicklistValues.new(describe(sobject)['fields'], field, options)
         
     | 
| 
       28 
27 
     | 
    
         
             
                  end
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                  private
         
     | 
| 
       31 
30 
     | 
    
         | 
| 
       32 
31 
     | 
    
         
             
                  class PicklistValues < Array
         
     | 
| 
       33 
32 
     | 
    
         | 
| 
         @@ -82,9 +81,7 @@ module Sfdc 
     | 
|
| 
       82 
81 
     | 
    
         
             
                      valid_for = picklist_entry['validFor'].ljust(16, 'A').unpack('m').first.unpack('q*')
         
     | 
| 
       83 
82 
     | 
    
         
             
                      (valid_for[index >> 3] & (0x80 >> index % 8)) != 0
         
     | 
| 
       84 
83 
     | 
    
         
             
                    end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
84 
     | 
    
         
             
                  end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
85 
     | 
    
         
             
                end
         
     | 
| 
       89 
86 
     | 
    
         
             
              end
         
     | 
| 
       90 
87 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Concerns
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Streaming
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
4 
     | 
    
         
             
                  # Public: Subscribe to a PushTopic
         
     | 
| 
       6 
5 
     | 
    
         
             
                  #
         
     | 
| 
       7 
6 
     | 
    
         
             
                  # channels - The name of the PushTopic channel(s) to subscribe to.
         
     | 
| 
         @@ -15,17 +14,18 @@ module Sfdc 
     | 
|
| 
       15 
14 
     | 
    
         
             
                  # Public: Faye client to use for subscribing to PushTopics
         
     | 
| 
       16 
15 
     | 
    
         
             
                  def faye
         
     | 
| 
       17 
16 
     | 
    
         
             
                    raise 'Instance URL missing. Call .authenticate! first.' unless options[:instance_url]
         
     | 
| 
      
 17 
     | 
    
         
            +
                    
         
     | 
| 
       18 
18 
     | 
    
         
             
                    @faye ||= Faye::Client.new("#{options[:instance_url]}/cometd/#{options[:api_version]}").tap do |client|
         
     | 
| 
       19 
19 
     | 
    
         
             
                      client.bind 'transport:down' do
         
     | 
| 
       20 
20 
     | 
    
         
             
                        Sfdc.log "[COMETD DOWN]"
         
     | 
| 
       21 
21 
     | 
    
         
             
                        client.set_header 'Authorization', "OAuth #{authenticate!.access_token}"
         
     | 
| 
       22 
22 
     | 
    
         
             
                      end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       23 
24 
     | 
    
         
             
                      client.bind 'transport:up' do
         
     | 
| 
       24 
25 
     | 
    
         
             
                        Sfdc.log "[COMETD UP]"
         
     | 
| 
       25 
26 
     | 
    
         
             
                      end
         
     | 
| 
       26 
27 
     | 
    
         
             
                    end
         
     | 
| 
       27 
28 
     | 
    
         
             
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         
             
              end
         
     | 
| 
       31 
31 
     | 
    
         
             
            end
         
     | 
    
        data/lib/sfdc/concerns/verbs.rb
    CHANGED
    
    
    
        data/lib/sfdc/config.rb
    CHANGED
    
    
| 
         @@ -62,10 +62,12 @@ module Sfdc 
     | 
|
| 
       62 
62 
     | 
    
         
             
                  end
         
     | 
| 
       63 
63 
     | 
    
         
             
                end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
                private
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       66 
67 
     | 
    
         
             
                def faraday_options
         
     | 
| 
       67 
68 
     | 
    
         
             
                  { :url   => "https://#{@options[:host]}",
         
     | 
| 
       68 
     | 
    
         
            -
                    :proxy => @options[:proxy_uri]  
     | 
| 
      
 69 
     | 
    
         
            +
                    :proxy => @options[:proxy_uri] 
         
     | 
| 
      
 70 
     | 
    
         
            +
                  }.reject { |k, v| v.nil? }
         
     | 
| 
       69 
71 
     | 
    
         
             
                end
         
     | 
| 
       70 
72 
     | 
    
         
             
              end
         
     | 
| 
       71 
73 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,20 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
2 
     | 
    
         
             
              # Authentication middleware used if username and password flow is used
         
     | 
| 
       4 
3 
     | 
    
         
             
              class Middleware::Authentication::Password < Sfdc::Middleware::Authentication
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
                def params
         
     | 
| 
       7 
5 
     | 
    
         
             
                  { :grant_type    => 'password',
         
     | 
| 
       8 
6 
     | 
    
         
             
                    :client_id     => @options[:client_id],
         
     | 
| 
       9 
7 
     | 
    
         
             
                    :client_secret => @options[:client_secret],
         
     | 
| 
       10 
8 
     | 
    
         
             
                    :username      => @options[:username],
         
     | 
| 
       11 
     | 
    
         
            -
                    :password      => password  
     | 
| 
      
 9 
     | 
    
         
            +
                    :password      => password 
         
     | 
| 
      
 10 
     | 
    
         
            +
                  }
         
     | 
| 
       12 
11 
     | 
    
         
             
                end
         
     | 
| 
       13 
12 
     | 
    
         | 
| 
       14 
13 
     | 
    
         
             
                def password
         
     | 
| 
       15 
14 
     | 
    
         
             
                  "#{@options[:password]}#{@options[:security_token]}"
         
     | 
| 
       16 
15 
     | 
    
         
             
                end
         
     | 
| 
       17 
     | 
    
         
            -
              
         
     | 
| 
       18 
16 
     | 
    
         
             
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
17 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,7 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              # Piece of middleware that simply injects the OAuth token into the request
         
     | 
| 
       4 
     | 
    
         
            -
              # headers.
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Middleware that simply injects the OAuth token into the request headers.
         
     | 
| 
       5 
3 
     | 
    
         
             
              class Middleware::Authorization < Sfdc::Middleware
         
     | 
| 
       6 
4 
     | 
    
         
             
                AUTH_HEADER = 'Authorization'.freeze
         
     | 
| 
       7 
5 
     | 
    
         | 
| 
         @@ -13,7 +11,5 @@ module Sfdc 
     | 
|
| 
       13 
11 
     | 
    
         
             
                def token
         
     | 
| 
       14 
12 
     | 
    
         
             
                  @options[:oauth_token]
         
     | 
| 
       15 
13 
     | 
    
         
             
                end
         
     | 
| 
       16 
     | 
    
         
            -
              
         
     | 
| 
       17 
14 
     | 
    
         
             
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
15 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Middleware::Caching < FaradayMiddleware::Caching
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
3 
     | 
    
         
             
                def call(env)
         
     | 
| 
       5 
4 
     | 
    
         
             
                  expire(cache_key(env)) unless use_cache?
         
     | 
| 
       6 
5 
     | 
    
         
             
                  super
         
     | 
| 
         @@ -19,6 +18,5 @@ module Sfdc 
     | 
|
| 
       19 
18 
     | 
    
         
             
                def use_cache?
         
     | 
| 
       20 
19 
     | 
    
         
             
                  !@options.has_key?(:use_cache) || @options[:use_cache]
         
     | 
| 
       21 
20 
     | 
    
         
             
                end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
21 
     | 
    
         
             
              end
         
     | 
| 
       24 
22 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,8 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
2 
     | 
    
         
             
              # Middleware which asserts that the instance_url is always set
         
     | 
| 
       4 
3 
     | 
    
         
             
              class Middleware::InstanceURL < Sfdc::Middleware
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
4 
     | 
    
         
             
                def call(env)
         
     | 
| 
       7 
5 
     | 
    
         
             
                  # If the connection url_prefix isn't set, we must not be authenticated.
         
     | 
| 
       8 
6 
     | 
    
         
             
                  raise Sfdc::UnauthorizedError, 'Connection prefix not set' unless url_prefix_set?
         
     | 
| 
         @@ -12,7 +10,5 @@ module Sfdc 
     | 
|
| 
       12 
10 
     | 
    
         
             
                def url_prefix_set?
         
     | 
| 
       13 
11 
     | 
    
         
             
                  !!(connection.url_prefix && connection.url_prefix.host)
         
     | 
| 
       14 
12 
     | 
    
         
             
                end
         
     | 
| 
       15 
     | 
    
         
            -
              
         
     | 
| 
       16 
13 
     | 
    
         
             
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
14 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,7 +2,6 @@ module Sfdc 
     | 
|
| 
       2 
2 
     | 
    
         
             
              # Middleware the converts sobject records from JSON into Sfdc::SObject objects
         
     | 
| 
       3 
3 
     | 
    
         
             
              # and collections of records into Sfdc::Collection objects.
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Middleware::Mashify < Sfdc::Middleware
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
5 
     | 
    
         
             
                def call(env)
         
     | 
| 
       7 
6 
     | 
    
         
             
                  @env = env
         
     | 
| 
       8 
7 
     | 
    
         
             
                  response = @app.call(env)
         
     | 
| 
         @@ -12,7 +11,6 @@ module Sfdc 
     | 
|
| 
       12 
11 
     | 
    
         | 
| 
       13 
12 
     | 
    
         
             
                def body
         
     | 
| 
       14 
13 
     | 
    
         
             
                  @env[:body]
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              
         
     | 
| 
      
 14 
     | 
    
         
            +
                end  
         
     | 
| 
       17 
15 
     | 
    
         
             
              end
         
     | 
| 
       18 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -10,7 +10,8 @@ module Sfdc 
     | 
|
| 
       10 
10 
     | 
    
         
             
                    env[:request_headers][CONTENT_TYPE] += ";boundary=#{env[:request][:boundary]}"
         
     | 
| 
       11 
11 
     | 
    
         
             
                    env[:body] = create_multipart(env, params)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  @app.call(env)
         
     | 
| 
       14 
15 
     | 
    
         
             
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         
             
                def process_request?(env)
         
     | 
| 
         @@ -28,17 +29,17 @@ module Sfdc 
     | 
|
| 
       28 
29 
     | 
    
         
             
                      return true if (val.respond_to?(:content_type) || has_multipart?(val))
         
     | 
| 
       29 
30 
     | 
    
         
             
                    end
         
     | 
| 
       30 
31 
     | 
    
         
             
                  end
         
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
      
 32 
     | 
    
         
            +
                  
         
     | 
| 
      
 33 
     | 
    
         
            +
                  return false
         
     | 
| 
       32 
34 
     | 
    
         
             
                end
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
       34 
36 
     | 
    
         
             
                def create_multipart(env, params)
         
     | 
| 
       35 
37 
     | 
    
         
             
                  boundary = env[:request][:boundary]
         
     | 
| 
      
 38 
     | 
    
         
            +
                  
         
     | 
| 
       36 
39 
     | 
    
         
             
                  parts = []
         
     | 
| 
       37 
40 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                  # Fields
         
     | 
| 
       39 
41 
     | 
    
         
             
                  parts << Faraday::Parts::Part.new(boundary, 'entity_content', params.reject { |k,v| v.respond_to? :content_type }.to_json)
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                  # Files
         
     | 
| 
       42 
43 
     | 
    
         
             
                  params.each do |k,v|
         
     | 
| 
       43 
44 
     | 
    
         
             
                    parts << Faraday::Parts::Part.new(boundary, k.to_s, v) if v.respond_to? :content_type
         
     | 
| 
       44 
45 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -47,6 +48,7 @@ module Sfdc 
     | 
|
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
                  body = Faraday::CompositeReadIO.new(parts)
         
     | 
| 
       49 
50 
     | 
    
         
             
                  env[:request_headers]['Content-Length'] = body.length.to_s
         
     | 
| 
      
 51 
     | 
    
         
            +
                  
         
     | 
| 
       50 
52 
     | 
    
         
             
                  return body
         
     | 
| 
       51 
53 
     | 
    
         
             
                end
         
     | 
| 
       52 
54 
     | 
    
         
             
              end
         
     | 
    
        data/lib/sfdc/signed_request.rb
    CHANGED
    
    
    
        data/lib/sfdc/tooling/client.rb
    CHANGED
    
    
    
        data/lib/sfdc/version.rb
    CHANGED
    
    | 
         @@ -1,3 +1,3 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Sfdc
         
     | 
| 
       2 
     | 
    
         
            -
              VERSION = '3.0. 
     | 
| 
       3 
     | 
    
         
            -
            end
         
     | 
| 
      
 2 
     | 
    
         
            +
              VERSION = '3.0.1'
         
     | 
| 
      
 3 
     | 
    
         
            +
            end
         
     | 
    
        data/sfdc.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.expand_path('../lib/sfdc/version', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.name          = "sfdc"
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.version       = Sfdc::VERSION
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.authors       = ["Bruce Yue"]
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.email         = ["bruce.yue@outlook.com"]
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.description   = "A lightweight ruby client for the Salesforce REST api."
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.summary       = "A lightweight ruby client for the Salesforce REST api."
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.homepage      = "http://www.sharealltech.com"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              s.files         = Dir["./**/*"].reject { |file| file =~ /\.\/(bin|example|log|pkg|script|spec|test|vendor)/ }
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              s.add_dependency 'faraday', '~> 0.8.4'
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.add_dependency 'faraday_middleware', '>= 0.8.8'
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.add_dependency 'json', ['>= 1.7.5', '< 1.9.0']
         
     | 
| 
      
 21 
     | 
    
         
            +
              s.add_dependency 'hashie', ['>= 1.2.0', '< 2.1']
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_development_dependency 'rspec', '~> 2.14.0'
         
     | 
| 
      
 24 
     | 
    
         
            +
              s.add_development_dependency 'webmock', '~> 1.13.0'
         
     | 
| 
      
 25 
     | 
    
         
            +
              s.add_development_dependency 'simplecov', '~> 0.7.1'
         
     | 
| 
      
 26 
     | 
    
         
            +
              s.add_development_dependency 'faye' unless RUBY_PLATFORM == 'java'
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     |