databasedotcom 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -85,6 +85,11 @@ Then, when you create your client like:
85
85
 
86
86
  it will use the configuration information that you set with <tt>heroku config:add</tt>.
87
87
 
88
+ === Connect to a SalesForce sandbox account
89
+ Specify the <tt>:host</tt> option when creating your Client, e.g,
90
+
91
+ Databasedotcom::Client.new :host => "test.salesforce.com", ...
92
+
88
93
  == Authentication
89
94
  The first thing you need to do with the new Client is to authenticate with Salesforce. You can do this in one of several ways:
90
95
 
@@ -59,7 +59,7 @@ module Databasedotcom
59
59
  # ca_file
60
60
  # verify_mode
61
61
  # If the environment variables DATABASEDOTCOM_CLIENT_ID, DATABASEDOTCOM_CLIENT_SECRET, DATABASEDOTCOM_HOST,
62
- # DATABASEDOTCOM_DEBUGGING, DATABASEDOTCOM_VERSION, DATABASEDOTCOM_SOBJECT_MODULE, DATABASEDOTCOM_CA_FILE, and/or
62
+ # DATABASEDOTCOM_DEBUGGING, DATABASEDOTCOM_VERSION, DATABASEDOTCOM_SOBJECT_MODULE, DATABASEDOTCOM_CA_FILE, and/or
63
63
  # DATABASEDOTCOM_VERIFY_MODE are present, they override any other values provided
64
64
  def initialize(options = {})
65
65
  if options.is_a?(String)
@@ -83,7 +83,7 @@ module Databasedotcom
83
83
  self.client_secret = ENV['DATABASEDOTCOM_CLIENT_SECRET'] || @options[:client_secret]
84
84
  self.host = ENV['DATABASEDOTCOM_HOST'] || @options[:host] || "login.salesforce.com"
85
85
  end
86
-
86
+
87
87
  self.debugging = ENV['DATABASEDOTCOM_DEBUGGING'] || @options[:debugging]
88
88
  self.version = ENV['DATABASEDOTCOM_VERSION'] || @options[:version]
89
89
  self.version = self.version.to_s if self.version
@@ -91,7 +91,7 @@ module Databasedotcom
91
91
  self.ca_file = ENV['DATABASEDOTCOM_CA_FILE'] || @options[:ca_file]
92
92
  self.verify_mode = ENV['DATABASEDOTCOM_VERIFY_MODE'] || @options[:verify_mode]
93
93
  self.verify_mode = self.verify_mode.to_i if self.verify_mode
94
- end
94
+ end
95
95
 
96
96
  # Authenticate to the Force.com API. _options_ is a Hash, interpreted as follows:
97
97
  #
@@ -105,7 +105,7 @@ module Databasedotcom
105
105
  req = https_request(self.host)
106
106
  user = self.username || options[:username]
107
107
  pass = self.password || options[:password]
108
- path = "/services/oauth2/token?grant_type=password&client_id=#{self.client_id}&client_secret=#{client_secret}&username=#{user}&password=#{pass}"
108
+ path = encode_path_with_params('/services/oauth2/token', :grant_type => 'password', :client_id => self.client_id, :client_secret => self.client_secret, :username => user, :password => pass)
109
109
  log_request("https://#{self.host}/#{path}")
110
110
  result = req.post(path, "")
111
111
  log_response(result)
@@ -380,8 +380,8 @@ module Databasedotcom
380
380
  end
381
381
 
382
382
  def https_request(host=nil)
383
- Net::HTTP.new(host || URI.parse(self.instance_url).host, 443).tap do |http|
384
- http.use_ssl = true
383
+ Net::HTTP.new(host || URI.parse(self.instance_url).host, 443).tap do |http|
384
+ http.use_ssl = true
385
385
  http.ca_file = self.ca_file if self.ca_file
386
386
  http.verify_mode = self.verify_mode if self.verify_mode
387
387
  end
@@ -494,11 +494,16 @@ module Databasedotcom
494
494
  if attrs.is_a?(Hash)
495
495
  coerced_attrs = {}
496
496
  attrs.keys.each do |key|
497
- case clazz.field_type(key)
497
+ case clazz.field_type(key.to_s)
498
498
  when "multipicklist"
499
499
  coerced_attrs[key] = (attrs[key] || []).join(';')
500
500
  when "datetime"
501
- coerced_attrs[key] = attrs[key] ? attrs[key].strftime(RUBY_VERSION.match(/^1.8/) ? "%Y-%m-%dT%H:%M:%S.000%z" : "%Y-%m-%dT%H:%M:%S.%L%z") : nil
501
+ begin
502
+ attrs[key] = DateTime.parse(attrs[key]) if attrs[key].is_a?(String)
503
+ coerced_attrs[key] = attrs[key].strftime(RUBY_VERSION.match(/^1.8/) ? "%Y-%m-%dT%H:%M:%S.000%z" : "%Y-%m-%dT%H:%M:%S.%L%z")
504
+ rescue
505
+ nil
506
+ end
502
507
  when "date"
