rubyzoho 0.1.4 → 0.1.5

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
data/lib/zoho_api.rb CHANGED
@@ -21,7 +21,7 @@ module ZohoApi
21
21
  @@module_fields = {}
22
22
  @@users = []
23
23
 
24
- #debug_output $stderr
24
+ debug_output $stderr
25
25
 
26
26
  attr_reader :auth_token, :module_fields
27
27
 
@@ -36,6 +36,7 @@ module ZohoApi
36
36
  element = x.add_element module_name
37
37
  row = element.add_element 'row', { 'no' => '1'}
38
38
  fields_values_hash.each_pair { |k, v| add_field(row, ApiUtils.symbol_to_string(k), v) }
39
+ pp x.to_s
39
40
  r = self.class.post(create_url(module_name, 'insertRecords'),
40
41
  :query => { :newFormat => 1, :authtoken => @auth_token,
41
42
  :scope => 'crmapi', :xmlData => x },
@@ -47,12 +48,21 @@ module ZohoApi
47
48
 
48
49
  def add_field(row, field, value)
49
50
  r = (REXML::Element.new 'FL')
50
- r.attributes['val'] = field
51
+ adjust_tag_case(field)
52
+ r.attributes['val'] = adjust_tag_case(field)
51
53
  r.add_text(value.to_s)
52
54
  row.elements << r
53
55
  row
54
56
  end
55
57
 
58
+ def adjust_tag_case(tag)
59
+ return tag if tag == 'id'
60
+ return tag.upcase if tag.downcase.rindex('id')
61
+ u_tags = %w[SEMODULE RELATED\ TO]
62
+ return tag.upcase if u_tags.index(tag.upcase)
63
+ tag
64
+ end
65
+
56
66
  def attach_file(module_name, record_id, file_path)
57
67
  mime_type = (MIME::Types.type_for(file_path)[0] || MIME::Types["application/octet-stream"][0])
58
68
  url = URI.parse(create_url(module_name, 'uploadFile') + "?authtoken=#{@auth_token}&scope=crmapi&id=#{record_id}")
@@ -69,7 +79,6 @@ module ZohoApi
69
79
 
70
80
  def add_file(module_name, record_id, file_path)
71
81
  url = URI.parse(create_url(module_name, 'uploadFile'))
72
- r = nil
73
82
  mime_type = (MIME::Types.type_for(file_path)[0] || MIME::Types["application/octet-stream"][0])
74
83
  f = File.open(file_path)
75
84
  req = Net::HTTP::Post::Multipart.new url.path,
@@ -116,6 +125,10 @@ module ZohoApi
116
125
 
117
126
  def fields(module_name)
118
127
  return user_fields if module_name == 'Users'
128
+ fields_from_api(module_name) if fields_from_record(module_name).nil?
129
+ end
130
+
131
+ def fields_from_api(module_name)
119
132
  mod_name = ApiUtils.string_to_symbol(module_name)
120
133
  return @@module_fields[mod_name] unless @@module_fields[mod_name].nil?
121
134
  r = self.class.post(create_url(module_name, 'getFields'),
@@ -125,6 +138,15 @@ module ZohoApi
125
138
  update_module_fields(mod_name, module_name, r)
126
139
  end
127
140
 
141
+ def fields_from_record(module_name)
142
+ mod_name = ApiUtils.string_to_symbol(module_name)
143
+ return @@module_fields[mod_name] unless @@module_fields[mod_name].nil?
144
+ r = first(module_name)
145
+ return nil if r.nil?
146
+ @@module_fields[mod_name] = r.first.keys
147
+ @@module_fields[mod_name]
148
+ end
149
+
128
150
  def first(module_name)
129
151
  some(module_name, 1, 1)
130
152
  end
@@ -172,6 +194,7 @@ module ZohoApi
172
194
  end
173
195
 
174
196
  def valid_related?(module_name, field)
197
+ return nil if field.downcase == 'smownerid'
175
198
  valid_relationships = {
176
199
  'Leads' => %w(email),
177
200
  'Accounts' => %w(accountid accountname),
data/rubyzoho.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rubyzoho"
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["amalc"]
12
- s.date = "2013-02-19"
12
+ s.date = "2013-02-20"
13
13
  s.description = ""
14
14
  s.email = ""
15
15
  s.extra_rdoc_files = [
@@ -229,29 +229,37 @@ describe RubyZoho::Crm do
229
229
  r.each { |c| RubyZoho::Crm::Task.delete(c.activityid) }
230
230
  end
231
231
 
232
- it 'should save an event record' do
233
- pending
234
- #accounts = RubyZoho::Crm::Account.all
235
- #pp a = accounts.first
236
- #events = RubyZoho::Crm::Event.all
237
- #pp ev = events.first
238
- #RubyZoho::Crm::Event.update(
239
- # :id => ev.activityid,
240
- # :subject => "Hello Dolly #{Time.now}.to_s"
241
- #)
242
- pp e = RubyZoho::Crm::Event.new(
243
- :event_owner => 'Wayne Giles',
244
- :smownerid => '748054000000056023',
232
+ it 'should save an task record related to an account' do
233
+ #pending
234
+ pp a = RubyZoho::Crm::Account.all.first
235
+ u = RubyZoho::Crm::User.all.first
236
+ c = RubyZoho::Crm::Contact.all.last
237
+ e = RubyZoho::Crm::Task.new(
238
+ :task_owner => u.user_name,
239
+ :subject => "Task should be related to #{a.account_name}",
240
+ :description => 'Nothing',
241
+ :smownerid => u.id,
242
+ :status => 'Not Started',
243
+ :priority => 'High',
244
+ :send_notification_email => 'false',
245
+ :due_date => '2014-02-16 16:00:00',
245
246
  :start_datetime => '2013-02-16 16:00:00',
246
247
  :end_datetime => '2014-02-16 16:00:00',
247
- :subject => 'Test Event',
248
- :related_to => "Potential One",
249
- :relatedtoid => '748054000000123057',
250
- :semodule => "Potentials",
251
- :contact_name => "Wayne Smith",
252
- :contactid => "748054000000097043"
248
+ :related_to => a.account_name,
249
+ :relatedtoid => a.accountid,
250
+ :semodule => 'Accounts',
251
+ :contact_name => "#{c.first_name} #{c.last_name}",
252
+ :contactid => c.contactid
253
253
  )
254
- e.save
254
+ pp e
255
+ pp e.save
256
+ end
257
+
258
+ it 'should get tasks by user' do
259
+ #pp u = RubyZoho::Crm::User.all.first
260
+ #pp tasks = RubyZoho::Crm::Task.find_by_smownerid(u.id)
261
+ pp tasks = RubyZoho::Crm::Task.all
262
+ tasks.map { |t| RubyZoho::Crm::Task.delete(t.activityid)} unless tasks.nil?
255
263
  end
256
264
 
257
265
  it 'should sort contact records' do
@@ -225,6 +225,10 @@ describe ZohoApi do
225
225
  r.map { |t| @zoho.delete_record('Tasks', t[:activityid]) }
226
226
  end
227
227
 
228
+ it 'should update fields from a record' do
229
+ @zoho.module_fields.count.should be >= 7
230
+ end
231
+
228
232
  it 'should update a contact' do
229
233
  @zoho.add_record('Contacts', @h_smith)
230
234
  contact = @zoho.find_records('Contacts', :email, '=', @h_smith[:email])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzoho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-19 00:00:00.000000000 Z
12
+ date: 2013-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httmultiparty