503
508
  if attrs[key]
504
509
  coerced_attrs[key] = attrs[key].respond_to?(:strftime) ? attrs[key].strftime("%Y-%m-%d") : attrs[key]
@@ -14,7 +14,13 @@ module Databasedotcom
14
14
  def initialize(attrs = {})
15
15
  super()
16
16
  self.class.description["fields"].each do |field|
17
- self.send("#{field["name"]}=", field["defaultValueFormula"])
17
+ if field['type'] =~ /(picklist|multipicklist)/ && picklist_option = field['picklistValues'].find { |p| p['defaultValue'] }
18
+ self.send("#{field["name"]}=", picklist_option["value"])
19
+ elsif field['type'] =~ /boolean/
20
+ self.send("#{field["name"]}=", field["defaultValue"])
21
+ else
22
+ self.send("#{field["name"]}=", field["defaultValueFormula"])
23
+ end
18
24
  end
19
25
  self.attributes=(attrs)
20
26
  end
@@ -22,7 +28,7 @@ module Databasedotcom
22
28
  # Returns a hash representing the state of this object
23
29
  def attributes
24
30
  self.class.attributes.inject({}) do |hash, attr|
25
- hash[attr] = self.send(attr.to_sym)
31
+ hash[attr] = self.send(attr.to_sym) if self.respond_to?(attr.to_sym)
26
32
  hash
27
33
  end
28
34
  end
@@ -314,6 +320,7 @@ module Databasedotcom
314
320
  when "boolean"
315
321
  params[attr] = value.is_a?(String) ? value.to_i != 0 : value
316
322
  when "currency", "percent", "double"
323
+ value = value.gsub(/[^-0-9.0-9]/, '').to_f if value.respond_to?(:gsub)
317
324
  params[attr] = value.to_f
318
325
  when "date"
319
326
  params[attr] = Date.parse(value) rescue Date.today
@@ -1,3 +1,3 @@
1
1
  module Databasedotcom
2
- VERSION = "1.3.0"
2
+ VERSION = "1.3.1"
3
3
  end
metadata CHANGED
@@ -1,106 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: databasedotcom
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.1
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 3
9
- - 0
10
- version: 1.3.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Glenn Gillen, Danny Burkes & Richard Zhao
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-17 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: multipart-post
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70124183107340 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 13
29
- segments:
30
- - 1
31
- - 1
32
- version: "1.1"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: json
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70124183107340
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &70124183106920 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
47
33
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
34
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70124183106920
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70124183106380 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
40
+ requirements:
55
41
  - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 15
58
- segments:
59
- - 2
60
- - 6
61
- version: "2.6"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.6'
62
44
  type: :development
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: webmock
66
45
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70124183106380
47
+ - !ruby/object:Gem::Dependency
48
+ name: webmock
49
+ requirement: &70124183105960 !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
76
55
  type: :development
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: rake
80
56
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70124183105960
58
+ - !ruby/object:Gem::Dependency
59
+ name: rake
60
+ requirement: &70124183105340 !ruby/object:Gem::Requirement
82
61
  none: false
83
- requirements:
84
- - - "="
85
- - !ruby/object:Gem::Version
86
- hash: 51
87
- segments:
88
- - 0
89
- - 8
90
- - 6
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
91
65
  version: 0.8.6
92
66
  type: :development
93
- version_requirements: *id005
67
+ prerelease: false
68
+ version_requirements: *70124183105340
94
69
  description: A ruby wrapper for the Force.com REST API
95
- email:
70
+ email:
96
71
  - me@glenngillen.com
97
72
  executables: []
98
-
99
73
  extensions: []
100
-
101
74
  extra_rdoc_files: []
102
-
103
- files:
75
+ files:
104
76
  - README.rdoc
105
77
  - MIT-LICENSE
106
78
  - lib/databasedotcom/chatter/comment.rb
@@ -129,38 +101,29 @@ files:
129
101
  - lib/databasedotcom/sobject.rb
130
102
  - lib/databasedotcom/version.rb
131
103
  - lib/databasedotcom.rb
132
- homepage: ""
104
+ homepage: ''
133
105
  licenses: []
134
-
135
106
  post_install_message:
136
107
  rdoc_options: []
137
-
138
- require_paths:
108
+ require_paths:
139
109
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
110
+ required_ruby_version: !ruby/object:Gem::Requirement
141
111
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
117
  none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
158
122
  requirements: []
159
-
160
123
  rubyforge_project: databasedotcom
161
- rubygems_version: 1.8.10
124
+ rubygems_version: 1.8.11
162
125
  signing_key:
163
126
  specification_version: 3
164
127
  summary: A ruby wrapper for the Force.com REST API
165
128
  test_files: []
166
-
129
+ has_rdoc: